Published to npm as @bitkyc08/opencodex@2.8.0 with dist-tag latest.
What's Changed
New Features
- feat(providers): add bounded model discovery contract by @olddonkey in #652
- perf(gui): progressive dashboard paint and Startup safety CLS by @Wibias in #740
Bug Fixes
- fix(responses): tell TLS hostname mismatches apart from an unreachable provider by @lidge-jun in #575
- fix(claude): accept data-only Responses SSE (#700) by @snowyukitty in #711
- fix(cursor): add kimi-k3 with low/high/max effort tiers by @koopmannleon19977-cmyk in #646
- fix(ci): credit takeover authors and exempt stacked PR bases by @Wibias in #742
- fix(catalog): single-flight gather, prewarm, and readable slash aliases by @Wibias in #738
- fix(gui): gate Codex pool writes until hydrated and ignore stale strategy polls by @Wibias in #739
- fix(gui): denser Storage, API Access, Subagents, Usage, and Claude layouts by @Wibias in #741
- fix(update): tolerate late proxy readiness by @luvs01 in #737
- fix(responses): reject expired forward continuations by @LeoWang331 in #749
- fix(claude): version slash/tilde aliases under claude-ocx2- by @Wibias in #761
- fix(openai-chat): complete streams that end after output without terminal by @Wibias in #773
- fix(providers): honour Ollama private-network default during discovery by @Wibias in #775
- fix(cli): doctor warns on empty provider apiKey env refs by @Wibias in #778
Chores
- test(storage): give the policy suite an explicit harness budget by @lidge-jun in #732
- Revert "fix(openai-chat): complete streams that end after output without terminal" by @Wibias in #792
New Contributors
- @koopmannleon19977-cmyk made their first contribution in #646
- @luvs01 made their first contribution in #737
Commits
- release: v2.8.0 (1adad35)
- Merge pull request #778 from lidge-jun/fix/762-doctor-apikey (afe2aa3)
- Merge pull request #775 from lidge-jun/fix/758-ollama-discovery-policy (c3be57f)
- fix(windows): resolve PATH whatever casing the child was handed (371aa57)
- fix(windows): route every gh and release command through the shared launcher (0af17fb)
- test(gui): cover the runtime-reported shadow-call model set (d12fb7d)
- docs: describe the shadow-call model set as a set (e74de37)
- fix(gui): render the intercepted models the runtime reports (c41aed9)
- refactor(shadow-call): give the intercepted model set one home (7d9d260)
- refactor(release): reuse the shared win-exec launcher (f23e446)
- fix(scripts): derive harness validator bounds instead of hard-coding them (0dfd3ae)
- feat(scripts): build the macOS RSS retention measurement harness (ba0bd0a)
- fix(ci): repair the three failures the Windows panic was hiding (3569242)
- docs(plan): validate the sampler on workload runs too (c300c6f)
- docs(plan): fix the harness verdict logic the third audit caught (6c8ce5c)
- docs(plan): rebuild the harness spec after two failed audits (0449802)
- fix(storage): wait for storage workers to exit before the test file boundary (1a46299)
- docs(plan): fold the five audit blockers back into the RSS unit (c777c8e)
- feat(gui): move delegation settings onto the sub-agents page (8f53fee)
- fix(gui): clear the two React Doctor findings blocking the push gate (4c7a8ea)
- docs(plan): open the macOS RSS retention unit with measured evidence (4c8bc61)
- fix(test): unblock the pre-push gate on two stale contract assertions (5dee96b)
- fix(server): stop naming the write primitive in a route comment (e677dad)
- docs(devlog): close WP6 criterion 7 with a live spawn and its control (ba22ffd)
- fix: update OpenAI Fast pricing multipliers (df18d1e)
- feat(catalog): let routed models serve as V2 subagents (option B) (a86da26)
- docs(plan): record the list caps, the sticky header retry and the cache numbers (87afec5)
- fix(test): stop tests from ever writing the real OpenCodex home (9b01323)
- fix(gui): cap the two long lists without trapping the wheel (87681e5)
- docs(structure): close the route coverage gap and record the unit outcome (62ac81d)
- docs(structure): complete the workflow map and fix the tier backup rule (940c83b)
- docs(structure): document the management route areas the doc had skipped (1bffc28)
- docs(structure): reverse the Claude Desktop path claim and document both sidecar backends (830cf7b)
- docs(plan): record wp7 as PARTIAL and what the doc audit uncovered (b359d4f)
- test(api): make the modality clear-path test actually prove clearing (6e32cb4)
- fix(api): reject non-string input modalities instead of filtering them out (299f35d)
- fix(api): reject out-of-enum input modalities at the custom-model routes (7a041e2)
- docs(structure): split the two injection forms and correct the catalog doc (2fdf042)
- docs(cli): document every per-model ocx models operation (a3c3220)
- docs(structure): correct the overview and runtime maps (077af3f)
- docs(plan): record wp8, including the claim the audit refuted (f34b955)
- test(catalog): pin the #759 incident sequence at the sync write boundary (2e7fc00)
- docs(plan): record the wp6 alignment measurements and the kept descriptions (df1e912)
- fix(gui): centre the auto-switch toggle and name the rotation strategy field (cc27464)
- docs(plan): record the measured quota duplication and its fix (1dd481a)
- perf(gui): read provider quotas once per cold load, not once per provider (6d13736)
- fix(gui): uncap the Usage model and provider tables (ed19e1d)
- docs(plan): record the hidden-tab poll gate and the tab layout revert (d211970)
- fix(gui): drop the duplicated Usage section heading (ea918a9)
- fix(gui): make Usage, Storage and Subagents readable by scrolling again (5aa51b9)
- perf(gui): stop passive polling in a hidden tab, with an opt-out (aa44baf)
- test(codex): pin the feature-flag delegation boundary (8a857df)
- plan(structure): map the SOT refresh with a measured drift inventory (b6ed7eb)
- feat(server): sideband URL policy hardening with a bounded override knob (5759362)
- plan(gui): fold the wp4 audit into the revalidation policy (ff19e40)
- feat(server,cli): expose agents.enabled, max_depth, subagent_developer_instructions via /api/v2 and ocx v2 status (6c61d31)
- plan(gui): sidebar star + update orbs, startup-chip sync, panel copy (4055491)
- feat(codex): config-surface parity for agents.enabled, agents.max_depth, subagent_developer_instructions (f83ae9d)
- test(gui): assert the delegation copy contract by meaning, not by sentence (7391748)
- test(server): prove the sidebar routes answer and leak nothing (363752a)
- docs(plan): close the devlog publication unit against what actually landed (13c36cd)
- feat(gui): add sidebar star and update orbs (b6a2d28)
- fix(gui): close the WP3 audit blockers and stop the startup chip waiting 30s (e64a00e)
- fix(codex): translate the v1/v2 thread limit across the root-agent slot (06ad07c)
- test(bun-runtime): resolve the temp root so macOS paths compare equal (f81e98a)
- fix(runtime): normalize Bun override path (7fe367e)
- refactor(launcher): share Bun binary validation (8fc20a4)
- fix(launcher): harden override handling (77707ea)
- fix(launcher): honor OPENCODEX_BUN_PATH (4985402)
- fix(test): address runtime cache review feedback (ec32bb6)
- fix(catalog): stop respawning the codex --version probe on every catalog read (9e61371)
- docs(plan): stop quoting the sentinel values in the landing plan (f897e81)
- fix(providers): harden discovery path and test isolation (fd19330)
- fix(providers): harden discovery contract cleanup (860f216)
- fix(tray): isolate Windows tray host from proxy sockets (2ca8375)
- docs(cli): describe Windows service status (e428058)
- fix(service): make Windows status locale independent (1d9e196)
- fix(privacy): stop the scanner flagging its own publication proof (50cbf51)
- refactor(devlog): publish devlog as tracked files and retire the private submodule (8ae52e4)
- feat(gui): finish the loading contract on Storage, API keys and Models (e45f6f1)
- chore(devlog): advance the plan submodule to a9cd169 (deb1bf5)
- feat(gui): put eight more surfaces on the shared loading contract (fe86368)
- chore(devlog): advance the plan submodule to 5b7ab2d (4477e06)
- feat(gui): migrate Grok onto the shared loading contract (bd1771c)
- feat(gui): make slow data loads visible with a shared loading contract (960c53d)
- chore(devlog): advance the plan submodule to 5f35c78 (b4889c4)
- chore(devlog): advance the plan submodule to 66fe483 (11d1444)
- Merge pull request #792 from lidge-jun/revert-773-fix/735-openai-chat-eof (440f363)
- Revert "fix(openai-chat): complete streams that end after output without terminal" (2093bac)
- Merge pull request #773 from Wibias/fix/735-openai-chat-eof (5718d44)
- fix(openai-chat): fail closed on EOF with pending tool calls (38173bf)
- fix: address issue #762 (8d48d1e)
- fix: address issue #758 (51f9546)
- fix: address issue #735 (cc81b9c)
- Merge pull request #761 from Wibias/fix/alias-versioned-tilde-encoding (be177ea)
- docs(claude): sync v1/v2 alias grammar across locales (0afaf7f)
- fix(claude): version slash/tilde aliases under claude-ocx2- (47a7a91)
- merge: back-merge main (v2.7.43) into dev (350a07b)
- merge: PR #737 — tolerate late proxy readiness (#720) (62e9376)
- merge: PR #749 — fail closed on expired forward replay state (#702) (6be54f5)
- test(scripts): name CPU contention instead of letting it look like a hang (cf30878)
- chore(devlog): advance the plan submodule to 8f2d930 (d757183)
- fix(gui): restore the dev CI baseline (959e9ff)
- fix(responses): fail closed on expired forward replay state (6521518)
- fix(ci): repair the prepush gate after the 260730 GUI stack (d0141e7)
- chore(devlog): advance the plan submodule to 7dffc79 (0b86278)
- test(claude): shorten the dotenv fixture key so privacy:scan stays green (15fd1b3)
- chore(devlog): advance the plan submodule to f76fc29 (c402994)
- fix(web-search): carry raw reasoning into the replayed web_search turn (89931a1)
- fix(claude): stop a project dotenv from overriding claude.ai subscription auth (d5b9338)
- Merge pull request #741 from lidge-jun/stack/gui-dense-workspaces (e449521)
- Merge pull request #740 from lidge-jun/stack/gui-dashboard-startup-perf (085f8f1)
- Merge pull request #739 from lidge-jun/stack/gui-codex-pool-hydration (a780281)
- Merge pull request #738 from Wibias/stack/gui-catalog-cold-load (9d94c92)
- fix(gui): address CodeRabbit follow-ups on dense workspaces (f0acc36)
- fix(gui): clear react-doctor warnings on dense workspaces (27e3762)
- fix(gui): address Codex review on dense workspaces stack (904e670)
- fix(gui): clear react-doctor warnings on dashboard stack (a2072d5)
- fix(gui): address review findings on dashboard/startup stack (7481715)
- perf(gui): progressive dashboard paint and Startup safety CLS (ee3eaa2)
- fix(gui): address remaining pool hydration review nits (297ceef)
- fix(gui): address Codex review on pool hydration stack (fa443c0)
- fix(gui): gate Codex pool writes until hydrated and ignore stale strategy polls (c4c98c0)
- fix(catalog): include visibility filters in gather flight key (ca05c57)
- fix(ci): credit takeover authors and exempt stacked PR bases (#742) (45e9dc4)
- docs: sync ~s/~t alias grammar in zh-cn/ja/ru claude-code guides (772ee11)
- test(cli): cover catalog prewarm on handleStart bind (ee06d6b)
- fix(catalog): harden alias encoding and gather single-flight identity (8ac098a)
- fix(catalog): single-flight gather, prewarm, and readable slash aliases (818fcd8)
- fix(update): tolerate late proxy readiness (11069f0)
- chore(devlog): advance the plan submodule to 6c74ce6 (0666b41)
- chore(devlog): advance the plan submodule to eaf4786 (4da468c)
- test: stop two suites from sharing one fixture home (622cdc0)
- chore(devlog): advance the plan submodule to bb5c7de (616ea99)
- test(storage): give the policy suite an explicit harness budget (#732) (60e1004)
- chore(metadata): resync jawcode bundle, re-block hy3-preview, add a drift guard (67c731e)
- chore(scripts): let jawcode metadata carry video input (ef805c3)
- fix(cursor): add kimi-k3 with low/high/max effort tiers (#646) (275345a)
- test(kiro): clear the platform store between seeds, not just the macOS one (bfacc3b)
- fix(kiro): make native-store resolution platform-correct off macOS (#718) (8f499a4)
- chore(devlog): advance the plan submodule to 7dff38d (a40689c)
- test(kiro): use an allowlisted home fixture in the macOS path case (e4153e1)
- test(ci): follow the test job's raised timeout ceiling (a76bf41)
- chore(devlog): advance the plan submodule to bb30ba6 (05169df)
- feat(service): offer the star prompt on hand-typed service install (3cb2462)
- fix(cli): keep the selected confirm choice readable on any theme (d2f9863)
- ci: give the Windows test job real timeout headroom (#717) (5bf66df)
- fix(kiro): stop proxy filler from preceding a mid-turn steer (12dbec3)
- fix(kiro): discover the Windows kiro-cli token DB on login import (#710) (c7fe9e8)
- test(kiro): cover the real upstream shape that omits tokenUsage (47cc9a5)
- fix(claude): accept data-only Responses SSE (#711) (d24c523)
- feat(providers): add bounded model discovery contract (#652) (48f2e83)
- fix(responses): tell TLS hostname mismatches apart from an unreachable provider (#575) (fff8c36)
- docs(structure): point devlog evidence references at _fin (c4b05fa)
- feat(gui): show the active-context checkpoint on Kiro log rows (ee69abf)
- fix(usage): persist the absolute context checkpoint in usage rows (e3f4068)
- docs: require primary-source evidence for canonical provider presets (aa22207)
- chore: move devlog to a private submodule and require scratch-only security notes (f8d1dc1)
- docs: match the dev2-go retirement record to the executed cleanup (010d340)
- chore: retire the dev2-go Go native-port line (2230914)
Full Changelog: v2.7.43...v2.8.0