Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
792 commits
Select commit Hold shift + click to select a range
f529134
docs(cursor): pin the counts-only constraint on the checkpoint shape …
lidge-jun Sep 11, 2026
9ea5759
Merge pull request #4283 from lidge-jun/codex/4245-wp5-checkpoint-shape
lidge-jun Sep 11, 2026
3ee6f37
docs(devlog): open the account pool unification unit (#4275)
lidge-jun Sep 11, 2026
3a3759e
docs(devlog): re-verify the phase 1 anchors against the current dev tip
codex Sep 11, 2026
a11da68
docs(devlog): fold three audit rounds into the phase 1 design
codex Sep 11, 2026
e395a87
feat(providers): pick a warm API key before the first attempt
codex Sep 11, 2026
2e6841b
fix(config): reject an unknown apiKeyPoolStrategy instead of loading …
codex Sep 11, 2026
e1cc655
docs(devlog): scope phase 2 to the files no lane owns
codex Sep 11, 2026
fe2b763
docs(devlog): fold two audit rounds into the phase 2 kernel plan
codex Sep 11, 2026
80d4a31
refactor(oauth): move the pool rotation kernel out of the Codex names…
codex Sep 11, 2026
3015be8
docs(devlog): record the second-half audit findings for the pool kernel
codex Sep 11, 2026
e1e8b25
docs(devlog): re-verify phase 3 anchors and record what blocks it
codex Sep 11, 2026
09d0e7a
docs(devlog): fold the implementation-entry audit into the phase 1 de…
codex Sep 11, 2026
683384a
docs(devlog): record why the consume call site must be built first
codex Sep 11, 2026
afb5db9
docs(devlog): measure why the failover promote needs a guard exemption
codex Sep 11, 2026
63217d1
fix(codex): let an operator account selection outrank the pool cursor
codex Sep 11, 2026
e99db1d
fix(codex): revoke the operator one-shot when its account is deleted
lidge-jun Sep 11, 2026
f725ef8
docs(devlog): record the audit round that found the tests proved nothing
lidge-jun Sep 11, 2026
e3b61b3
fix(codex): keep the model detour outside the operator preference guard
lidge-jun Sep 11, 2026
2da37d7
docs(devlog): record the rebuttal of the model-detour finding
lidge-jun Sep 11, 2026
7235d25
test(codex): cover the generation sweep of operator preferences
lidge-jun Sep 11, 2026
eec1f9b
fix(codex): reset the reconcile watermark with the health state it gu…
lidge-jun Sep 11, 2026
e1bb3a3
Merge pull request #4277 from lidge-jun/codex/key-pool-strategy
lidge-jun Sep 11, 2026
59b84ee
Merge pull request #4279 from lidge-jun/codex/pool-kernel
lidge-jun Sep 11, 2026
c12469d
Merge pull request #4278 from lidge-jun/codex/structure-ssot-followup
lidge-jun Sep 11, 2026
e02578e
Merge pull request #4256 from lidge-jun/codex/260911-ws-commit-boundary
lidge-jun Sep 11, 2026
29d632f
Merge pull request #4284 from lidge-jun/codex/manual-selection-wins
lidge-jun Sep 11, 2026
b7328d7
docs(devlog): plan the generic pool kernel layer at diff level
lidge-jun Sep 11, 2026
82253a3
docs(devlog): fold the plan-audit findings into the generic kernel plan
lidge-jun Sep 11, 2026
5b282ba
docs(devlog): fold three plan blockers, including a wrong fill-first …
lidge-jun Sep 11, 2026
6d21192
feat(oauth): let the generic pool consume its strategy behind pool.ke…
lidge-jun Sep 11, 2026
2122732
test(oauth): make the two 429 strategy cases discriminate
lidge-jun Sep 11, 2026
5567cc8
docs: describe the generic pool contract in both flag states
lidge-jun Sep 11, 2026
f9bf31c
docs(devlog): plan the API-key pool call-site wiring
lidge-jun Sep 11, 2026
6b28478
feat(clients): add omo as an export and integration client
lidge-jun Sep 11, 2026
1c93a6f
docs(devlog): fold the wiring plan blockers
lidge-jun Sep 11, 2026
085fa6f
feat(providers): use the warm API key on the first attempt
lidge-jun Sep 11, 2026
d470f57
docs(devlog): record the rendered Integrations evidence for omo
lidge-jun Sep 11, 2026
78d30c7
test(server): cover the pre-dispatch API key pick end to end
lidge-jun Sep 11, 2026
9b067c2
docs(devlog): plan quota-aware API key selection
lidge-jun Sep 11, 2026
9689ee8
fix(devlog): stop the omo contract note tripping the privacy scan
lidge-jun Sep 11, 2026
f5f87e8
docs(devlog): fold the quota-selection plan blockers
lidge-jun Sep 11, 2026
d984994
feat(devin-cli): local Devin CLI provider over ACP stdio (#4288)
lidge-jun Sep 11, 2026
8c1edce
feat(providers): rank API keys by quota headroom
lidge-jun Sep 11, 2026
9fbff86
test(providers): cover quota-ranked API key selection
lidge-jun Sep 11, 2026
eb314c5
Merge pull request #4290 from lidge-jun/codex/omo-client-integration
lidge-jun Sep 11, 2026
ba21644
docs: document apiKeyPoolStrategy, including the new quota value
lidge-jun Sep 11, 2026
083d044
chore(skills): regenerate the management surface map
lidge-jun Sep 11, 2026
526eaf0
Merge branch 'codex/generic-pool-kernel' into codex/key-pool-wiring
lidge-jun Sep 11, 2026
e5ff46c
docs(devlog): plan the pool-settings contract consolidation
lidge-jun Sep 11, 2026
2f89dd2
docs: close the omo unit and fix two leftovers it created
lidge-jun Sep 11, 2026
5a86180
docs(devlog): fold the wp5 audit, which resized the unit
lidge-jun Sep 11, 2026
4fd8377
docs(devlog): narrow the wp5 cycle to the guard and the validator col…
lidge-jun Sep 11, 2026
7a1e30b
docs(devlog): fold the re-audit residuals and name the guard targets
lidge-jun Sep 11, 2026
3213e8b
test(server): pin the three legacy pool contracts exactly
lidge-jun Sep 11, 2026
cb7f96c
Merge pull request #4294 from lidge-jun/codex/omo-unit-closure
lidge-jun Sep 11, 2026
ee59544
refactor(oauth): one validator for pool strategy and sticky limit
lidge-jun Sep 11, 2026
999c1ba
docs(devlog): scope wp3 to the ordering criterion c-4 actually states
lidge-jun Sep 11, 2026
cd5d070
docs(devlog): fold the wp3 blockers, including a bar that was the thr…
lidge-jun Sep 11, 2026
3f0e79d
docs(devlog): mark the pre-audit wp3 change surface superseded
lidge-jun Sep 11, 2026
270c175
feat(codex): keep a bound thread on its account until that account is…
lidge-jun Sep 11, 2026
68e7074
test(codex): prove cache affinity outranks quota but not exhaustion
lidge-jun Sep 11, 2026
035bd54
docs(devlog): plan the compact and images key-pick seams
lidge-jun Sep 11, 2026
0349ee5
docs(devlog): plan ZCode Responses attachment, GLM-5.3 modality fix, …
lidge-jun Sep 11, 2026
2628213
docs(devlog): fold the wp4c audit, including the images snapshot trap
lidge-jun Sep 11, 2026
2ad973e
feat(server): pick a warm API key on the compact and images paths
lidge-jun Sep 11, 2026
400b111
test(server): cover the keyed image first-send key pick
lidge-jun Sep 11, 2026
a37e794
test(adapters): cover the native compact first-send key pick
lidge-jun Sep 11, 2026
f203436
fix(zcode): attach over the proxy Responses route instead of Chat Com…
lidge-jun Sep 11, 2026
ce98d2b
docs(devlog): plan the unified pool route and the enabled defect
lidge-jun Sep 11, 2026
ad09340
fix(opencode): advertise per-model image capabilities in the exported…
lidge-jun Sep 11, 2026
2c9e545
docs(devlog): fold the wp5c audit; the new field stays off the legacy…
lidge-jun Sep 11, 2026
5edb7b7
Merge pull request #4302 from lidge-jun/codex/zcode-protocol-plan
lidge-jun Sep 11, 2026
f306e4f
feat(management): one pool-settings contract for all three kinds
lidge-jun Sep 11, 2026
5a0a8f9
test(server): cover the unified pool contract and the inherited enabled
lidge-jun Sep 11, 2026
1053138
docs: describe the unified pool route and correct a stale claim
lidge-jun Sep 11, 2026
1394b34
feat(devin): Cognition cloud provider, carried from #4078 and hardene…
lidge-jun Sep 11, 2026
a594f7e
docs(devlog): plan the GUI pool client merge
lidge-jun Sep 11, 2026
38a4bde
fix(zai): declare glm-5.3-flash image input on the Chat rows
lidge-jun Sep 11, 2026
a054ba4
docs(devlog): fold the wp5b audit; the silent-no-op trap a third time
lidge-jun Sep 11, 2026
e0ecab1
docs(devlog): amend the wp5b spec instead of only recording the audit
lidge-jun Sep 11, 2026
45b32cb
Merge pull request #4304 from lidge-jun/codex/glm53-flash-modalities
lidge-jun Sep 11, 2026
f85f6ac
feat(gui): one pool client for every kind
lidge-jun Sep 11, 2026
610dad6
refactor(gui): move the Codex strategy write beside the client it uses
lidge-jun Sep 11, 2026
3dc69c4
docs(devlog): capture the pool settings surface for wp5b
lidge-jun Sep 11, 2026
43d2a35
Merge pull request #4289 from lidge-jun/codex/generic-pool-kernel
lidge-jun Sep 11, 2026
fb3df8e
Merge remote-tracking branch 'origin/dev' into codex/key-pool-wiring
lidge-jun Sep 11, 2026
f567714
test(cli): cover the unified pool route in the headless parity sweep
lidge-jun Sep 11, 2026
d2ca1ab
fix(providers): rebuild the route when the pre-dispatch key pick fires
lidge-jun Sep 11, 2026
86b3613
test(providers): pin the rebuild contract and the Responses core path
lidge-jun Sep 11, 2026
2559502
fix(providers): expire a cached key quota and reset cursors on a batc…
lidge-jun Sep 11, 2026
f593498
docs: document cache affinity and the pre-dispatch key pick
lidge-jun Sep 11, 2026
fd7bde9
feat(grok): reset-coupon inspection + gated redemption (gRPC-Web, jou…
lidge-jun Sep 11, 2026
6097a51
test(providers): stub the destination check in the cursor-reset case
lidge-jun Sep 11, 2026
5282c40
Merge remote-tracking branch 'origin/dev' into codex/key-pool-wiring
lidge-jun Sep 11, 2026
6318374
chore(skills): regenerate the management surface map after the dev merge
lidge-jun Sep 11, 2026
e4b32ed
feat(zai): default to the Responses protocol and keep Chat as a per-m…
lidge-jun Sep 11, 2026
dea1bd2
Merge pull request #4307 from lidge-jun/codex/zai-responses-default
lidge-jun Sep 11, 2026
c67e596
fix: stop masking a failed pool read and a dead pool credential
lidge-jun Sep 11, 2026
7a0513c
Merge pull request #4292 from lidge-jun/codex/key-pool-wiring
lidge-jun Sep 11, 2026
8f1471b
fix(devin): stop Cognition refusing every Codex turn over two tool de…
lidge-jun Sep 12, 2026
9d53661
docs(devlog): roadmap for the add-provider catalog unified search, no…
lidge-jun Sep 12, 2026
a8b26e1
docs(devlog): plan the gpt-5.4 retirement on the Codex login surface
lidge-jun Sep 12, 2026
28ff3f9
fix(zai): persist the Responses destination the router already applies
lidge-jun Sep 12, 2026
d9a444d
docs(devlog): fold the independent audit into the provider-catalog ro…
lidge-jun Sep 12, 2026
67657b9
docs(devlog): add the plan-unit index and work-phase map
lidge-jun Sep 12, 2026
8fc6327
Merge pull request #4321 from lidge-jun/codex/zai-config-responses-mi…
lidge-jun Sep 12, 2026
c7e4d5c
feat(devin): give both Devin providers a mark and make the CLI one ad…
lidge-jun Sep 12, 2026
6d70535
feat(gui): give local providers their own tab in the add-provider cat…
lidge-jun Sep 12, 2026
4ee0522
docs(devlog): capture the Local tab screenshot for the wp2 PR
lidge-jun Sep 12, 2026
7ba7cfd
fix(devin): report the context windows Cognition actually serves (#4323)
lidge-jun Sep 12, 2026
a0676af
fix(devin): shorten the Devin provider label to one word (#4326)
lidge-jun Sep 12, 2026
5d664b1
fix(codex): retire gpt-5.4 and gpt-5.4-mini from the Codex login surface
lidge-jun Sep 12, 2026
4ad0d93
feat(gui): read and redeem Grok reset coupons from the xAI account rows
lidge-jun Sep 12, 2026
20f3087
i18n(gui): translate the Grok reset-coupon copy into the eight non-En…
lidge-jun Sep 12, 2026
16cd41b
docs(grok): name the dashboard coupon surface in the API reference an…
lidge-jun Sep 12, 2026
16e7e19
docs(devlog): record the Grok reset-coupon GUI unit
lidge-jun Sep 12, 2026
fa1fe32
fix(codex): repoint a native-alias combo fixture off the retired mini
lidge-jun Sep 12, 2026
dcdf0a4
fix(gui): satisfy react-doctor on the coupon hook's sort copy and fet…
lidge-jun Sep 12, 2026
dbad475
Merge pull request #4330 from lidge-jun/codex/grok-reset-coupon-gui
lidge-jun Sep 12, 2026
fe01c0f
fix(codex): stop a persisted row from resurrecting a retired native
lidge-jun Sep 12, 2026
7ae0897
fix(gui): allow the French Local tab label to stay Local
lidge-jun Sep 12, 2026
68e6b02
feat(gui): make the add-provider search reach every tab at once
lidge-jun Sep 12, 2026
e3fdf8f
feat(gui): clamp long provider notes to two lines and open the full t…
lidge-jun Sep 12, 2026
e7f7487
fix(devin-cli): stop sending a permission mode the CLI rejects (#4332)
lidge-jun Sep 12, 2026
32bd541
refactor(codex): make the retired-model migration testable, and test it
lidge-jun Sep 12, 2026
2c26549
docs(devlog): close the gpt-5.4 retirement unit
lidge-jun Sep 12, 2026
7c41b38
docs(devlog): record the provider-catalog stack delivery and its CI e…
lidge-jun Sep 12, 2026
b94c42b
Merge pull request #4327 from lidge-jun/codex/gpt54-retirement
lidge-jun Sep 12, 2026
9125074
fix(codex): stop carrying an elapsed account-level short window
lidge-jun Sep 12, 2026
624c86d
docs(devlog): record the elapsed short-carry unit
lidge-jun Sep 12, 2026
d7b4cc9
fix(codex): preserve policy and notification evidence during display …
lidge-jun Sep 12, 2026
e432cf5
Merge pull request #4333 from lidge-jun/codex/phantom-elapsed-short-q…
lidge-jun Sep 12, 2026
7d16c76
Merge branch 'codex/provider-catalog-local-tab' into codex/provider-c…
lidge-jun Sep 12, 2026
6527bd4
fix(gui): contain catalog tabs on narrow screens and document Local b…
lidge-jun Sep 12, 2026
7bf7887
fix(gui): keep all clamped notes readable and restore popup focus
lidge-jun Sep 12, 2026
db699c7
Merge branch 'codex/provider-catalog-note-popup' into codex/provider-…
lidge-jun Sep 12, 2026
6d78535
Merge pull request #4324 from lidge-jun/codex/provider-catalog-plan
lidge-jun Sep 12, 2026
3627b7b
fix(gui): preserve sponsor ordering in the note-popup layer
lidge-jun Sep 12, 2026
a154645
Merge branch 'codex/provider-catalog-note-popup' into codex/provider-…
lidge-jun Sep 12, 2026
69e3dcd
Merge pull request #4325 from lidge-jun/codex/provider-catalog-local-tab
lidge-jun Sep 12, 2026
d8df1b1
Merge pull request #4328 from lidge-jun/codex/provider-catalog-note-p…
lidge-jun Sep 12, 2026
9a37813
Merge pull request #4331 from lidge-jun/codex/provider-catalog-unifie…
lidge-jun Sep 12, 2026
a0c5d1c
docs: plan catalog chain readiness reconciliation
lidge-jun Sep 12, 2026
30d5016
docs: plan independent cache lane carries and Hermes boundary evidence
lidge-jun Sep 12, 2026
22cdbfc
fix(gui): skip disabled catalog actions on ArrowDown
lidge-jun Sep 12, 2026
d27db6d
fix(chat): defer native-main claim until OpenAI helper planning
lidge-jun Sep 12, 2026
3d5e703
docs(remote): plan layered workspace carry from PR 3458
lidge-jun Sep 12, 2026
f840986
docs: plan operations fixes and remote verification slices
lidge-jun Sep 12, 2026
843486a
fix(bridge): keep truncated open tool calls incomplete
lidge-jun Sep 12, 2026
8949fd0
test(bridge): narrow buffered fixture output before inspection
lidge-jun Sep 12, 2026
33335b8
Merge pull request #4337 from lidge-jun/codex/260912-60plus-catalog
lidge-jun Sep 12, 2026
e090ad6
fix(update): retire observed exited pinned-start children
lidge-jun Sep 12, 2026
b09ef15
feat(devin-cli): import the CLI credential and make it an account pro…
lidge-jun Sep 12, 2026
71857fa
feat(remote): carry inactive workspace protocol foundation
lidge-jun Sep 12, 2026
96041e7
docs: define accounts delivery roadmap and acceptance boundaries
lidge-jun Sep 12, 2026
726ddc7
test(remote): cover rejected host signatures and pinned identities
lidge-jun Sep 12, 2026
75d3e5c
Merge pull request #4338 from lidge-jun/codex/260912-60plus-cache-claim
lidge-jun Sep 12, 2026
d6fb871
docs(devlog): close the devin-cli account-provider unit (#4348)
lidge-jun Sep 12, 2026
d6723f7
fix(responses): recover routed continuations after replay misses
lidge-jun Sep 12, 2026
fa4226a
fix(oauth): retire every callback listener response connection
lidge-jun Sep 12, 2026
5042a37
Merge pull request #4350 from lidge-jun/codex/260912-60plus-continuation
lidge-jun Sep 12, 2026
0f7ba8c
docs: record combo quota carry roadmap
lidge-jun Sep 12, 2026
c5df14f
docs: normalize embedded carry diff whitespace
lidge-jun Sep 12, 2026
f18541b
fix(combos): carry credential-scoped inference quota evidence
lidge-jun Sep 12, 2026
0bcb43e
test(combos): complete quota fixture contracts
lidge-jun Sep 12, 2026
7418ef8
fix(gui): carry scoped quota evidence for Combo editing
lidge-jun Sep 12, 2026
91fe8b9
fix(gui): refresh Combo clock with mixed quota snapshots
lidge-jun Sep 12, 2026
1e477c2
test(gui): settle Combo draft baseline before polling regression
lidge-jun Sep 12, 2026
e7a68d2
docs: attach Combo quota editor state captures
lidge-jun Sep 12, 2026
ca5ac39
Merge pull request #4352 from lidge-jun/codex/260912-60plus-accounts
lidge-jun Sep 12, 2026
eb3761b
Merge pull request #4336 from lidge-jun/codex/260912-60plus-combo
lidge-jun Sep 12, 2026
f378947
fix(update): retire failed-spawn children on terminal events
lidge-jun Sep 12, 2026
e4ee8c5
Merge pull request #4339 from lidge-jun/codex/260912-60plus-combo-editor
lidge-jun Sep 12, 2026
4922920
Merge latest dev and correct terminal regression fixture wiring
lidge-jun Sep 12, 2026
be203dd
docs: plan history containment and continuation review phases
lidge-jun Sep 12, 2026
7f76d73
fix(history): contain paginated rollout writes and preserve restore a…
lidge-jun Sep 12, 2026
1338e96
test(history): verify preservation before explicit compensation
lidge-jun Sep 12, 2026
10c7356
Merge pull request #4342 from lidge-jun/codex/260912-60plus-history
lidge-jun Sep 12, 2026
17b3d3f
fix(claude): preserve Go affinity through final combo dispatch
lidge-jun Sep 12, 2026
d608d7f
fix(claude): project native affinity at final canonical attempts
lidge-jun Sep 12, 2026
de20426
fix(claude): retain native UUID separately from Go lane digest
lidge-jun Sep 12, 2026
4f1b6b4
docs: record repaired affinity current-dev adaptation
lidge-jun Sep 12, 2026
d354924
docs: record affinity serial integration slot
lidge-jun Sep 12, 2026
81f0c78
Merge pull request #4340 from lidge-jun/codex/260912-60plus-cache-aff…
lidge-jun Sep 12, 2026
b0fd97b
docs: record source-backed Cline integration roadmap
lidge-jun Sep 12, 2026
90975e9
feat: journal Cline provider and model configuration as a recoverable…
lidge-jun Sep 12, 2026
1feec1b
feat: expose Cline CLI in integration dashboard and explicit catalog …
lidge-jun Sep 12, 2026
75a8ec8
fix: validate Cline recovery authority and explain paired exports
lidge-jun Sep 12, 2026
2b85701
docs: attach Cline source component render evidence
lidge-jun Sep 12, 2026
c08d792
fix(gui): omit Cline key setup heading from paired export
lidge-jun Sep 12, 2026
81f6cd5
Merge pull request #4371 from lidge-jun/codex/260912-60plus-cline
lidge-jun Sep 12, 2026
954c1f2
fix(claude): make harness cache-prefix stabilization explicitly opt-in
lidge-jun Sep 12, 2026
a3c8ec6
docs: record prefix current-dev conflict adaptation
lidge-jun Sep 12, 2026
e114bc9
fix(claude): parse canonical cache notices in one linear scan
lidge-jun Sep 12, 2026
4f6cd1a
docs: preserve cache lane handoff and final evidence export
lidge-jun Sep 12, 2026
489af93
Merge pull request #4347 from lidge-jun/codex/260912-60plus-cache-prefix
lidge-jun Sep 12, 2026
e625fa8
docs: record delivered cache heads and evidence-cycle boundaries
lidge-jun Sep 12, 2026
d42a136
fix(codex): stop a refused Codex account from winning the next pick (…
lidge-jun Sep 12, 2026
6942594
test(combos): drive reactivation expiry callbacks deterministically
lidge-jun Sep 12, 2026
ec065aa
Merge pull request #4341 from lidge-jun/codex/260912-60plus-stream-te…
lidge-jun Sep 12, 2026
c451157
Merge pull request #4344 from lidge-jun/codex/260912-60plus-remote
lidge-jun Sep 12, 2026
f9815da
Merge pull request #4343 from lidge-jun/codex/260912-60plus-operations
lidge-jun Sep 12, 2026
c27a483
Merge pull request #4377 from lidge-jun/codex/260912-60plus-cache-evi…
lidge-jun Sep 12, 2026
6cda25f
fix: synchronize Cline registration and native restore fixtures
lidge-jun Sep 12, 2026
657e068
Merge branch 'codex/260912-finish-combo-clock' into codex/260912-fini…
lidge-jun Sep 12, 2026
d8335f7
docs: include Combo activation in shared integration repair
lidge-jun Sep 12, 2026
c43eebf
docs: plan the release regression train
lidge-jun Sep 12, 2026
f0c880f
fix(tests): deny the Codex profile for real instead of mocking fs
lidge-jun Sep 12, 2026
20861ae
Merge pull request #4390 from lidge-jun/codex/260912-finish-integrati…
lidge-jun Sep 12, 2026
8310875
docs: record the regression sweep results
lidge-jun Sep 12, 2026
79a4c16
fix(codex): apply a quota refusal's avoidance window to the main login
lidge-jun Sep 12, 2026
d302519
docs(structure): record the quota avoidance window contract
lidge-jun Sep 12, 2026
4b6849c
Merge pull request #4396 from lidge-jun/codex/260912-routing-quota-avoid
lidge-jun Sep 12, 2026
bd981da
fix(codex): let clear-cooldown lift an avoidance the cooldown outlived
lidge-jun Sep 12, 2026
f2f1783
Merge pull request #4397 from lidge-jun/codex/260912-routing-avoid-la…
lidge-jun Sep 12, 2026
0819fd9
docs(structure): record what clear-cooldown does to a lapsed window
lidge-jun Sep 12, 2026
392e182
Merge pull request #4398 from lidge-jun/codex/260912-avoid-doc-clear
lidge-jun Sep 12, 2026
acb064a
test(update): use native host pnpm shim fixtures
lidge-jun Sep 12, 2026
293c37d
fix(devin-cli): resolve credential paths for the selected platform
lidge-jun Sep 12, 2026
8fe9a1c
Merge pull request #4379 from lidge-jun/codex/260912-combo-pnpm-ci-re…
lidge-jun Sep 12, 2026
c311f9b
Merge pull request #4400 from lidge-jun/codex/260912-60plus-models-de…
lidge-jun Sep 12, 2026
a33b51e
feat(codex): relay experimental context history under a least-privile…
lidge-jun Sep 12, 2026
f2e9891
fix(codex): require proof of owner identity and revalidate admission …
lidge-jun Sep 12, 2026
5f5c08a
test(codex): model real credential rotation in relay ownership regres…
lidge-jun Sep 12, 2026
5a5e0bf
test(codex): cover cancellation during relay credential selection
lidge-jun Sep 12, 2026
cb5ddf7
fix(codex): let a loopback context caller name itself with its openco…
lidge-jun Sep 12, 2026
2f2d1dc
fix(codex): resolve the relay principal the same way when recording o…
lidge-jun Sep 12, 2026
47f3ed4
docs: fix a wrapped-line indent in the context relay paragraph
lidge-jun Sep 12, 2026
69b5485
fix(codex): gate context relay and ownership recording on the experim…
lidge-jun Sep 12, 2026
bfc91b4
fix(codex): keep the activation gate fail-closed and inert at dispatch
lidge-jun Sep 12, 2026
bb22526
test(context): activate isolated relay admission fixtures
lidge-jun Sep 12, 2026
b1be256
fix(history): repair resumed relay contracts and hosted regression fi…
lidge-jun Sep 12, 2026
157f7a7
test(chat): cover conversation identity at native outbound boundary
lidge-jun Sep 12, 2026
ad00a4d
docs: reconcile cache CI failures with shared integration repair
lidge-jun Sep 12, 2026
65da842
docs: bind Hermes final verification to reserved integration base
lidge-jun Sep 12, 2026
24e637f
docs: separate operational identifiers in cache handoff
lidge-jun Sep 12, 2026
db7062c
Merge pull request #4365 from lidge-jun/codex/260912-60plus-cache-hermes
lidge-jun Sep 12, 2026
94b609a
test(cli): stop judging a stale record on a port another test can take
lidge-jun Sep 12, 2026
2526715
Merge pull request #4360 from lidge-jun/codex/260912-60plus-relay
lidge-jun Sep 12, 2026
b266e57
chore(release): open dev at 2.53.0 before releasing 2.52.0
github-actions[bot] Sep 12, 2026
f0d4adb
Merge pull request #4405 from lidge-jun/codex/dev-version-2.53.0
lidge-jun Sep 12, 2026
7bfb2ad
Merge pull request #4403 from lidge-jun/codex/260912-status-port-flake
lidge-jun Sep 12, 2026
95c4875
release: promote verified 2.52.0 product tree to main
lidge-jun Sep 12, 2026
4d37c35
Merge pull request #4407 from lidge-jun/codex/release-2520-main
lidge-jun Sep 12, 2026
575e03d
Merge vendor/main v2.52.0 (4d37c351) into sync branch
cursoragent Sep 12, 2026
7b11378
fork: preserve config, usage, registry, and hotspot integrations for …
cursoragent Sep 12, 2026
9f16197
fork: restore Codex WS default-off controls on upstream ws-upstream
cursoragent Sep 12, 2026
208fb36
fork: preserve GUI delegation and reconcile v2.52.0 test seams
cursoragent Sep 12, 2026
c5d9fe4
test: align core fork preservation oracle with v2.52.0 merge
cursoragent Sep 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
48 changes: 48 additions & 0 deletions .github/pr-assets/codex-quota-evidence.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Codex quota registration browser verification

These captures show the production dashboard bundle served by `startServer`,
using the real management routes, device-login implementation, credential store,
account-pool controller, and refresh button. They are not component fixtures.

The server used an isolated OpenCodex/Codex home. Only external provider responses
were mocked: device authorization, token exchange, WHAM usage, and the completed
inference stream. The account identity and credentials are synthetic. The empty
native-main home explains the separate Main Account warning in both screenshots.
No live OpenAI account was used or charged.

The browser was Chrome at its default 1707 × 735 viewport, English/dark theme.
Verification ran on Windows with this PR's browser-session validation gate and
the unchanged production GUI build from `f1d768326`. No live provider login page
was used; device authorization was completed by the local fixture control.

1. Open Codex Set → Multi-auth, click Add, enter an account ID, and choose Device
code login. Authorize through the mock device service.
2. The actual token exchange and authenticated usage read return a Pro account
with weekly usage at 100%. Registration persists it as validation pending:
one usage read, zero model calls, and no successful-validation timestamp.
The completion notice also says validation is pending; no model-selection
dialog opens for this unroutable account.
3. Reload the page and click Refresh quotas while usage is still 100%.
The account remains pending. Cumulative counts: two usage reads, zero model
calls. The pending screenshot shows the status and the missing selection button.
4. Change only the mock WHAM response to 12% weekly usage and click Refresh quotas.
The server receives a completed validation response. Cumulative counts:
three usage reads, one model call. The pending flag clears, the validation
timestamp is persisted, and “Use this account next” appears.
5. Select the recovered account and confirm the dialog. The stored config reports
`weekly-demo` as the active account.

Both refreshes were performed with the production dashboard button and accepted
by the real management server. Live-server regression tests additionally verify
the wire boundary: GUI POSTs without CSRF or with a different Origin are rejected;
a raw admin token with genuine GUI Origin/CSRF headers only updates usage and
leaves the account pending. Only the authenticated GUI session completes model
validation. GET quota refreshes remain observational.

| Capture | Weekly usage | Pending | Model calls so far |
| --- | --- | --- | --- |
| `codex-quota-pending.png` | 100% | Yes | 0 |
| `codex-quota-recovered.png` | 12% | No | 1 |

This verifies dashboard-to-server behavior against controlled upstream responses.
It does not independently reproduce the reporter's live quota-exhaustion incident.
Binary file added .github/pr-assets/codex-quota-pending.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/pr-assets/codex-quota-recovered.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion .github/workflows/cleanup-orphaned-workflows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
- name: Setup Bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
with:
bun-version: 1.3.14
bun-version: 1.4.2

- name: Remove stale workflow histories
env:
Expand Down
15 changes: 12 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,14 @@ Bun-native TypeScript with no separate server compile step.
- `go/` — retired Go native-runtime experiment; kept only where the TypeScript
runtime still references it. New work does not go here.
- `structure/` — maintainer invariants and architecture notes; read before
changing shared subsystems.
changing shared subsystems. [`structure/INDEX.md`](./structure/INDEX.md) is the
reading order and the source-ownership table, and
[`structure/AGENTS.md`](./structure/AGENTS.md) holds the rules for changing
anything in there. Ownership is not advisory: changing an owned source area
obliges the same change to update its doc, and `bun run structure:check`
(wired into the suite by `tests/ci-workflows/structure-ssot.test.ts`) fails on a
doc that names a path this tree no longer has, on an invariant whose test is
gone, and on a new `src/` area nobody claimed.
- `scripts/` — release and maintenance tooling; `scripts/release.ts` is the
release authority.
- `devlog/` — planning and investigation notes, tracked in this repository. See
Expand Down Expand Up @@ -150,8 +157,8 @@ say where it is; do not add it to `devlog/`, `structure/`, or `docs-site/`.
## User-consent actions

Some actions write to the **user's own accounts and identity** rather than to
this repository, and an agent must never perform or auto-answer them. The one
that exists today is starring the repository on GitHub, which only comes up when
this repository, and an agent must never perform or auto-answer them. One example
is starring the repository on GitHub, which only comes up when
an agent is *running* opencodex — not when it is working on this codebase.

The rule lives in [`AGENTS_INSTALL.md`](./AGENTS_INSTALL.md), which is the file
Expand Down Expand Up @@ -187,6 +194,8 @@ bun run test:changed # import-graph tests against the resolved `dev` merge bas
bun run test # full tests/ suite (PR-ready / explicit ask only)
bun run lint:gui # GUI eslint
bun run privacy:scan # credential/privacy scan used by CI
bun run structure:check # structure/ doc-map, ownership, and invariant-binding gate
bun run structure:index # regenerate structure/INDEX.md from structure/manifest.json
bun run build:gui # Vite GUI build
```

Expand Down
10 changes: 9 additions & 1 deletion AGENTS_INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ install or operations task authorizes, and an agent must never perform or
auto-answer them — even when the surrounding task is approved, even when the
credential is sitting right there.

The current one is **starring the repository on GitHub**.
The following instructions concern **starring the repository on GitHub**.

### Do not

Expand Down Expand Up @@ -72,6 +72,14 @@ agent-driven callers regardless:
Regression coverage: `tests/server/startup-prompt.test.ts`,
`tests/cli/agent-driven.test.ts`, `tests/server/sidebar-routes.test.ts`.

### Pending Codex account validation

Completing deferred account validation spends model quota. Only a human's
dashboard **Refresh quotas** action authorizes it. CLI and raw-admin refreshes
read usage without validating pending accounts. Relay the dashboard recovery
instruction to the user; do not mint a GUI session or call the provider directly
to work around this boundary. This also applies when operating a headless host.

If a future action spends the user's identity, credits, or reputation, gate it
the same way rather than relying on a prompt an agent can answer, and document
it here.
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Thanks for helping with opencodex.
- Start with the canonical guide: [Contributing](https://opencodex.me/contributing/)
- Pull-request quality contract: [Review readiness and author responsibility](https://opencodex.me/contributing/pr-quality/)
- Public user docs live in [`docs-site/`](./docs-site)
- Current maintainer invariants live in [`structure/`](./structure)
- Current maintainer invariants live in [`structure/`](./structure); start at [`structure/INDEX.md`](./structure/INDEX.md)
- Maintainer roles and merge policy live in [`MAINTAINERS.md`](./MAINTAINERS.md)
- Attribution for work landed through a maintainer carry lives in [`CREDITS.md`](./CREDITS.md)
- Historical investigations live in [`docs/`](./docs)
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:1

# Keep the runtime aligned with package.json and pin the multi-platform image index.
ARG BUN_IMAGE=oven/bun:1.4.0@sha256:5ff609364c049b54eb0ff560ec96319729a972078ef2c755d758f0c6ef89c2d6
ARG BUN_IMAGE=oven/bun:1.4.2@sha256:9114c058aeae42162ee16dd5084b95fe9473970bb6bcb5b232ab1630f0546895

FROM ${BUN_IMAGE} AS build
WORKDIR /home/bun/app
Expand Down
16 changes: 11 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,16 +106,19 @@ See [SPONSORS.md](./SPONSORS.md).

<!-- sponsors:main — one banner, model developers only; empty until a Main sponsor signs -->

<!-- sponsors:standard — one row per sponsor, in order of signing. Uncomment the table with the first row:
<!-- sponsors:standard — one row per sponsor, in order of signing -->
<table>
<tbody>
<tr>
<td width="180"><a href="SPONSOR_URL"><img src="https://raw.githubusercontent.com/lidge-jun/opencodex/main/assets/sponsors/SPONSOR.png" alt="SPONSOR" width="150"></a></td>
<td>Thanks to SPONSOR for sponsoring this project! BLURB</td>
<td width="180"><a href="https://www.orcarouter.ai/?utm_source=opencodex&utm_medium=readme"><img src="assets/sponsors/orcarouter.png" alt="OrcaRouter" width="150"></a></td>
<td>Thanks to <a href="https://www.orcarouter.ai/?utm_source=opencodex&utm_medium=readme">OrcaRouter</a> for sponsoring this project! OrcaRouter is one OpenAI-compatible AI gateway for production AI: adaptive routing that grades every prompt and sends it to the model that clears your bar, automatic failover, routing rules as code, zero-markup provider pricing with prompt caching, and guardrails, an agent firewall, and request logs on every call across 200+ models. Pick <code>OrcaRouter</code> in the Add provider picker or run <code>ocx provider add orcarouter</code>; <code>orcarouter/auto</code> is the adaptive router.</td>
</tr>
<tr>
<td width="180"><a href="https://www.packyapi.com/register?aff=k5KT"><img src="assets/sponsors/packycode.png" alt="PackyCode" width="150"></a></td>
<td>Thanks to <a href="https://www.packyapi.com/register?aff=k5KT">PackyCode</a> for sponsoring this project! PackyCode is a stable, high-performance API relay provider, offering relay services for Claude Code, Codex, Gemini, and more. With automatic failover, smart routing, and unlimited concurrency, it turns AI into a real productivity tool. <a href="https://www.packyapi.com/register?aff=k5KT">Register via this link</a> and get started! Pick <code>PackyCode</code> in the Add provider picker or run <code>ocx provider add packycode</code>.<br><sub>PackyCode 是一家稳定、高效的 API 中转服务商,提供 Claude Code、Codex、Gemini 等多种中转服务。具备自动故障转移、智能路由和无限并发等多种功能,让 AI 编程成为真正的生产力工具。<a href="https://www.packyapi.com/register?aff=k5KT">点此链接注册</a>,立即开始使用!</sub></td>
</tr>
</tbody>
</table>
-->

---

Expand Down Expand Up @@ -303,7 +306,7 @@ full-slash form keeps working too. Details: [model routing docs](https://opencod
OpenAI (ChatGPT login or API key), Anthropic, Google Gemini, xAI, Kimi, Azure OpenAI, Ollama
(local + Cloud), Cursor (experimental), and every OpenAI-compatible endpoint — plus DeepSeek,
Groq, OpenRouter, Together, Fireworks, Cerebras, Mistral, Hugging Face, NVIDIA NIM, MiniMax,
Qwen Cloud, SiliconFlow, and more. Full list: `ocx init` or the
Qwen Cloud, Qoder Global and CN (official PAT + CLI), SiliconFlow, and more. Full list: `ocx init` or the
[provider docs](https://opencodex.me/guides/providers/).

## CLI
Expand Down Expand Up @@ -384,6 +387,9 @@ Maintainer source-of-truth notes live under [`structure/`](./structure), contrib
Report undisclosed vulnerabilities privately through
[GitHub private vulnerability reporting](https://github.com/yansigit/opencodex/security/advisories/new),
not a public issue.
That form is the only technical channel — there is no security email. Follow-ups stay in the
private report itself; a public issue may carry coordination only, never vulnerability details.
Acknowledging a report is not the same as triaging it, and no first-response target is promised.

## Development

Expand Down
45 changes: 45 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,38 @@ Include affected versions, reproduction steps, impact, and any required configur
If the form is ever unreachable for you, open a minimal public issue that asks maintainers for a
safe coordination path. Do not include exploit details, secrets, or live targets in that issue.

### Public or private

Being findable in the source is not disclosure. opencodex is source-available, so nearly every
defect here is in principle "visible in the code" — that is not the test, and it is not a reason
to open a public issue.

The test is whether the weakness is already public: the fix has shipped, or the defect is
already described in a published advisory, issue, or pull request. When that is true, ordinary
public review applies and a normal issue or pull request is the right route. When it is not, the
report is pre-disclosure material and belongs in the private advisory form, whatever its
severity looks like to you.

If you are unsure, file privately. Maintainers can move a report to public review once it is
safe to do so; the reverse is not possible.

## Following Up on a Report You Already Filed

Keep follow-up inside the private report. The advisory thread you opened stays open for
comments, and that is where new evidence, corrected impact, and questions about status belong.
There is no second private route: GitHub private vulnerability reporting is the only technical
channel this project offers, and there is no security email to escalate to.

If the private thread itself is stalled or unreachable, a public issue may carry **coordination
only** — a request for a safe follow-up path, or a note that a filed report is still awaiting a
response. Keep it free of the vulnerability: no reproduction steps, no exploit reasoning, no
logs or attachments, no narrowing of affected versions, and no advisory identifiers or links.
You do not need to say which report you mean; maintainers can match it privately, and naming it
in public is itself a signal.

A maintainer may answer such an issue in public. Read that answer narrowly — it confirms the
route, not the content of anything you reported.

## Response Expectations

Maintainers will review reports on a best-effort basis. Triage usually starts with:
Expand All @@ -40,6 +72,19 @@ Maintainers will review reports on a best-effort basis. Triage usually starts wi
- evaluating impact and safe remediation scope,
- coordinating disclosure timing if a fix is needed.

Receipt is not triage. An acknowledgment — including a maintainer confirming they can reach the
private reporting queue — means the message arrived. It does not mean the report has been
reproduced, assessed for impact, assigned an owner, or accepted. The private thread is the only
place the technical outcome is recorded.

Public review of a published patch does not close the corresponding private report, and it does
not settle disclosure for anything else you filed. Landing a fix resolves the handling route for
that fix; the private report closes when maintainers close it.

There is no response deadline. Review is best-effort, as stated above, and this project does not
publish a first-response target — please do not read one into an acknowledgment or into the
triage steps listed here.

## Operational Notes

- Remove secrets, tokens, cookies, and personal data from screenshots and logs before sharing them.
Expand Down
2 changes: 1 addition & 1 deletion SPONSORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ sponsor receives:
supplied by the sponsor and published verbatim. The maintainer may decline or require edits to
text that is false, misleading, disparages third parties, or breaches applicable law or GitHub
policy. A second-language blurb (for example Chinese) may run alongside the English one.
- A built-in provider preset (`ocx provider select <id>`) shipped in a public npm release,
- A built-in provider preset (`ocx provider add <id>`) shipped in a public npm release,
listed near the top of the provider picker in the dashboard and CLI and marked as a sponsor
there. (The registry field and picker ordering that back this land with the first sponsor
preset; today the picker follows registry order.)
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/orcarouter-overview-mobile.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/orcarouter-overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/orcarouter-picker.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/orcarouter-readme.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/orcarouter.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/packycode-overview-mobile.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/packycode-overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/packycode-picker.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/packycode-readme.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sponsors/packycode.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading