Published to npm as @bitkyc08/opencodex@2.98.0-preview.20261107 with dist-tag preview.
New Features
- Preserve structural tool turns (#7561)
- Add Runcrate to the free directory (#7726)
- Avoid rescanning fragmented SSE records (#7766)
- Refresh connected Hermes configs after catalog changes (#7704) (#7719)
- Add confirmed POSIX CLI updates and durable job status (#7586)
- Label routed /v1/models rows from modelDisplayNames (#7817)
- Add
ocx codexlauncher mirroringocx claude(#7346) - Windows Remote Link Children and Child credential/connection attestation (#7832)
- Restore LazyCodex role models from a change history (#7693)
- Add proof-bound Windows CLI update planning (#7596)
- Use Bun 1.4.4 native type checking (#7632)
- Add T3 Code as an export and integration client (#7529)
- Revocable server-side remembered device sessions (#7593)
- Add protected Windows CLI update job storage (#7626)
- Apply Windows CLI updates with owned transactions (#7648)
- Add opt-in alias naming for Hermes and Command Code exports (#7867)
- Add per-source interception toggles (#7760)
- Show distinct first-response states on the provider overview (#7939)
- Skip Unicode folding for plain ASCII metadata (#7886)
- Per-client model visibility for the Desktop list (#7769)
- Add IAM Identity Center login to dashboard (#7690)
- Opt in to omitting disabled native models (#7889)
- Link completion probe failures to recovery, re-verification, and disconnect scope (#7947)
- Scan SSE inspection fragments incrementally (#7913)
- Test all models of a provider and disable the failures (#7742)
- Complete gracefully on max_output_tokens (#7770)
- Let the omo integration write the Responses dialect (#7890)
- Add keyless CC-Switch provider import with preview, apply and restore (#7935)
- Count snapshot text bytes incrementally (#7957)
- Move integrity scans off the serving thread (#7972)
- Tier role auto-assign candidates by measured capability in the role's task domain (#7624)
- Add opt-in MCP tools for stored Codex queues (#7999)
- Count fragmented NDJSON bytes incrementally (#8015)
- Home ocx sync fans out to linked Children (sync.home-fanout/1) (#8100)
- Orchestrated ocx update plan/apply contract (update.orchestrated/1) (#8103)
- Batch consumed stream chunk removal (#8049)
- List Perch as a reference-only directory entry (#7311)
- Design system v2 — redesigned dashboard, navigation and desktop app (#8105)
Bug Fixes
- Report a timed-out first-party rollback as incomplete (#7781)
- Publish the subscription lane's widest context rung for Grok 4.5-4.7 (#7701)
- Expire idle picker uploads while preserving backpressure (#7784)
- Preserve native Mistral thinking on replay (#7814)
- Preserve bounded ACL failure diagnostics (#7773)
- Preserve append-only client tool discovery on opted-in Responses routes (#7453)
- Frame retained requests before portable compaction checkpoints (#7822)
- Scope cooldown reprobes to reserving request (#7764)
- Honor Retry-After floor and recognize the Cloud Code Assist ToS account ban (#7819)
- Guard the MiniMax stale-roster refresh to official destinations (#7829)
- Forward Qoder CN images through shared coding-agent projection (#7536)
- Verify live Desktop recovery before CLI cold start (#7797)
- Harden long compaction recovery paths with the extended spelling (#7823)
- Expose native Fast selectors with 1M context (#7748)
- Align Claude Code 2.1.280 OAuth profile and isolate session/device IDs (#7838)
- Isolate pooled installation IDs, scrub turn-state on account switch, and align JSON token refresh (#7840)
- Isolate Antigravity session/replay and Cursor H2 pool/JWT sub scope (#7842)
- Harden multi-account pool cooldowns, affinity eviction, and deactivated exclusion (#7844)
- Relay OpenAI tool calls instead of ending on the first sentence (#7599)
- Explain elevated scheduler uninstall failures on Windows (#7825)
- Preserve replay refusal attribution on WebSocket ingress (#7830)
- Deliver upstream raw reasoning to Chat clients without a generation opt-in (#7833)
- Request quota summary with the CLI fingerprint so Argon usage shows (#7804)
- Consolidate multi-account discovery and model-denial routing (#7835)
- Enforce required tools in native combo streams (#7831)
- Reclaim inbound body capacity with a configurable budget (#7428)
- Attest connected-stop preflight reads (#7762)
- Keep pool session affinity across restarts and transient detours (#7828)
- Preserve native source priority behind featured subagent models (#7839)
- Keep native main available after keyring migration (#7774)
- Gate config and Desktop writer phases on config-root ACL settlement (#7826)
- Provide paired authority for compatibility controls (#7775)
- Land ten small jsonc, search, retry, plain-data and stream fixes (#7821)
- Recognize exact case-insensitive media types (#7768)
- Export a known output limit as
maxTokens(#7763) - Preserve captured caller admission scope (#7718)
- Keep captured usage on an invalid negotiated completion (#7849)
- Validate macOS app trust at execution boundaries (#7758)
- Keep replay-refusal attribution through combo failures (#7864)
- Stream completion-stable canonical apply_patch input (#7506)
- Compute pooled windows from held account rows (#7862)
- Restore local routing when a Link Child stops (#7736)
- Hop and cool provider on upstream account quota exhaustion (#7625)
- Avoid quota refresh failures from paused accounts (#7628)
- Reject drive-less rooted Windows path overrides (#7824)
- Recheck live ownership before journal recovery (#7851)
- Disable header-arrival deadline for local upstreams by default (#7472)
- Keep a protected recovery copy before persisting the opencode-free retirement (#7836)
- Preserve service-home authority during recovery (#7154)
- Admit local config writer phases after config-root ACL settlement (#7869)
- Recover interrupted Bun postinstalls on retry (#7898)
- Keep the bun install retry working on macOS bash 3.2 (#7900)
- Avoid repeat ACL propagation for lifecycle roots (#7903)
- Recover interrupted Codex CLI child publication (#7909)
- Retire drained parent ownership and preserve bind scope (#7874)
- Address Windows updater release and observation reviews (#7875)
- Show provider connection and model tests on the served dashboard (#7922)
- Fail native Messages streams that end before message_stop (#7928)
- Parse model variants in linear time (#7938)
- Honor explicit Opus 5.5 reasoning summaries (#7881)
- Report main-pool affinity decisions in request logs (#7883)
- Keep local account cooldowns from quarantining combo targets (#7887)
- Reserve SSH forward ports until handoff and recover lost candidates (#7893)
- Re-arm the atomic writer's ACL timeout memo per destination (#7891)
- Preserve tool safety on translated Messages fallbacks (#7919)
- Drop the include entry xAI rejects (#7911)
- Preserve Muse reset countdown after quota exhaustion (#7730)
- Explain why Antigravity project discovery failed (#7888)
- Keep layout.json under the file-size threshold (#7943)
- Default Moonshot API to K3.1 Pro and retire K2.5 (#7880)
- Send LM Studio one leading system message (#7882)
- Treat headless GUI-domain launchctl 125 as an unreachable domain (#7697) (#7745)
- Fail over when a target rejects a request for context length (#7892)
- Support manual consultations during web search (#7858)
- Keep final Responses events without a newline (#7873)
- Resolve the atomic-write fixture root before matching cleanup paths (#7945)
- Budget hosted fixture phases without weakening contracts (#7946)
- Feed the abort fixture's stdout once (#7948)
- Use a never-allocated PID for the pending-child recovery fixture (#7949)
- Give native passthrough success paths the internal header deadline (#7951)
- Publish the overlap fixture after the recheck budget is spent (#7950)
- Judge protected-tree containment per path component (#7884)
- Apply the caller's paid-combo consent and device fallback policy (#7894)
- Explain upstream request failures (#7936)
- Distinguish install failures from owned deadlines (#7977)
- Keep Kimi K3.1 Pro tool continuations valid (#7944)
- Make per-task ceilings configurable from config and dashboard (#7960)
- Keep Advisor requests cloneable for the retry snapshot (#7981)
- Snapshot ACL failure diagnostics (#7970)
- Explain tracked runtime stop refusals (#7973)
- Decode routed slugs via modelDisplayNames ids (#7979)
- Normalize Codex tool catalogs and include for Meta Muse (#7985)
- Bigint probe identity in runtime preflight; release CC-Switch F3 WAL handles (#7986)
- Skip Meta Muse targets for mandatory tool_choice (#7982)
- Accept CR-delimited Responses events (#7989)
- Omit unsupported Responses encrypted output include (#7988)
- Validate CLI and desktop launcher execution boundaries (#7876)
- Stop Windows ancestor-watch feedback loops (#7976)
- Name the invalid model row and the static-list workaround (#7990)
- Stop scoring an elapsed 5-hour window against a pool account (#7994)
- Retire a pool account's carried 5-hour window when WHAM shows none (#7980)
- Keep web_search native when no sidecar backend can run (#7991)
- Keep the quota report cache when pool readings are only restamped (#7992)
- Promote additional_tools to top-level tools for xAI and strict gateways (#7983)
- Prune generated agents when the Claude integration is turned off (#7993)
- Bound the integrity check wait (#7984) (#7997)
- Await recovery ACL checks in async parent admission (#7931)
- Refuse dashboard restart under a systemd unit OpenCodex does not own (#7996)
- Admit config-root cache writes after the optional config-root ACL flight (#7998)
- Compare file identity with bigint stat (#8019)
- Compare Codex and remote workspace file identity with bigint stat (#8023)
- Compare CLI install and update artifact identity with bigint stat (#8031)
- Exclude Meta for direct hosted tool choices (#8010)
- Honor disable and shutdown during startup sync (#8017)
- Bound CN PNG raster dimensions (#8021)
- Preserve server-issued batch for role suggestion --apply (#8022)
- Strip rejected reasoning toggle from native passthrough (#8025)
- Strip safety_identifier at the canonical ChatGPT forward destination (#8030)
- Support Ultra quota windows and show subscription names (#8055)
- Isolate Pool installation identity per account (#8065)
- Show both 5-hour and weekly meters for Max and Team accounts (#8088)
- Place round-robin conversations on accounts with quota headroom (#8092)
- Honest affinity labels and opt-in request-owned conversation affinity (#8080) (#8096)
- Bind header-less Messages bridge turns to one Codex pool account (carry #8028) (#8094)
- Keep Codex pool session pins across proxy restarts (#8098)
- Refuse links at SQLite store paths on Windows and rebalance CI shards for the new affinity tests (#8102)
- Keep Windows containment refusal at 126; correct the #8100 fan-out test fixture (#8106)
- Make the Windows batch shards green after #8103 (#8109)
- Reject inherited writes at Windows creation parents (#8011)
- Preserve quota-code provenance across wrappers and policy fallback (#8013)
- Honor web-search tool choice scope (#8018)
- Scope tool authority to current turn (#8027)
- Bound canonical patch prefix scanning (#8012)
- Serialize automatic v1 reconciliation with CLI updates (#8014)
- Read Artificial Analysis free model list before sunset (#8112)
- Count lowered hosted tool_search as declared (#8123)
- Retire a pool account's carried monthly window when WHAM shows none (#8120)
- Route local compaction checkpoints (#8119)
- Drop the unsupported output.encrypted_content include on Kimi Code Responses (#8122)
- Report prompt_eval_cached_count as cache-read input (#8124)
- Account for normalized inbound JSON (#8026)
- Require paired dashboard session for CLI updates (#8008)
- Export declared effort ladder and default to Kimi Code (#8126)
- Stop sibling discovery after revocation (#8024)
- Answer uncoded context-window refusals as prompt too long (#8128)
- Attest Codex listener before token injection (#8007)
- Report monthly Coding Plan quota (#8077)
- Keep profile keys OpenCodex does not manage (#8074)
- Report content-filter stops as non-retryable refusals (#8072)
- Avoid double charging live NDJSON buffers (#8047)
- Restore owned integrations before native signal exit (#8036)
- Hold selection ownership through dashboard feature toggles (#8009)
- Keep untyped assistant messages inside their tool-call turn (#8064)
- Unwrap one extra executable freeform body wrapper (#8048)
- Resubmit a finished answer on the completion retry (#8070)
- Fix non-ASCII Codex turn metadata headers (#8040)
- Pin resolved homes in service definitions (#8111)
- 30 s background discovery, still-discovering answer for slow dashboard tests (#8125)
- Emulate structured output instead of refusing it (#8071)
- Serialize uninstall manifest updates under one cross-process lock (#8121)
- Tighten Kiro diagnostics and service log rotation (#8138)
- Remove owned paths relative to the config root (#8141)
- Validate legacy shim restore paths before restoring (#8143)
- Normalize Messages error responses and Anthropic headers (#8153)
- Normalize streamed Messages error events (#8164)
- Normalize direct context overflow errors with parity coverage (#8148)
- Lower ocx envelopes on native v1 compact (#8042) (#8151)
- Preserve pre-output hold across safe WS heartbeats (#8188)
- Pass completion summaries that follow tool results (#8154)
- Keep replayed images within each model's per-request cap (#8174)
- Flatten root tool schemas for Claude chat gateways (#8163)
- Make service definition probes portable (#8201)
- Join repeated tool outputs for one call (#8199)
- Release disposed SOCKS5 readers and timeout closures (#8203)
- Avoid retries for definite context overflow (#8211)
- Include Argon level with thought summaries (#8208)
- Preserve translated system cache boundary (#8212)
- Strip Lite marker from classic search (#8202)
- Report incomplete Anthropic search results (#8210)
- Separate consumer and upstream inactivity (#8213)
- Restore Windows fixture coverage (#8214)
- Preserve adapter body stall status (#8200)
- Isolate Codex profile cases on Windows (#8217)
- Isolate Windows uninstall privilege scenarios (#8218)
- Pair Windows job store route fixture (#8225)
- Use native homes in systemd probe fixtures (#8226)
- List router-known IDs with effective metadata (#8215)
- Prioritize critical credits in quota summary (#8223)
- Validate configuration before stopping services (#8227)
- Rebalance Ubuntu tests across five shards (#8233)
- Preserve default bind identity for guarded stops (#8221)
- Keep Desktop CLI selected when its executable is missing (#8240)
- Report skipped connected children as partial (#8248)
- Defer supervised client restart after apply (#8250)
- Report stale Child connection readiness (#8249)
- Preserve orphan token files for confirmed recovery (#8253)
- Address #8249/#8253 review follow-ups (#8256)
- Use native homes in launchd fixture (#8245)
- Pair Windows CLI update plan session (#8228)
Documentation
- Clarify subagent spawn_agent fill behavior in order hint (#7537)
- Keep the provider configuration reference under the file-size cap (#7856)
- Register and document citation replay coverage (carry #7608) (#7865)
- Generate a client support matrix from the client registries (#7924)
- Lead with one local gateway for every coding tool (#7925)
- Record runtime-verified client results on the support page (#7927)
- Say when the workflow send ceiling is checked (#7987)
- Record #8176 credit lost in #8214's squash (#8219)
Chores
- Open dev at 2.94.0 before releasing 2.93.0 (#7795)
- Take every Bun pin from package.json (#7818)
- Fix ASL server fixture cleanup and budgets (#7778)
- Reserve distinct remote fixture ports (#7820)
- Stop rebinding released loopback ports (#7847)
- Isolate Windows fixture children from the account-wide runtime namespace (#7852)
- Assert the specific refusal gate in the fixture preload tests (#7861)
- Stop restarting the proxy per row in the bearer admission matrix (#7866)
- Isolate the Desktop lifecycle lock in first-party fixtures (#7868)
- Bound frozen installs and retry only deadline stalls (#7870)
- Isolate the remaining Desktop lifecycle-lock fixtures (#7877)
- Tolerate delayed desktop compatibility fixture port release (#7897)
- Copy macOS bundle binary in remote workspace fixture (#7901)
- Expose Windows recovery proof state and drain failed fixtures (#7902)
- Separate recovery PID evidence and budget cold Windows fetches (#7915)
- Fix config-root seed and macOS history-probe fixtures after #7903/#7900 (#7914)
- Partition Windows apply coverage and rebalance hosted shards (#7917)
- Stop racing a 250ms deadline in the Windows Child HTTP success case (#7921)
- Refresh shard weights and restore job-time headroom (#7923)
- Make dead-upstream CONNECT fixture deterministic (#7929)
- Stabilize native recovery fixture compilation (#7930)
- Split suite across four weighted shards (#7926)
- Warm the PowerShell ancestry probe before its timed run (#7885)
- Add offline fixtures for claude-cli schema-constrained output (#7908)
- Expose bounded Windows plan refusal diagnostics (#7937)
- Bump rustls from 0.23.45 to 0.23.46 in /desktop/src-tauri (#7942)
- Cover encrypted Responses tool continuation (#7975)
- Corrupt the index the health query plan actually reads (#7995)
- Corrupt the health index through a cold connection (#8000)
- Assert the cold keyring refusal kind and report its cause (#8001)
- Finalize the F1/F2 fixture statements before cleanup (#8002)
- Name the pinned-port holder when a sibling misses its deadline (#8003)
- Await the admitted provider quota cache write (#8004)
- Report the hardened local-CA ACL in the first-party apply suite (#8016)
- Select injected stat targets by canonical path (#8029)
- Give the Windows apply x64 fixture compile the shared spawn budget (#8032)
- Verify handle closure without racy fd probes (#8058)
- Await sibling startup completion instead of a polling deadline (#8062)
- Fix macOS catalog async fixtures (#8136)
- Security(desktop): bump updater to 2.14.1 and align Rust 1.90 (#8039)
- Honor ownership test platform exclusions on Bun (#8239)
- Retry busy first ownership registrations (#8238)
- Classify read-only config preflight (#8241)
- Give the sync-stop fixture the native CODEX_HOME spelling on Windows (#8265)
- Quarantine hosted Windows CI failures for 2.98.0 (#8264)
Other Changes
- Treat lane=all as a batched dev check, not a per-PR gate (#7855)
- Kiro: drop the private final answer when a real tool call shares the turn (#7434)
- Open dev at 2.95.0 before releasing 2.94.0 (#7934)
- Kiro: log the usage Kiro reports on every wire, and forward combo child usage after commit (#7433)
- Open dev at 2.96.0 before releasing 2.95.0 (#8033)
- Open dev at 2.97.0 before releasing 2.96.0 (#8068)
- Serve an Ollama-compatible inbound API (#8099)
- Normalize upstream error details in request logs and Retry-After advice (#8104)
- Normalize Chat Completions client error bodies (#8108)
- Open dev at 2.98.0 before releasing 2.97.0 (#8135)
- Promote frozen tip 47f9e2d to preview as 2.98.0-preview.20261107 (#8268)
Changelog
Full Changelog: v2.97.0...v2.98.0-preview.20261107
- #7154 fix(update): preserve service-home authority during recovery @luvs01
- #7311 feat(providers): list Perch as a reference-only directory entry @scy7796
- #7346 feat(cli): add
ocx codexlauncher mirroringocx claude@garysassano - #7428 fix(server): reclaim inbound body capacity with a configurable budget @oocheol
- #7433 Kiro: log the usage Kiro reports on every wire, and forward combo child usage after commit @hedging8563
- #7434 Kiro: drop the private final answer when a real tool call shares the turn @hedging8563
- #7453 fix(claude): preserve append-only client tool discovery on opted-in Responses routes @gitrvc-hub
- #7472 fix: disable header-arrival deadline for local upstreams by default @eschcam
- #7506 fix: Stream completion-stable canonical apply_patch input @Platinum-Scripts
- #7529 feat(clients): add T3 Code as an export and integration client @stevyhacker
- #7536 fix(qoder): forward Qoder CN images through shared coding-agent projection @chilung-cgu
- #7537 docs(gui): clarify subagent spawn_agent fill behavior in order hint @chilung-cgu
- #7561 feat(responses): preserve structural tool turns @Platinum-Scripts
- #7586 feat(codex): add confirmed POSIX CLI updates and durable job status @luvs01
- #7593 feat(dashboard): revocable server-side remembered device sessions @x3M3x
- #7596 feat(codex): add proof-bound Windows CLI update planning @luvs01
- #7599 fix(zed): relay OpenAI tool calls instead of ending on the first sentence @andrew05060414
- #7624 feat(codex): tier role auto-assign candidates by measured capability in the role's task domain @LilMGenius
- #7625 fix(router,combos): hop and cool provider on upstream account quota exhaustion @omar391
- #7626 feat(codex): add protected Windows CLI update job storage @luvs01
- #7628 fix(gui): avoid quota refresh failures from paused accounts @chilung-cgu
- #7632 perf(tooling): use Bun 1.4.4 native type checking @luvs01
- #7648 feat(codex): apply Windows CLI updates with owned transactions @luvs01
- #7690 feat(kiro): add IAM Identity Center login to dashboard @martinbcg
- #7693 feat(codex): restore LazyCodex role models from a change history @LilMGenius
- #7701 fix(xai): publish the subscription lane's widest context rung for Grok 4.5-4.7 @andrew05060414
- #7718 fix(advisor): preserve captured caller admission scope @luvs01
- #7719 feat(integrations): refresh connected Hermes configs after catalog changes (#7704) @rrmlima
- #7726 feat(providers): add Runcrate to the free directory @heydryft
- #7730 fix(gui): preserve Muse reset countdown after quota exhaustion @stephen-drew
- #7736 fix(link): restore local routing when a Link Child stops @luvs01
- #7742 feat(providers): test all models of a provider and disable the failures @ljluestc
- #7745 fix(service): treat headless GUI-domain launchctl 125 as an unreachable domain (#7697) @lidge-jun
- #7748 fix(claude): expose native Fast selectors with 1M context @jbamlee
- #7758 fix(codex): validate macOS app trust at execution boundaries @luvs01
- #7760 feat(shadow-call): add per-source interception toggles @robin-bially
- #7762 fix(cli): attest connected-stop preflight reads @luvs01
- #7763 fix(dsh): export a known output limit as
maxTokens@daisylovekris - #7764 fix(combos): scope cooldown reprobes to reserving request @luvs01
- #7766 perf(google): avoid rescanning fragmented SSE records @luvs01
- #7768 fix(responses): recognize exact case-insensitive media types @luvs01
- #7769 feat(claude-desktop): per-client model visibility for the Desktop list @ljluestc
- #7770 feat(responses): complete gracefully on max_output_tokens @omar391
- #7773 fix(windows): preserve bounded ACL failure diagnostics @luvs01
- #7774 fix(codex): keep native main available after keyring migration @luvs01
- #7775 fix(desktop): provide paired authority for compatibility controls @luvs01
- #7778 test(providers): fix ASL server fixture cleanup and budgets @luvs01
- #7781 fix(claude): report a timed-out first-party rollback as incomplete @lidge-jun
- #7784 fix(claude): expire idle picker uploads while preserving backpressure @luvs01
- #7795 chore(release): open dev at 2.94.0 before releasing 2.93.0 @github-actions[bot]
- #7797 fix(startup): verify live Desktop recovery before CLI cold start @luvs01
- #7804 fix(antigravity): request quota summary with the CLI fingerprint so Argon usage shows @junhoi-pk
- #7814 fix(openai-chat): preserve native Mistral thinking on replay @adaurban
- #7817 feat(claude): label routed /v1/models rows from modelDisplayNames @david-wang-0
- #7818 chore(ci): take every Bun pin from package.json @lidge-jun
- #7819 fix(google): honor Retry-After floor and recognize the Cloud Code Assist ToS account ban @lidge-jun
- #7820 test(messaging): reserve distinct remote fixture ports @lidge-jun
- #7821 fix: land ten small jsonc, search, retry, plain-data and stream fixes @lidge-jun
- #7822 fix(responses): frame retained requests before portable compaction checkpoints @lidge-jun
- #7823 fix(windows): harden long compaction recovery paths with the extended spelling @lidge-jun
- #7824 fix(clients): reject drive-less rooted Windows path overrides @lidge-jun
- #7825 fix(service): explain elevated scheduler uninstall failures on Windows @lidge-jun
- #7826 fix(windows): gate config and Desktop writer phases on config-root ACL settlement @lidge-jun
- #7828 fix(anthropic): keep pool session affinity across restarts and transient detours @lidge-jun
- #7829 fix(providers): guard the MiniMax stale-roster refresh to official destinations @lidge-jun
- #7830 fix(logs): preserve replay refusal attribution on WebSocket ingress @lidge-jun
- #7831 fix(responses): enforce required tools in native combo streams @lidge-jun
- #7832 feat(link): Windows Remote Link Children and Child credential/connection attestation @lidge-jun
- #7833 fix(chat): deliver upstream raw reasoning to Chat clients without a generation opt-in @lidge-jun
- #7835 fix(antigravity): consolidate multi-account discovery and model-denial routing @lidge-jun
- #7836 fix(config): keep a protected recovery copy before persisting the opencode-free retirement @lidge-jun
- #7838 fix(anthropic): align Claude Code 2.1.280 OAuth profile and isolate session/device IDs @lidge-jun
- #7839 fix(codex): preserve native source priority behind featured subagent models @lidge-jun
- #7840 fix(codex): isolate pooled installation IDs, scrub turn-state on account switch, and align JSON token refresh @lidge-jun
- #7842 fix(google,cursor): isolate Antigravity session/replay and Cursor H2 pool/JWT sub scope @lidge-jun
- #7844 fix(oauth): harden multi-account pool cooldowns, affinity eviction, and deactivated exclusion @lidge-jun
- #7847 test: stop rebinding released loopback ports @lidge-jun
- #7849 fix(openai-chat): keep captured usage on an invalid negotiated completion @xubenqiang
- #7851 fix(cli): recheck live ownership before journal recovery @lidge-jun
- #7852 test: isolate Windows fixture children from the account-wide runtime namespace @lidge-jun
- #7855 docs(agents): treat lane=all as a batched dev check, not a per-PR gate @lidge-jun
- #7856 docs: keep the provider configuration reference under the file-size cap @lidge-jun
- #7858 fix(advisor): support manual consultations during web search @auroraflux-jhkim
- #7861 test: assert the specific refusal gate in the fixture preload tests @lidge-jun
- #7862 fix(quota-pool): compute pooled windows from held account rows @lidge-jun
- #7864 fix(responses): keep replay-refusal attribution through combo failures @lidge-jun
- #7865 docs(responses): register and document citation replay coverage (carry #7608) @lidge-jun
- #7866 test: stop restarting the proxy per row in the bearer admission matrix @lidge-jun
- #7867 feat(integrations): add opt-in alias naming for Hermes and Command Code exports @lidge-jun
- #7868 test(claude): isolate the Desktop lifecycle lock in first-party fixtures @lidge-jun
- #7869 fix(windows): admit local config writer phases after config-root ACL settlement @lidge-jun
- #7870 ci: bound frozen installs and retry only deadline stalls @lidge-jun
- #7873 fix(sidecars): keep final Responses events without a newline @oocheol
- #7874 fix(restart): retire drained parent ownership and preserve bind scope @luvs01
- #7875 fix(codex): address Windows updater release and observation reviews @luvs01
- #7876 fix(codex): validate CLI and desktop launcher execution boundaries @luvs01
- #7877 test(claude): isolate the remaining Desktop lifecycle-lock fixtures @lidge-jun
- #7880 fix(providers): default Moonshot API to K3.1 Pro and retire K2.5 @lidge-jun
- #7881 fix(anthropic): honor explicit Opus 5.5 reasoning summaries @lidge-jun
- #7882 fix(openai-chat): send LM Studio one leading system message @lidge-jun
- #7883 fix(codex): report main-pool affinity decisions in request logs @lidge-jun
- #7884 fix(test): judge protected-tree containment per path component @lidge-jun
- #7885 test(windows): warm the PowerShell ancestry probe before its timed run @lidge-jun
- #7886 perf(usage): skip Unicode folding for plain ASCII metadata @lidge-jun
- #7887 fix(codex): keep local account cooldowns from quarantining combo targets @lidge-jun
- #7888 fix(oauth): explain why Antigravity project discovery failed @lidge-jun
- #7889 feat(catalog): opt in to omitting disabled native models @lidge-jun
- #7890 feat(clients): let the omo integration write the Responses dialect @lidge-jun
- #7891 fix(config): re-arm the atomic writer's ACL timeout memo per destination @lidge-jun
- #7892 fix(combos): fail over when a target rejects a request for context length @lidge-jun
- #7893 fix(messaging): reserve SSH forward ports until handoff and recover lost candidates @lidge-jun
- #7894 fix(advisor): apply the caller's paid-combo consent and device fallback policy @lidge-jun
- #7897 test: tolerate delayed desktop compatibility fixture port release @lidge-jun
- #7898 fix(ci): recover interrupted Bun postinstalls on retry @lidge-jun
- #7900 fix(ci): keep the bun install retry working on macOS bash 3.2 @lidge-jun
- #7901 test: copy macOS bundle binary in remote workspace fixture @lidge-jun
- #7902 test: expose Windows recovery proof state and drain failed fixtures @lidge-jun
- #7903 fix(windows): avoid repeat ACL propagation for lifecycle roots @lidge-jun
- #7908 test: add offline fixtures for claude-cli schema-constrained output @adirwt852-cloud
- #7909 fix(windows): recover interrupted Codex CLI child publication @lidge-jun
- #7911 fix(openai-responses): drop the include entry xAI rejects @xubenqiang
- #7913 perf(anthropic): scan SSE inspection fragments incrementally @0disoft
- #7914 test: fix config-root seed and macOS history-probe fixtures after #7903/#7900 @lidge-jun
- #7915 test: separate recovery PID evidence and budget cold Windows fetches @lidge-jun
- #7917 test: partition Windows apply coverage and rebalance hosted shards @lidge-jun
- #7919 fix: preserve tool safety on translated Messages fallbacks @lidge-jun
- #7921 test(link): stop racing a 250ms deadline in the Windows Child HTTP success case @lidge-jun
- #7922 fix(gui): show provider connection and model tests on the served dashboard @lidge-jun
- #7923 ci(windows): refresh shard weights and restore job-time headroom @lidge-jun
- #7924 docs: generate a client support matrix from the client registries @lidge-jun
- #7925 docs: lead with one local gateway for every coding tool @lidge-jun
- #7926 ci(macos): split suite across four weighted shards @lidge-jun
- #7927 docs: record runtime-verified client results on the support page @lidge-jun
- #7928 fix(claude): fail native Messages streams that end before message_stop @lidge-jun
- #7929 test(claude): make dead-upstream CONNECT fixture deterministic @lidge-jun
- #7930 test(service): stabilize native recovery fixture compilation @lidge-jun
- #7931 fix(codex): await recovery ACL checks in async parent admission @luvs01
- #7934 chore(release): open dev at 2.95.0 before releasing 2.94.0 @github-actions[bot]
- #7935 feat(provider): add keyless CC-Switch provider import with preview, apply and restore @lidge-jun
- #7936 fix(gui): explain upstream request failures @lidge-jun
- #7937 test(codex): expose bounded Windows plan refusal diagnostics @lidge-jun
- #7938 fix(cursor): parse model variants in linear time @lidge-jun
- #7939 feat(gui): show distinct first-response states on the provider overview @lidge-jun
- #7942 build(deps): bump rustls from 0.23.45 to 0.23.46 in /desktop/src-tauri @dependabot[bot]
- #7943 fix(test-layout): keep layout.json under the file-size threshold @lidge-jun
- #7944 fix(volcengine): keep Kimi K3.1 Pro tool continuations valid @AaronZ345
- #7945 test(windows): resolve the atomic-write fixture root before matching cleanup paths @lidge-jun
- #7946 test(windows): budget hosted fixture phases without weakening contracts @lidge-jun
- #7947 feat(gui): link completion probe failures to recovery, re-verification, and disconnect scope @lidge-jun
- #7948 test(codebuddy): feed the abort fixture's stdout once @lidge-jun
- #7949 test(windows): use a never-allocated PID for the pending-child recovery fixture @lidge-jun
- #7950 test(config): publish the overlap fixture after the recheck budget is spent @lidge-jun
- #7951 test(claude): give native passthrough success paths the internal header deadline @lidge-jun
- #7957 perf(responses): count snapshot text bytes incrementally @0disoft
- #7960 fix(workflow-budget): make per-task ceilings configurable from config and dashboard @robin-bially
- #7970 fix(windows): snapshot ACL failure diagnostics @luvs01
- #7972 perf(history): move integrity scans off the serving thread @luvs01
- #7973 fix(cli): explain tracked runtime stop refusals @luvs01
- #7975 test(xai): cover encrypted Responses tool continuation @Reedtrullz
- #7976 fix(credentials): stop Windows ancestor-watch feedback loops @luvs01
- #7977 fix(ci): distinguish install failures from owned deadlines @luvs01
- #7979 fix(router): decode routed slugs via modelDisplayNames ids @lidge-jun
- #7980 fix(codex): retire a pool account's carried 5-hour window when WHAM shows none @lidge-jun
- #7981 fix(kiro): keep Advisor requests cloneable for the retry snapshot @lidge-jun
- #7982 fix(combo): skip Meta Muse targets for mandatory tool_choice @lidge-jun
- #7983 fix(responses): promote additional_tools to top-level tools for xAI and strict gateways @lidge-jun
- #7985 fix(responses): normalize Codex tool catalogs and include for Meta Muse @lidge-jun
- #7986 fix(windows): bigint probe identity in runtime preflight; release CC-Switch F3 WAL handles @lidge-jun
- #7987 docs(config): say when the workflow send ceiling is checked @lidge-jun
- #7988 fix(azure): omit unsupported Responses encrypted output include @lidge-jun
- #7989 fix(sidecars): accept CR-delimited Responses events @lidge-jun
- #7990 fix(discovery): name the invalid model row and the static-list workaround @lidge-jun
- #7991 fix(claude): keep web_search native when no sidecar backend can run @lidge-jun
- #7992 fix(providers): keep the quota report cache when pool readings are only restamped @lidge-jun
- #7993 fix(claude): prune generated agents when the Claude integration is turned off @lidge-jun
- #7994 fix(codex): stop scoring an elapsed 5-hour window against a pool account @lidge-jun
- #7995 test(history): corrupt the index the health query plan actually reads @lidge-jun
- #7996 fix(update): refuse dashboard restart under a systemd unit OpenCodex does not own @lidge-jun
- #7997 fix(history): bound the integrity check wait (#7984) @lidge-jun
- #7998 fix(windows): admit config-root cache writes after the optional config-root ACL flight @lidge-jun
- #7999 feat(messaging): add opt-in MCP tools for stored Codex queues @HojooonKim
- #8000 test(history): corrupt the health index through a cold connection @lidge-jun
- #8001 test(codex): assert the cold keyring refusal kind and report its cause @lidge-jun
- #8002 test(cc-switch): finalize the F1/F2 fixture statements before cleanup @lidge-jun
- #8003 test(cli): name the pinned-port holder when a sibling misses its deadline @lidge-jun
- #8004 test(anthropic): await the admitted provider quota cache write @lidge-jun
- #8007 fix(cli): attest Codex listener before token injection @luvs01
- #8008 fix(security): require paired dashboard session for CLI updates @luvs01
- #8009 fix(codex): hold selection ownership through dashboard feature toggles @luvs01
- #8010 fix(combo): exclude Meta for direct hosted tool choices @luvs01
- #8011 fix(security): reject inherited writes at Windows creation parents @luvs01
- #8012 fix: bound canonical patch prefix scanning @luvs01
- #8013 fix(responses): preserve quota-code provenance across wrappers and policy fallback @luvs01
- #8014 fix(codex): serialize automatic v1 reconciliation with CLI updates @luvs01
- #8015 perf(ollama): count fragmented NDJSON bytes incrementally @0disoft
- #8016 test(claude): report the hardened local-CA ACL in the first-party apply suite @lidge-jun
- #8017 fix(grok): honor disable and shutdown during startup sync @luvs01
- #8018 fix(advisor): honor web-search tool choice scope @luvs01
- #8019 fix: compare file identity with bigint stat @lidge-jun
- #8021 fix(qoder): bound CN PNG raster dimensions @luvs01
- #8022 fix(cli): preserve server-issued batch for role suggestion --apply @luvs01
- #8023 fix: compare Codex and remote workspace file identity with bigint stat @lidge-jun
- #8024 fix(antigravity): stop sibling discovery after revocation @luvs01
- #8025 fix(responses): strip rejected reasoning toggle from native passthrough @luvs01
- #8026 fix(server): account for normalized inbound JSON @luvs01
- #8027 fix(responses): scope tool authority to current turn @luvs01
- #8029 test: select injected stat targets by canonical path @lidge-jun
- #8030 fix(adapters): strip safety_identifier at the canonical ChatGPT forward destination @harshav167
- #8031 fix: compare CLI install and update artifact identity with bigint stat @lidge-jun
- #8032 test: give the Windows apply x64 fixture compile the shared spawn budget @lidge-jun
- #8033 chore(release): open dev at 2.96.0 before releasing 2.95.0 @github-actions[bot]
- #8036 fix(link): restore owned integrations before native signal exit @luvs01
- #8039 security(desktop): bump updater to 2.14.1 and align Rust 1.90 @luvs01
- #8040 Fix non-ASCII Codex turn metadata headers @visualbridge7188
- #8047 fix(command-code): avoid double charging live NDJSON buffers @0disoft
- #8048 fix(responses): unwrap one extra executable freeform body wrapper @nickdavis
- #8049 perf(devin): batch consumed stream chunk removal @0disoft
- #8055 fix(anthropic): support Ultra quota windows and show subscription names @lidge-jun
- #8058 test(messaging): verify handle closure without racy fd probes @lidge-jun
- #8062 test(cli): await sibling startup completion instead of a polling deadline @lidge-jun
- #8064 fix(responses): keep untyped assistant messages inside their tool-call turn @fec123
- #8065 fix(codex): isolate Pool installation identity per account @lidge-jun
- #8068 chore(release): open dev at 2.97.0 before releasing 2.96.0 @github-actions[bot]
- #8070 fix(kiro): resubmit a finished answer on the completion retry @mushikingh
- #8071 fix(kiro): emulate structured output instead of refusing it @mushikingh
- #8072 fix(kiro): report content-filter stops as non-retryable refusals @mushikingh
- #8074 fix(codex): keep profile keys OpenCodex does not manage @codewith-aditya
- #8077 fix(kimi): report monthly Coding Plan quota @zarv1k
- #8088 fix(anthropic): show both 5-hour and weekly meters for Max and Team accounts @lidge-jun
- #8092 fix(codex): place round-robin conversations on accounts with quota headroom @lidge-jun
- #8094 fix(claude): bind header-less Messages bridge turns to one Codex pool account (carry #8028) @lidge-jun
- #8096 fix(codex): honest affinity labels and opt-in request-owned conversation affinity (#8080) @lidge-jun
- #8098 fix(codex): keep Codex pool session pins across proxy restarts @lidge-jun
- #8099 Serve an Ollama-compatible inbound API @lidge-jun
- #8100 feat(sync): Home ocx sync fans out to linked Children (sync.home-fanout/1) @lidge-jun
- #8102 fix: refuse links at SQLite store paths on Windows and rebalance CI shards for the new affinity tests @lidge-jun
- #8103 feat(update): orchestrated ocx update plan/apply contract (update.orchestrated/1) @lidge-jun
- #8104 Normalize upstream error details in request logs and Retry-After advice @lidge-jun
- #8105 feat(gui): design system v2 — redesigned dashboard, navigation and desktop app @Ingwannu
- #8106 fix(link): keep Windows containment refusal at 126; correct the #8100 fan-out test fixture @lidge-jun
- #8108 Normalize Chat Completions client error bodies @lidge-jun
- #8109 fix(ci): make the Windows batch shards green after #8103 @lidge-jun
- #8111 fix(service): pin resolved homes in service definitions @omar391
- #8112 fix(codex): read Artificial Analysis free model list before sunset @LilMGenius
- #8119 fix(responses): route local compaction checkpoints @lidge-jun
- #8120 fix(codex): retire a pool account's carried monthly window when WHAM shows none @lidge-jun
- #8121 Serialize uninstall manifest updates under one cross-process lock @lidge-jun
- #8122 fix(kimi): drop the unsupported output.encrypted_content include on Kimi Code Responses @lidge-jun
- #8123 fix(responses): count lowered hosted tool_search as declared @lidge-jun
- #8124 fix(ollama): report prompt_eval_cached_count as cache-read input @lidge-jun
- #8125 fix(qoder): 30 s background discovery, still-discovering answer for slow dashboard tests @lidge-jun
- #8126 fix(kimi): export declared effort ladder and default to Kimi Code @lidge-jun
- #8128 fix(claude): answer uncoded context-window refusals as prompt too long @lidge-jun
- #8135 chore(release): open dev at 2.98.0 before releasing 2.97.0 @github-actions[bot]
- #8136 test(diagnostics): fix macOS catalog async fixtures @lidge-jun
- #8138 fix: tighten Kiro diagnostics and service log rotation @lidge-jun
- #8141 fix(config): remove owned paths relative to the config root @lidge-jun
- #8143 fix(codex): validate legacy shim restore paths before restoring @lidge-jun
- #8148 fix(claude): normalize direct context overflow errors with parity coverage @luvs01
- #8151 fix(responses): lower ocx envelopes on native v1 compact (#8042) @Ingwannu
- #8153 fix(messages): normalize Messages error responses and Anthropic headers @lidge-jun
- #8154 fix(terminal-guard): pass completion summaries that follow tool results @yazzang-homelab
- #8163 fix(openai-chat): flatten root tool schemas for Claude chat gateways @lcxhh521
- #8164 fix(messages): normalize streamed Messages error events @lidge-jun
- #8174 fix(mistral): keep replayed images within each model's per-request cap @fontanierh
- #8188 fix(codex): preserve pre-output hold across safe WS heartbeats @jaekwonhong
- #8199 fix(responses): join repeated tool outputs for one call @lidge-jun
- #8200 fix(responses): preserve adapter body stall status @lidge-jun
- #8201 test(service): make service definition probes portable @lidge-jun
- #8202 fix(web-search): strip Lite marker from classic search @lidge-jun
- #8203 fix(transport): release disposed SOCKS5 readers and timeout closures @lidge-jun
- #8208 fix(antigravity): include Argon level with thought summaries @lidge-jun
- #8210 fix(web-search): report incomplete Anthropic search results @lidge-jun
- #8211 fix(claude): avoid retries for definite context overflow @lidge-jun
- #8212 fix(claude): preserve translated system cache boundary @lidge-jun
- #8213 fix(web-search): separate consumer and upstream inactivity @lidge-jun
- #8214 test(messages): restore Windows fixture coverage @lidge-jun
- #8215 fix(models): list router-known IDs with effective metadata @lidge-jun
- #8217 fix(tests): isolate Codex profile cases on Windows @lidge-jun
- #8218 fix(tests): isolate Windows uninstall privilege scenarios @lidge-jun
- #8219 docs(credits): record #8176 credit lost in #8214's squash @lidge-jun
- #8221 fix(cli): preserve default bind identity for guarded stops @lidge-jun
- #8223 fix(gui): prioritize critical credits in quota summary @lidge-jun
- #8225 fix(tests): pair Windows job store route fixture @lidge-jun
- #8226 fix(tests): use native homes in systemd probe fixtures @lidge-jun
- #8227 fix(update): validate configuration before stopping services @lidge-jun
- #8228 fix(tests): pair Windows CLI update plan session @lidge-jun
- #8233 fix(ci): rebalance Ubuntu tests across five shards @lidge-jun
- #8238 test(config): retry busy first ownership registrations @luvs01
- #8239 test(config): honor ownership test platform exclusions on Bun @luvs01
- #8240 fix(cli): keep Desktop CLI selected when its executable is missing @lidge-jun
- #8241 test(update): classify read-only config preflight @lidge-jun
- #8245 fix(tests): use native homes in launchd fixture @lidge-jun
- #8248 fix(sync): report skipped connected children as partial @lidge-jun
- #8249 fix(link): report stale Child connection readiness @lidge-jun
- #8250 fix(sync): defer supervised client restart after apply @lidge-jun
- #8253 fix(link): preserve orphan token files for confirmed recovery @lidge-jun
- #8256 fix(link): address #8249/#8253 review follow-ups @lidge-jun
- #8264 test: quarantine hosted Windows CI failures for 2.98.0 @lidge-jun
- #8265 test(link): give the sync-stop fixture the native CODEX_HOME spelling on Windows @lidge-jun
- #8268 release: promote frozen tip 47f9e2d to preview as 2.98.0-preview.20261107 @lidge-jun
Code signing
Windows binaries follow the code signing policy.
Free code signing provided by SignPath.io, certificate by SignPath Foundation.