Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
340 commits
Select commit Hold shift + click to select a range
137d6a7
chore(release): open dev at 2.46.0 before releasing 2.45.0 (#3812)
github-actions[bot] Sep 6, 2026
bcdf559
chore(release): promote validated 2.45.0 to main [skip ci]
invalid-email-address Sep 6, 2026
b0900e5
chore(release): promote 2.45.0 to main (#3813)
lidge-jun Sep 6, 2026
e963aa6
docs: plan platform validation follow-up
invalid-email-address Sep 6, 2026
eabe7ce
docs: plan axis1 bounded bug fixes [skip ci]
invalid-email-address Sep 6, 2026
58fcb09
fix(claude): preserve reasoning and tool result envelopes
lidge-jun Sep 6, 2026
b2703f8
fix(grok): filter Codex control frames for strict Responses clients
lidge-jun Sep 6, 2026
0d42efa
docs(plan): define axis five display and CLI delivery
invalid-email-address Sep 6, 2026
ef54e82
docs: describe BigModel and Raycast integration contracts
invalid-email-address Sep 6, 2026
6a51f04
test(oauth): drain ACL flights before fixture teardown [skip ci]
invalid-email-address Sep 6, 2026
336c621
fix(grok): honor SSE event order and empty resets
lidge-jun Sep 6, 2026
9cde6e7
test(responses): cover established task delivery and compaction
lidge-jun Sep 6, 2026
cb8ac02
fix(diagnostics): distinguish inbound size measurement provenance [sk…
invalid-email-address Sep 6, 2026
c7f6ba7
feat(providers): carry static BigModel Responses preset from #3641
invalid-email-address Sep 6, 2026
130be8d
feat(catalog): carry native display labels with normalization contrac…
invalid-email-address Sep 6, 2026
1ee829d
feat(cli): carry provider list JSONL output [skip ci]
invalid-email-address Sep 6, 2026
e00d5c3
test(container): verify build startup and volume recreation [skip ci]
invalid-email-address Sep 6, 2026
92c95fa
feat(gui): carry discovered model name editor with recoverable saves
invalid-email-address Sep 6, 2026
f215f79
fix(anthropic): attribute quota headers and honor measured reset dead…
invalid-email-address Sep 6, 2026
12b174e
fix(claude): preserve signed and opaque replay block boundaries
lidge-jun Sep 6, 2026
8f8790e
docs(devlog): record axis three protocol delivery plan
lidge-jun Sep 6, 2026
9d775fa
fix(gui): preserve display name receipts across recovery failures
invalid-email-address Sep 6, 2026
d523990
fix(providers): repair static BigModel login and Responses effort
invalid-email-address Sep 6, 2026
9336a27
test(providers): distinguish BigModel upstream and bridge modalities
invalid-email-address Sep 6, 2026
e352ede
fix(gui): balance name editor helper text on narrow screens
invalid-email-address Sep 6, 2026
c721b94
fix(claude): report terminal closure buffer overflow once
lidge-jun Sep 6, 2026
513391e
test(container): isolate synthetic inference without internal network…
invalid-email-address Sep 6, 2026
76e667f
test(responses): account for ordinary tool catalog guidance
lidge-jun Sep 6, 2026
9b5b670
test(claude): correct replay and closure overflow oracles
lidge-jun Sep 6, 2026
619f7a7
test(container): declare the synthetic loopback destination [skip ci]
invalid-email-address Sep 6, 2026
4c1d9af
fix(gui): reconcile display name draft during snapshot render
invalid-email-address Sep 6, 2026
d6cf876
feat(integrations): carry Raycast client from #3733
invalid-email-address Sep 6, 2026
ea3d03a
fix(integrations): repair Raycast #3733 ownership and plan guidance
invalid-email-address Sep 6, 2026
387d787
fix(raycast): honor live export admission and defer ensure refresh (#…
invalid-email-address Sep 6, 2026
22f39ff
test(responses): exercise empty effort ladder through valid ingress
invalid-email-address Sep 6, 2026
95edd0a
fix(export): preserve live CLI destination despite saved listener dri…
invalid-email-address Sep 6, 2026
d175335
test(container): verify first-start migrations before persistence bas…
invalid-email-address Sep 6, 2026
ab2bbc6
Merge pull request #3828 from lidge-jun/codex/axis2-bigmodel-stack-11fe
lidge-jun Sep 6, 2026
b65b9d8
Merge pull request #3829 from lidge-jun/codex/axis2-raycast-stack-11fe
lidge-jun Sep 6, 2026
68d90aa
docs(claude): describe redacted reasoning replay
lidge-jun Sep 6, 2026
2269e07
Merge pull request #3830 from lidge-jun/codex/axis3-protocol-foundation
lidge-jun Sep 6, 2026
07f8d70
Merge pull request #3831 from lidge-jun/codex/axis3-grok-control-frames
lidge-jun Sep 6, 2026
4349cf3
Merge pull request #3832 from lidge-jun/codex/axis3-protocol-combined
lidge-jun Sep 6, 2026
e873008
docs(devlog): record verified protocol delivery and remainders
lidge-jun Sep 6, 2026
943e5a7
merge verified runtime landing into documentation closeout
lidge-jun Sep 6, 2026
e337374
Merge current dev into axis five native labels [skip ci]
invalid-email-address Sep 6, 2026
e862b86
Merge refreshed native label base into JSONL layer [skip ci]
invalid-email-address Sep 6, 2026
f51ec24
Merge refreshed axis five base for final integrated validation
invalid-email-address Sep 6, 2026
a5f9c34
Merge pull request #3834 from lidge-jun/codex/axis3-protocol-docs
lidge-jun Sep 6, 2026
91fba4b
ci: gate source-build Docker lifecycle verification [skip ci]
invalid-email-address Sep 6, 2026
15fa571
fix(container): retain routed catalog across managed recreation [skip…
invalid-email-address Sep 6, 2026
6f2ad1e
ci: select explicit-file typecheck mode for TypeScript 7 [skip ci]
invalid-email-address Sep 6, 2026
a3c2eb5
fix(anthropic): expire retained quota measurements at known resets [s…
invalid-email-address Sep 7, 2026
54fcc68
test(anthropic): keep probe fixtures inside live reset windows [skip ci]
invalid-email-address Sep 7, 2026
d3c70f9
fix(anthropic): normalize retained quota metadata and guard test tran…
invalid-email-address Sep 7, 2026
872f0e5
fix(cli): explain which side of a version mismatch is older [skip ci]
invalid-email-address Sep 6, 2026
2e8ef03
fix(responses): classify encrypted task recovery failures
invalid-email-address Sep 6, 2026
6388ec7
Merge pull request #3818 from lidge-jun/codex/platform-lane4-oauth
lidge-jun Sep 7, 2026
da18da4
Merge pull request #3819 from lidge-jun/codex/platform-lane4-body
lidge-jun Sep 7, 2026
5dee8cf
Merge pull request #3822 from lidge-jun/codex/platform-lane4-docker
lidge-jun Sep 7, 2026
7fdb0e9
Merge pull request #3823 from lidge-jun/codex/platform-lane4-final
lidge-jun Sep 7, 2026
1e16fe4
Merge axis five native display names (#3820)
lidge-jun Sep 7, 2026
be24986
Merge axis five provider JSONL output (#3821)
lidge-jun Sep 7, 2026
44c69fd
Merge axis five discovered model name editor (#3824)
lidge-jun Sep 7, 2026
2c8ec0b
docs(devlog): close axis five display and CLI delivery
invalid-email-address Sep 7, 2026
e894dcb
Close axis five delivery record (#3835)
lidge-jun Sep 7, 2026
0ccc6bd
docs: keep delivery attribution without contact addresses [skip ci]
invalid-email-address Sep 7, 2026
bf85e67
Merge PR #3836: repair delivery-note privacy scan [skip ci]
lidge-jun Sep 7, 2026
b29bbb4
fix(clients): preserve exact Aside file identities [skip ci]
invalid-email-address Sep 7, 2026
85fbdb5
Merge pull request #3825: verified axis1 bug fix [skip ci]
lidge-jun Sep 7, 2026
860baaf
Merge pull request #3826: verified axis1 bug fix [skip ci]
lidge-jun Sep 7, 2026
5a97db9
Merge pull request #3827: verified axis1 bug fix [skip ci]
lidge-jun Sep 7, 2026
5fdf9bb
Merge pull request #3842: verified axis1 bug fix [skip ci]
lidge-jun Sep 7, 2026
be112e4
docs: close axis1 bug-fix delivery record [skip ci]
invalid-email-address Sep 7, 2026
0d8b0cd
Merge PR #3847: close axis1 delivery record [skip ci]
lidge-jun Sep 7, 2026
2dd7b43
chore(release): open dev at 2.47.0 before releasing 2.46.0
github-actions[bot] Sep 7, 2026
3970601
chore(release): prepare 2.46.0 stable promotion
invalid-email-address Sep 7, 2026
6cf38b5
Merge pull request #3850 from lidge-jun/codex/dev-version-2.47.0
lidge-jun Sep 7, 2026
bba6322
Merge pull request #3851 from lidge-jun/codex/release-246-main
lidge-jun Sep 7, 2026
ec799db
docs(devlog): plan code-mode host contract for routed models
lidge-jun Sep 7, 2026
041aec0
docs(devlog): fold audit round 1 into the code-mode host contract roa…
lidge-jun Sep 7, 2026
d375916
docs(devlog): fold audit round 2 into the code-mode host contract roa…
lidge-jun Sep 7, 2026
3bcb9aa
docs(devlog): fold audit round 3 into the code-mode host contract roa…
lidge-jun Sep 7, 2026
5b70ddd
docs(devlog): record live Codex host probe evidence for the code-mode…
lidge-jun Sep 7, 2026
adafd12
fix(code-mode): state the host contract for nested helpers before the…
lidge-jun Sep 7, 2026
1633780
fix(code-mode): name the broken host rule on exec results that carry …
lidge-jun Sep 7, 2026
8c6b592
chore: advance development version
github-actions[bot] Sep 7, 2026
6bdcba5
docs: record the routed code-mode host contract
lidge-jun Sep 7, 2026
ece556a
Merge pull request #3854 from lidge-jun/codex/code-mode-host-contract
lidge-jun Sep 7, 2026
f1604c6
docs(devlog): make CI completion check fail closed [skip ci]
Ingwannu Sep 4, 2026
3e4a01c
fix(kiro): gate request diagnostics behind the debug check [skip ci]
luvs01 Sep 7, 2026
98564bd
fix(copilot): route Responses-only GPT, Grok and MAI models correctly…
invalid-email-address Sep 7, 2026
6061dcc
test(kiro): isolate and restore every debug setting the diagnostics g…
invalid-email-address Sep 7, 2026
25689e1
fix(responses): bound the streaming citation marker span [skip ci]
luvs01 Sep 7, 2026
00b74c7
fix(responses): keep an oversized citation span verbatim before a lat…
invalid-email-address Sep 7, 2026
924b657
fix(providers): refuse keychain restore across provider ownership [sk…
luvs01 Sep 7, 2026
6eadb16
fix(management): expose the effective web-search sidecar enabled state
invalid-email-address Sep 7, 2026
7f2fb92
Merge pull request #3865: release-train M layer 1 [skip ci]
lidge-jun Sep 7, 2026
dcec717
Merge pull request #3866: release-train M layer 2 [skip ci]
lidge-jun Sep 7, 2026
0ef7d29
Merge pull request #3867: release-train M layer 3 [skip ci]
lidge-jun Sep 7, 2026
99451df
Merge pull request #3868: release-train M layer 4 [skip ci]
lidge-jun Sep 7, 2026
0719457
Merge pull request #3869: release-train M layer 5 [skip ci]
lidge-jun Sep 7, 2026
d00615d
Merge pull request #3870: release-train M layer 6 [skip ci]
lidge-jun Sep 7, 2026
61a775c
docs: record lane B manual delivery roadmap [skip ci]
invalid-email-address Sep 7, 2026
1386e3d
fix(codex): sustain quota window activation [skip ci]
terrytan95 Sep 7, 2026
c386770
test(codex): cover quota activation regressions [skip ci]
terrytan95 Sep 7, 2026
6bcf864
fix(transport): admit Mihomo IPv6 fake-IP under TUN transparency exce…
hualiny Sep 7, 2026
bdd4e46
fix(transport): retain IPv6 pinning across proxy mismatches [skip ci]
invalid-email-address Sep 7, 2026
a814dd3
test(transport): run DNS fixture in the Bun test loader [skip ci]
invalid-email-address Sep 7, 2026
3955e10
fix(codex): fence main quota activation recovery [skip ci]
invalid-email-address Sep 7, 2026
b67f452
test(transport): pass the test-run lease to the child fixture [skip ci]
invalid-email-address Sep 7, 2026
62fe747
Merge pull request #3871: sustain Codex quota window activation (carr…
lidge-jun Sep 7, 2026
ddee5e8
Merge pull request #3872: admit Mihomo IPv6 fake-IP under TUN (carry …
lidge-jun Sep 7, 2026
edd396c
fix(opencode-go): carry session affinity through Pi native chat [skip…
makesomethingshit Sep 7, 2026
effba4c
test(opencode-go): define inbound opaque session identity contract [s…
makesomethingshit Sep 7, 2026
5b3df2e
fix: admit reasoning envelope allocations before materialization [ski…
Ingwannu Sep 7, 2026
eb8cc9a
fix(pi): scope generated session affinity to the Pi client [skip ci]
makesomethingshit Sep 7, 2026
7541517
fix: admit final Claude request copies before serialization [skip ci]
lidge-jun Sep 7, 2026
697a500
test: pin Go affinity identity and header precedence [skip ci]
lidge-jun Sep 7, 2026
e0e8d26
fix: fall back from native compact 404 to routed compaction [skip ci]
lidge-jun Sep 7, 2026
d8b18b1
fix: share envelope admission budgets and release transient request c…
lidge-jun Sep 7, 2026
feb1855
docs: include Pi session affinity in every guide example [skip ci]
lidge-jun Sep 7, 2026
c84cc3b
docs: describe native compact 404 fallback in route table [skip ci]
lidge-jun Sep 7, 2026
b0bcb4b
Merge pull request #3879: admit reasoning-envelope allocations before…
lidge-jun Sep 7, 2026
dac7e28
Merge pull request #3880: carry Pi/OpenCode Go session affinity throu…
lidge-jun Sep 7, 2026
76436a3
Merge pull request #3881: routed compaction fallback for native compa…
lidge-jun Sep 7, 2026
e96b5c5
fix(responses): make whole-string citation stripping agree with the s…
invalid-email-address Sep 7, 2026
413600d
docs(providers): describe OpenCode Go session affinity and the Pi com…
invalid-email-address Sep 7, 2026
6389787
Merge pull request #3882: align whole-string citation stripping with …
lidge-jun Sep 7, 2026
522ce5f
Merge pull request #3888: providers guide OpenCode Go affinity docs […
lidge-jun Sep 7, 2026
451fbff
feat gui: expose subagent fallback settings [skip ci]
x3M3x Sep 1, 2026
2e6ef45
docs: record lane C manual-chain roadmap [skip ci]
invalid-email-address Sep 7, 2026
eb5ff6c
feat(gui): add opt-in Codex Desktop sign-in toggle [skip ci]
RobinBially Sep 7, 2026
2b14053
docs: add subagent fallback settings screenshot [skip ci]
x3M3x Sep 2, 2026
a815f23
fix(web-search): bound the Anthropic sidecar SSE and error bodies [sk…
luvs01 Sep 7, 2026
c1f96f0
fix(gui): retain pending Desktop preference when sync is skipped [ski…
invalid-email-address Sep 7, 2026
f8d3545
fix(gui): preserve fallback choices and explain native-parent V2 comp…
invalid-email-address Sep 7, 2026
7131528
docs: pin lane C health wiring handoff [skip ci]
invalid-email-address Sep 7, 2026
2b158e9
fix(vision): bound the Anthropic vision sidecar SSE and error bodies …
luvs01 Sep 7, 2026
9d8d11a
fix(service): carry startup-health cache portion of #3863 [skip ci]
x3M3x Sep 7, 2026
734d41c
fix(gui): retain unapplied Desktop status across settings polls [skip…
invalid-email-address Sep 7, 2026
ffcd7ab
fix(gui): guard fallback hydration races and preserve row focus [skip…
invalid-email-address Sep 7, 2026
51b4437
test(web-search): cover bounded partial frames and detached cancellat…
invalid-email-address Sep 7, 2026
8eaa564
test(vision): pin capped descriptions and non-settling error-body can…
invalid-email-address Sep 7, 2026
91b54b7
fix(service): preserve fresh health and contain detached probe failur…
invalid-email-address Sep 7, 2026
abbdb22
docs: translate code-mode host rules; docs handoff from lane E [skip ci]
invalid-email-address Sep 7, 2026
f1b8f2d
fix(gui): keep fallback render identities in state [skip ci]
invalid-email-address Sep 7, 2026
f46a7f4
Merge pull request #3873: bound Anthropic web-search sidecar bodies (…
lidge-jun Sep 7, 2026
3f07e09
Merge pull request #3874: bound Anthropic vision sidecar bodies (carr…
lidge-jun Sep 7, 2026
686cb12
Merge pull request #3875: unblock settings load from the Windows heal…
lidge-jun Sep 7, 2026
2eec04f
Merge pull request #3876: default-off Codex Desktop sign-in preferenc…
lidge-jun Sep 7, 2026
d0fca4a
Merge pull request #3878: sub-agent fallback settings GUI with V2 com…
lidge-jun Sep 7, 2026
1ca1a56
fix(release): recover registry reads after acknowledged publication […
invalid-email-address Sep 7, 2026
56f356d
fix(release): bind registry checks to package metadata [skip ci]
invalid-email-address Sep 7, 2026
f4a4b46
Merge pull request #3864: recover release registry smoke after an acc…
lidge-jun Sep 7, 2026
609105c
docs: plan lane D manual release chain [skip ci]
invalid-email-address Sep 7, 2026
b462cc5
docs: record lane D roadmap audit decisions [skip ci]
invalid-email-address Sep 7, 2026
bf15366
fix(usage): resolve account prices through provider identity [skip ci]
invalid-email-address Sep 7, 2026
c35b5a6
fix(claude): preserve legacy thinking block order [skip ci]
invalid-email-address Sep 7, 2026
c5fb7e3
fix(models): guard edits during unknown receipt recovery [skip ci]
invalid-email-address Sep 7, 2026
c44c6de
test(usage): use approved synthetic email domains [skip ci]
invalid-email-address Sep 7, 2026
341d71d
feat(models): edit manual token prices and preserve explicit zero [sk…
invalid-email-address Sep 7, 2026
062e9cb
fix(models): validate price receipts and redact CLI failures [skip ci]
invalid-email-address Sep 7, 2026
a6e1227
fix(models): start price reload state from user actions [skip ci]
invalid-email-address Sep 7, 2026
568a3e8
docs: record code-mode delivery and qualify Desktop model switching […
invalid-email-address Sep 7, 2026
e0a1a88
docs: complete Raycast status and model-name recovery guidance [skip ci]
invalid-email-address Sep 7, 2026
f8c8f6d
docs: qualify Desktop model switching in translated guides [skip ci]
invalid-email-address Sep 7, 2026
209c88b
fix(models): isolate async price-read state callbacks [skip ci]
invalid-email-address Sep 7, 2026
c492474
feat(usage): add inclusive custom time windows [skip ci]
invalid-email-address Sep 7, 2026
089320e
docs: define lane D verification and handoff [skip ci]
invalid-email-address Sep 7, 2026
e346d7a
fix(usage): preserve dates across timezone calendar gaps [skip ci]
invalid-email-address Sep 7, 2026
5669413
test(models): scope price errors to their dialog [skip ci]
invalid-email-address Sep 7, 2026
fe94603
fix(usage): encode custom report identity as a tuple [skip ci]
invalid-email-address Sep 7, 2026
4fe4ad8
Merge pull request #3877: preserve signed and redacted thinking order…
lidge-jun Sep 7, 2026
d05250d
Merge pull request #3902: guard unknown display-name receipt recovery…
lidge-jun Sep 7, 2026
cb1113f
Merge pull request #3903: resolve account labels through pricing iden…
lidge-jun Sep 7, 2026
29405d3
Merge pull request #3904: edit manual prices and honor explicit zero …
lidge-jun Sep 7, 2026
da707cc
Merge pull request #3905: select inclusive custom usage time windows …
lidge-jun Sep 7, 2026
1649247
Merge pull request #3883: release-246 docs follow-ups (Raycast copy, …
lidge-jun Sep 7, 2026
74089fd
Merge pull request #3884: code-mode delivery record, Desktop /model c…
lidge-jun Sep 7, 2026
8ecf91f
feat(gui): add guarded routed model picker drag ordering [skip ci]
invalid-email-address Sep 7, 2026
dd8fb50
fix(gui): reconcile picker lifecycle outside synchronous effects [ski…
invalid-email-address Sep 7, 2026
3fb08ec
test(gui): preserve read-after-write picker fixture state [skip ci]
invalid-email-address Sep 7, 2026
1e188b7
Merge pull request #3887: drag-and-drop model picker ordering (#3774 …
lidge-jun Sep 7, 2026
524985f
feat(router): add per-model pinned reasoning effort overrides [skip ci]
Sep 3, 2026
331e68f
fix(router): unify effort validation with isDeclaredReasoningEffort, …
Sep 3, 2026
24149f3
fix(router): enforce effort cap after pin in native chat and normaliz…
Sep 3, 2026
5865367
fix: adapt pinned effort carry to current config and wire contracts […
invalid-email-address Sep 7, 2026
c145a70
fix: preserve price writes across concurrent provider replacement [sk…
invalid-email-address Sep 7, 2026
eeb5501
test: use a valid provider config for effort-cap API fixtures [skip ci]
invalid-email-address Sep 7, 2026
f802f71
Merge pull request #3892: per-model pinned reasoning effort overrides…
lidge-jun Sep 7, 2026
8bc9e4e
docs: publish the sponsorship rule set (SPONSORS.md + README section)…
lidge-jun Sep 7, 2026
6744571
docs(devlog): rank 27 next-release landing recommendations for dev af…
invalid-email-address Sep 7, 2026
93abd0f
docs(devlog): plan release train 260907 lanes and merge protocol [ski…
invalid-email-address Sep 7, 2026
0fbfcf8
docs(devlog): amend release-train ownership for i18n and how-it-works…
invalid-email-address Sep 7, 2026
8c5cf59
docs(devlog): record release-train wp1 dispatch and main chain [skip ci]
invalid-email-address Sep 7, 2026
c1419de
docs(devlog): record M chain landing on dev [skip ci]
invalid-email-address Sep 7, 2026
6415f4d
docs(devlog): record B landing and CI serialization policy [skip ci]
invalid-email-address Sep 7, 2026
0d419a2
docs(devlog): record A and M7/M8 landings [skip ci]
invalid-email-address Sep 7, 2026
6a788c6
docs(devlog): record C and E#3864 landings [skip ci]
invalid-email-address Sep 7, 2026
d79e6e7
docs(devlog): record D landing [skip ci]
invalid-email-address Sep 7, 2026
2fbaf48
docs(devlog): record E docs landing [skip ci]
invalid-email-address Sep 7, 2026
4c0f46e
docs(devlog): record #3887 landing [skip ci]
invalid-email-address Sep 7, 2026
768c7d1
docs(devlog): record final chain landing and train-head CI [skip ci]
invalid-email-address Sep 7, 2026
f502afd
docs(devlog): release-train readiness record for dev after v2.46.0 [s…
invalid-email-address Sep 7, 2026
273a3ab
Merge pull request #3913: 260907 release-train devlog record [skip ci]
lidge-jun Sep 7, 2026
aeefb3a
docs(readme): one-line Sponsors slot, sponsorship summary and contact…
lidge-jun Sep 7, 2026
c41232a
feat(providers): OrcaRouter PKCE account login and live catalog (carr…
lidge-jun Sep 7, 2026
17d2a17
docs(readme): one sponsor line pointing at SPONSORS.md (#3923)
lidge-jun Sep 7, 2026
c4725b2
fix(pricing): preserve concurrent rates when resetting the last live …
invalid-email-address Sep 7, 2026
0aef26c
fix(adapters): require host error context before recovery guidance
invalid-email-address Sep 7, 2026
e9d72e0
fix(oauth): accept documented Orca key grants and clarify private end…
invalid-email-address Sep 7, 2026
cb24485
fix(gui): serialize OAuth restarts behind pending cancellation
invalid-email-address Sep 7, 2026
09f669a
chore(release): open dev at 2.48.0 before releasing 2.47.0 (#3925)
github-actions[bot] Sep 7, 2026
7768800
fix(cursor): preserve tool results outside verified code-mode errors
invalid-email-address Sep 7, 2026
e7173ed
fix(gui): retain unapplied Desktop preference state across refreshes
invalid-email-address Sep 7, 2026
3baad73
fix(usage): reject custom reports with missing or mismatched window r…
invalid-email-address Sep 7, 2026
7d8082c
fix(gui): keep subagent roster usable when fallback settings fail
invalid-email-address Sep 7, 2026
ba5e4e8
docs: record release regression persistence and response contracts
invalid-email-address Sep 7, 2026
7df1b9e
Merge remote-tracking branch 'origin/dev' into codex/release-247-regr…
invalid-email-address Sep 7, 2026
18b8890
docs: explain custom report confirmation and price reset scope
invalid-email-address Sep 7, 2026
713be5c
refactor(gui): chain cancellation barriers without an await loop
invalid-email-address Sep 7, 2026
4437cd8
test(gui): observe dashboard hook state after React commits
invalid-email-address Sep 7, 2026
3d53e5f
release: prepare 2.47.0 from audited regression candidate
invalid-email-address Sep 7, 2026
42f2afd
refactor(gui): give settings polling and mutation explicit reducer ow…
invalid-email-address Sep 7, 2026
48ab3e1
fix(gui): guard polling input and precompute model membership
invalid-email-address Sep 7, 2026
eda8754
Merge commit '48ab3e1e66cfa6e0c873de2fafa4540ac61d6c7d' into codex/re…
invalid-email-address Sep 7, 2026
5725219
test(gui): follow the shared OAuth cancellation request owner
invalid-email-address Sep 7, 2026
f9e3515
Merge commit '57252193b' into codex/release-247-main
invalid-email-address Sep 7, 2026
6f71931
release: promote 2.47.0 to main (#3929)
lidge-jun Sep 7, 2026
d0737cf
fix(gui): isolate fallback choices from refreshed subagent roster
invalid-email-address Sep 7, 2026
9a60256
Merge commit 'd0737cff3' into codex/release-247-main-final
invalid-email-address Sep 7, 2026
f48c322
fix(gui): keep unknown fallback availability explicitly empty
invalid-email-address Sep 7, 2026
9e9b1d3
Merge commit 'f48c322c0' into codex/release-247-main-final
invalid-email-address Sep 7, 2026
0d7652a
test(gui): seed fallback availability in stale-response fixtures
invalid-email-address Sep 7, 2026
947bae9
Merge commit '0d7652ad1' into codex/release-247-main-final
invalid-email-address Sep 7, 2026
5b468c3
ci: balance full macOS coverage across two isolated shards
Sep 7, 2026
d519523
sync: merge upstream v2.46.0 with fork preservation
Sep 7, 2026
f7f890f
release: apply final roster correction to main (#3933)
lidge-jun Sep 7, 2026
ebcb2b9
fix: reconcile v2.46 sync contracts and preserve init refusal
Sep 7, 2026
605728a
Merge pull request #317 from yansigit/codex/ci-platform-timing
yansigit Sep 7, 2026
784e4ef
sync: retain latest origin dev CI improvements
Sep 7, 2026
488a5fc
sync: merge upstream v2.47.0 while preserving fork integrations
Sep 7, 2026
7915727
test: budget multi-process catalog repair under suite load
Sep 7, 2026
b425c45
test: isolate debug API server lifecycle from reused Bun workers
Sep 7, 2026
4d36c91
fix(gui): complete model feedback callback dependencies
Sep 7, 2026
e252c61
test: align local full-suite framework timeout with CI
Sep 7, 2026
3b28053
fix(ci): preserve container TLS and isolate login platform fixture
Sep 7, 2026
8137b9e
test(cli): keep stale-record probe distinct from occupied listener
Sep 7, 2026
24c66ef
Merge pull request #323 from yansigit/sync/upstream-v2.47.0-f7f890ff-…
yansigit Sep 7, 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
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .github/policies/ci-paths.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ ci:
- 'scripts/**'
- 'gui/**'
- 'integrations/replit-gateway/**'
- 'docker/**'
- 'Dockerfile'
- 'compose.yaml'
- '.dockerignore'
- 'assets/**'
- '.gitattributes'
- '.npmignore'
Expand Down
128 changes: 108 additions & 20 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,7 @@ jobs:
run: |
bun x tsc --noEmit
bun x tsc --noEmit -p tests/tsconfig.doctor-service-memory-contract.json
bun x tsc --ignoreConfig --noEmit --strict --target ESNext --module ESNext --moduleResolution bundler --types bun-types --skipLibCheck scripts/ci/docker-smoke.ts

- name: Install replit-gateway companion
run: cd integrations/replit-gateway && bun install --frozen-lockfile
Expand Down Expand Up @@ -531,23 +532,19 @@ jobs:
- name: CLI help smoke
run: bun run src/cli/index.ts help

# macOS is focused on dev pushes and relevant pull requests, while main,
# preview, and dispatch retain the full unsharded control. This keeps Darwin
# process coverage on the fast path without dropping the release control.
# Dev pushes and relevant pull requests keep a focused Darwin/process lane.
# Release refs and main-targeting changes use the timing-balanced full-suite
# matrix below; nightly-macos retains the unsharded scheduler/load control.
platform-macos:
name: macos
needs: changes
if: >-
(github.event_name != 'pull_request' && github.event_name != 'merge_group') ||
(github.event_name == 'push' && github.ref == 'refs/heads/dev') ||
(github.event_name == 'pull_request' && github.base_ref == 'main') ||
(github.event_name == 'merge_group' && github.event.merge_group.base_ref == 'refs/heads/main') ||
needs.changes.outputs.macos == 'true'
((github.event_name == 'pull_request' || github.event_name == 'merge_group') && needs.changes.outputs.macos == 'true')
runs-on: macos-latest
# The unsharded control for the sharded Linux lane: the only place the whole
# suite runs in one pool, so it is the place that catches what sharding
# hides. The flakes it keeps surfacing are timing, not logic, and the fix
# is the tests, not a fourth lane.
timeout-minutes: 30
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
Expand Down Expand Up @@ -619,15 +616,84 @@ jobs:
tests/storage/storage-worker-teardown-isolate.test.ts \
tests/ci-workflows/test-runner.test.ts

- name: Full macOS suite
if: >-
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'pull_request' && github.base_ref == 'main') ||
(github.event_name == 'merge_group' &&
github.event.merge_group.base_ref == 'refs/heads/main') ||
(github.event_name == 'push' &&
(github.ref == 'refs/heads/main' || github.ref == 'refs/heads/preview'))
run: bash scripts/ci/run-bun-with-crash-retry.sh -- bun scripts/test.ts --timeout 60000
- name: CLI help smoke
run: bun run src/cli/index.ts help

# Full macOS coverage is split by measured file duration. Every test remains
# in exactly one platform lane; load-sensitive files run one per fresh Bun
# process, matching the full-suite planner. The daily nightly job deliberately
# stays unsharded so it can still expose whole-pool scheduling interactions.
platform-macos-full:
name: macos full ${{ matrix.shard }}/2
needs: changes
if: >-
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'pull_request' && github.base_ref == 'main') ||
(github.event_name == 'merge_group' &&
github.event.merge_group.base_ref == 'refs/heads/main') ||
(github.event_name == 'push' &&
(github.ref == 'refs/heads/main' || github.ref == 'refs/heads/preview'))
runs-on: macos-latest
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
shard: [1, 2]
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
with:
persist-credentials: false
fetch-tags: true

- name: Setup project Bun
uses: ./.github/actions/setup-project-bun

- name: Install dependencies
run: |
bun install --frozen-lockfile
cd gui
bun install --frozen-lockfile

- name: Build GUI
run: |
cd gui
bun run build

- name: Restore canonical test timings
uses: actions/cache/restore@caa296126883cff596d87d8935842f9db880ef25 # v5.1.0
with:
path: .bun-timings.json
key: ocx-test-timings-dev-${{ github.sha }}
restore-keys: |
ocx-test-timings-dev-

- name: Validate restored timing data
if: hashFiles('.bun-timings.json') != ''
run: bun scripts/ci/validate-timings.ts .bun-timings.json --discard-invalid

- name: Full macOS shard with isolated load-sensitive files
shell: bash
env:
TEST_SHARD: ${{ matrix.shard }}/2
run: |
set -euo pipefail
main_list="$(mktemp -t ocx-macos-main.XXXXXX)"
serial_list="$(mktemp -t ocx-macos-serial.XXXXXX)"
cleanup() { rm -f -- "$main_list" "$serial_list"; }
trap cleanup EXIT
bun scripts/ci/test-lanes.ts --lane platform-main --timings .bun-timings.json --shard "$TEST_SHARD" > "$main_list"
bun scripts/ci/test-lanes.ts --lane platform-serial --timings .bun-timings.json --shard "$TEST_SHARD" > "$serial_list"
main_files=()
while IFS= read -r file; do main_files+=("$file"); done < "$main_list"
test "${#main_files[@]}" -gt 0
bash scripts/ci/run-bun-with-crash-retry.sh -- bun scripts/test.ts --isolate --timeout 60000 "${main_files[@]}"
serial_files=()
while IFS= read -r file; do serial_files+=("$file"); done < "$serial_list"
test "${#serial_files[@]}" -gt 0
for file in "${serial_files[@]}"; do
bash scripts/ci/run-bun-with-crash-retry.sh -- bun scripts/test.ts --isolate --parallel=1 --timeout 60000 "$file"
done

- name: CLI help smoke
run: bun run src/cli/index.ts help
Expand Down Expand Up @@ -878,6 +944,28 @@ jobs:
bun run scripts/keyring-smoke.ts
'

# Exercise the source-build Compose contract, including real volume reuse.
# Host fixtures cannot prove image construction or container recreation.
docker-smoke:
name: docker smoke
needs: changes
if: >-
(github.event_name != 'pull_request' && github.event_name != 'merge_group') ||
needs.changes.outputs.ci == 'true'
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
with:
persist-credentials: false

- name: Setup project Bun
uses: ./.github/actions/setup-project-bun

- name: Build, start, and recreate the container
run: bun scripts/ci/docker-smoke.ts

npm-global-smoke:
name: npm-global ${{ matrix.os }}
needs: changes
Expand Down Expand Up @@ -944,7 +1032,7 @@ jobs:
name: ci
if: always()
# Every producer, including the ones that only feed other jobs.
needs: [changes, test, storage-policy, api-usage, serial-load-sensitive, publish-test-timings, gates, platform-macos, platform-windows, keyring-smoke, npm-global-smoke]
needs: [changes, test, storage-policy, api-usage, serial-load-sensitive, publish-test-timings, gates, platform-macos, platform-macos-full, platform-windows, keyring-smoke, docker-smoke, npm-global-smoke]
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
Expand Down
41 changes: 29 additions & 12 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,7 @@ jobs:
}

- name: Publish (or dry-run)
id: publication
env:
DRY_RUN: ${{ env.DISPATCH_DRY_RUN }}
NPM_DIST_TAG: ${{ env.DISPATCH_TAG }}
Expand All @@ -461,39 +462,55 @@ jobs:
npm pack --dry-run
elif [ "$PUBLISH_NEEDED" != "true" ]; then
echo "::notice::Exact npm version is already published from ${GITHUB_SHA}; resuming post-publish metadata only"
echo "published=true" >> "$GITHUB_OUTPUT"
elif [ -z "$DISPATCH_CANDIDATE_RUN_ID" ]; then
echo "::warning::transitional manual release is building locally; migrate this caller to candidate IDs"
npm publish --tag "$NPM_DIST_TAG" --access public
echo "published=true" >> "$GITHUB_OUTPUT"
elif [ "$DRY_RUN" = "true" ]; then
echo "::notice::DRY RUN — validating exact candidate tarball, not publishing"
npm publish "$package_file" --tag "$NPM_DIST_TAG" --access public --ignore-scripts --dry-run
else
npm publish "$package_file" --tag "$NPM_DIST_TAG" --access public --ignore-scripts
echo "published=true" >> "$GITHUB_OUTPUT"
fi

# Confirm the registry actually has the new version (real publishes only).
# Publication is acknowledged before registry reads, which can lag or fail.
# Recover only observation failures in this run; never retry npm publish.
- name: Post-publish registry smoke
if: ${{ env.DISPATCH_DRY_RUN != 'true' }}
id: registry-smoke
if: ${{ env.DISPATCH_DRY_RUN != 'true' && steps.publication.outputs.published == 'true' }}
env:
RELEASE_VERSION: ${{ env.DISPATCH_VERSION }}
PUBLISHED: ${{ steps.publication.outputs.published }}
run: |
set -euo pipefail
test "$PUBLISHED" = "true" || {
echo "::error::No successful publication receipt; refusing registry recovery"
exit 1
}
pkg_name="$(node -p "require('./package.json').name")"
for attempt in $(seq 1 30); do
if VERSION=$(npm view "${pkg_name}@${RELEASE_VERSION}" version 2>/dev/null); then
for attempt in $(seq 1 6); do
if VERSION=$(timeout --kill-after=2s 10s npm view "${pkg_name}@${RELEASE_VERSION}" version --fetch-retries=0 --fetch-timeout=8000 2>/dev/null); then
if [ "$VERSION" != "$RELEASE_VERSION" ]; then
echo "::error::Registry returned an unexpected version; refusing to create a release"
exit 1
fi
echo "registry version=$VERSION"
test "$VERSION" = "$RELEASE_VERSION"
npm dist-tag ls "$pkg_name"
echo "verification=verified" >> "$GITHUB_OUTPUT"
echo "Registry verified ${pkg_name}@${RELEASE_VERSION}." >> "$GITHUB_STEP_SUMMARY"
timeout --kill-after=2s 10s npm dist-tag ls "$pkg_name" --fetch-retries=0 --fetch-timeout=8000 || echo "::warning::Could not read npm dist-tags; exact version was verified"
exit 0
fi
echo "::notice::${pkg_name}@${RELEASE_VERSION} not visible in npm registry yet (attempt $attempt/30)"
sleep 10
echo "::notice::Registry lookup not confirmed (attempt $attempt/6)"
if [ "$attempt" -lt 6 ]; then sleep 5; fi
done
echo "::error::npm registry smoke failed after 30 attempts"
npm view "$pkg_name" versions dist-tags --json || true
exit 1
echo "verification=pending" >> "$GITHUB_OUTPUT"
echo "::warning::npm publish succeeded, but registry verification remains pending; continuing GitHub release creation without republishing"
echo "Publication acknowledged for ${pkg_name}@${RELEASE_VERSION}; registry verification pending after bounded reads. Inspect the registry before announcing availability. Do not republish this version." >> "$GITHUB_STEP_SUMMARY"

- name: Create GitHub release
if: ${{ env.DISPATCH_DRY_RUN != 'true' }}
if: ${{ env.DISPATCH_DRY_RUN != 'true' && steps.publication.outputs.published == 'true' }}
env:
GH_TOKEN: ${{ github.token }}
RELEASE_VERSION: ${{ env.DISPATCH_VERSION }}
Expand Down
Loading
Loading