Immutable
release. Only release title and notes can be modified.
Published to npm as @bitkyc08/opencodex@2.61.0 with dist-tag latest.
New Features
- Menu bar companion + widget, with CodexBar-style usage monitor integrated into Usage (#5196)
- Land the desktop application stack on dev (#5318)
- Land the local intercept chain on dev (#5319)
- Add StepFun provider support (#5313)
- Generate every app icon from one SVG source (#5329)
- Draw the app icon and menu bar mark from the brand artwork (#5355)
- Render the dashboard and documentation favicons from the app icon vector (#5361)
- Write the ZCode provider store the client actually reads (#5380)
- Expose ocx resolve and ocx stop --json for embedding shells (#5383)
- Dual Linux updater targets and the installed-artifact release gate (#5391)
- Verify everything before publication and add a resumable publish path (#5405)
- Open a usage popup from the tray icon (#5452)
- Native macOS usage panel and release regression fixes (#5490)
Bug Fixes
- Request-scoped transport pinning and managed-write symlink refusal (#5264)
- Output budgets, adapter queue memory, and per-key model policy (#5265)
- Stop a stopped proxy from locking users out of Codex sign-in (#5267)
- Preserve caller constraints on the request path (#5211, #5210, #5212, #5213) (#5271)
- Bind account-scoped evidence to credential generation and add privacy-bounded cache diagnostics (#5268)
- Close the silent paths into a Codex lockout (#5288)
- Resolve combos by what they are, and check the documented discovery limits (#5216, #5215) (#5294)
- Apply per-key model and provider scope to the unrouted data planes (#5290)
- Keep Apple SD Gothic Neo behind San Francisco (#5154)
- Fold the developer role unless a destination records that it accepts it (#5334)
- Record that the Chat conformance destination accepts the developer role (#5341)
- Make the build report its own state (#5327)
- Say that first-party exists when gateway is applied (#5328)
- Give the widget an entry point and sign it at release time (#5339)
- Admit SOCKS scheme variables on both sides of the proxy decision (#5269)
- Report the measured cache hit rate and make the usage models table readable (#5333)
- Complete the provider-table transition on a paginated openai home (#5331)
- Make a failed browser launch and a failed account refresh visible (#5261) (#5332)
- Sign the WidgetKit extension with the Developer ID (#5345)
- Keep the alpha channel every generated icon needs (#5356)
- Honour a recorded developer-role setting on the native Chat route (#5372)
- Enforce the request's tool selection after a response repair (#5376)
- One resend budget across composed recovery legs (#5378)
- Answer an ambiguous resend the same way on every HTTP surface (#5377)
- Keep a mid-conversation instruction in its slot on the translated Chat inbound (#5381)
- Pipeline correctness for Windows packaging, checksums, publication ordering, and process identity (#5388)
- Share explicit reasoning wire policy (#5398)
- Preserve tool identity through response restoration (#5397)
- Preserve replay refusal on routed Claude Messages (#5396)
- Make the Windows shell load its own origin and hide the console (#5399)
- Replace the platform dialogs the desktop webview cannot draw (#5387)
- Preserve legacy selector grammar (#5401)
- K2.8 registry refresh — adjustable thinking, 1M context, kimi-for-coding default (#5403)
- Let the bootstrap surface stay silent until it has something to report (#5412)
- Keep one local bundle format from destroying the rest (#5410)
- Warn only for proven stale app servers (#5394)
- Repair exec_command input wrappers (#5395)
- Close ownership mutation races (#5426)
- Probe endpoint liveness in-process so the standalone resolve does not fork execPath (#5418)
- Ship the startup surface as one page the policy can name (#5445)
- Let the tray's left click reach the usage popup (#5462)
- Make the startup surface unable to wait forever (#5451)
- Preserve permission enum in normalized errors (#5243)
- Retain committed gateway state after cleanup failure (#5519)
- Carry verified checksum and signature repair (#5546)
- Carry Windows checksum record support (#5552)
- Carry the draft-then-publish release fix to main (#5558)
Documentation
- Record the 2.60.0 regression, promotion and publication run (#5251)
- Open the meaning-preservation and request-scoped safety batch (#5257)
- Open phase 2 of the post-2.60.0 consolidation batch (#5259)
- Open the Codex sign-in lockout incident lane (#5263)
- Open the round 2 follow-up unit (#5325)
- Close the round-2 follow-up unit (#5360)
- Close the brand icon unit with its on-screen and CI record (#5364)
- Open the cross-path contract unit for the next release (#5371)
- Bind lane ownership, ordering and acceptance for the cross-path unit (#5379)
- One developer-role policy in the Chat contract, the reference and the translations (#5373)
- Close the cross-path contract unit with its landed record (#5382)
- Record the post-landing verification of the cross-path unit (#5390)
- Open the remaining-seams unit for the next release (#5392)
- Close the remaining-seams unit with its landed record (#5411)
- Fold the desktop app into a beta section and record install locations (#5417)
- Land the app runtime ownership record and close the unit (#5467)
Chores
- Prove hung-probe cleanup behaviorally (#5258)
- Register the StepFun provider test in both layout maps (#5335)
- Declare the dangling-toolcalls destination accepts the developer role (#5344)
- Declare the inline-document destination accepts the developer role (#5346)
- Keep unsigned verification out of updater signing (#5338)
- Assert the executable the app bundle declares (#5351)
- Locate the signing keychain steps by what they run (#5353)
- Judge the paginated-history transition by conversation destination (#5375)
- Stop paying for eight route snapshots in the #848 provenance test (#5402)
- Take the asset basename the way the platform spells it (#5404)
- Derive the release-verify fixture's signed set from the updater table (#5425)
- Bound ordinary macOS shard process lifetimes (#5520)
- Enable Linux package diagnostics on main (#5524)
- Retrigger main release verification (#5534)
Other Changes
- Open dev at 2.61.0 before releasing 2.60.0 (#5247)
- One stage, cause and resend vocabulary for a failed request (#5266)
- Make the logs page, the ledger and the exporter agree (#5300)
- Per-provider outbound egress: direct, inherit, HTTP(S) and SOCKS5 per provider (#5289)
- Rework #4942 and #4989 into one ambiguous-resend gate with one grant per request (#5342)
- Derive the four telemetry pull requests from the landed recorder (#5347)
- Make background-service runtime ownership durable, and stop every path that would undo it (#5386)
- Close the review findings on runtime ownership: one install-state contract, locked resolution, atomic replace (#5400)
- Desktop shell: one exit path, one startup surface and a real tray probe (#5384)
- Harden durable runtime ownership against stale consent and unsafe replacement (#5406)
- Promote native macOS tray candidate to main 2.61.0 (#5510)
- Fix stable platform packaging (#5528)
- Carry native sidecar packaging repair (#5532)
- Carry lipo verification fix (#5537)
Changelog
Full Changelog: v2.60.0...v2.61.0
- #5154 fix(gui): keep Apple SD Gothic Neo behind San Francisco @stleamist
- #5196 feat(macos): menu bar companion + widget, with CodexBar-style usage monitor integrated into Usage @devin-ai-integration[bot]
- #5243 fix(google): preserve permission enum in normalized errors @luvs01
- #5247 chore(release): open dev at 2.61.0 before releasing 2.60.0 @github-actions[bot]
- #5251 docs(devlog): record the 2.60.0 regression, promotion and publication run @lidge-jun
- #5257 docs(devlog): open the meaning-preservation and request-scoped safety batch @lidge-jun
- #5258 test(tray): prove hung-probe cleanup behaviorally @ahmedfrawelo
- #5259 docs(devlog): open phase 2 of the post-2.60.0 consolidation batch @lidge-jun
- #5263 docs(devlog): open the Codex sign-in lockout incident lane @lidge-jun
- #5264 fix(security): request-scoped transport pinning and managed-write symlink refusal @lidge-jun
- #5265 fix(adapters,server): output budgets, adapter queue memory, and per-key model policy @lidge-jun
- #5266 One stage, cause and resend vocabulary for a failed request @lidge-jun
- #5267 fix(codex): stop a stopped proxy from locking users out of Codex sign-in @lidge-jun
- #5268 fix(codex,usage): bind account-scoped evidence to credential generation and add privacy-bounded cache diagnostics @lidge-jun
- #5269 fix(transport): admit SOCKS scheme variables on both sides of the proxy decision @lidge-jun
- #5271 fix: preserve caller constraints on the request path (#5211, #5210, #5212, #5213) @lidge-jun
- #5288 fix(codex): close the silent paths into a Codex lockout @lidge-jun
- #5289 Per-provider outbound egress: direct, inherit, HTTP(S) and SOCKS5 per provider @lidge-jun
- #5290 fix(server): apply per-key model and provider scope to the unrouted data planes @lidge-jun
- #5294 fix: resolve combos by what they are, and check the documented discovery limits (#5216, #5215) @lidge-jun
- #5300 Make the logs page, the ledger and the exporter agree @lidge-jun
- #5313 feat(provider): add StepFun provider support @Flowershangfromthebranches
- #5318 feat(desktop): land the desktop application stack on dev @lidge-jun
- #5319 feat(claude-desktop): land the local intercept chain on dev @lidge-jun
- #5325 docs(devlog): open the round 2 follow-up unit @lidge-jun
- #5327 fix(desktop,cli): make the build report its own state @lidge-jun
- #5328 fix(claude-desktop): say that first-party exists when gateway is applied @lidge-jun
- #5329 feat(desktop): generate every app icon from one SVG source @lidge-jun
- #5331 fix(codex): complete the provider-table transition on a paginated openai home @lidge-jun
- #5332 fix: make a failed browser launch and a failed account refresh visible (#5261) @lidge-jun
- #5333 fix(gui): report the measured cache hit rate and make the usage models table readable @lidge-jun
- #5334 fix(openai-chat): fold the developer role unless a destination records that it accepts it @lidge-jun
- #5335 test(layout): register the StepFun provider test in both layout maps @lidge-jun
- #5338 ci(desktop): keep unsigned verification out of updater signing @lidge-jun
- #5339 fix(desktop): give the widget an entry point and sign it at release time @lidge-jun
- #5341 fix(lab): record that the Chat conformance destination accepts the developer role @lidge-jun
- #5342 Rework #4942 and #4989 into one ambiguous-resend gate with one grant per request @lidge-jun
- #5344 test(openai-chat): declare the dangling-toolcalls destination accepts the developer role @lidge-jun
- #5345 fix(desktop,release): sign the WidgetKit extension with the Developer ID @lidge-jun
- #5346 test(responses): declare the inline-document destination accepts the developer role @lidge-jun
- #5347 Derive the four telemetry pull requests from the landed recorder @lidge-jun
- #5351 ci(desktop): assert the executable the app bundle declares @lidge-jun
- #5353 test(release): locate the signing keychain steps by what they run @lidge-jun
- #5355 feat(desktop): draw the app icon and menu bar mark from the brand artwork @lidge-jun
- #5356 fix(desktop): keep the alpha channel every generated icon needs @lidge-jun
- #5360 docs(devlog): close the round-2 follow-up unit @lidge-jun
- #5361 feat(brand): render the dashboard and documentation favicons from the app icon vector @lidge-jun
- #5364 docs(devlog): close the brand icon unit with its on-screen and CI record @lidge-jun
- #5371 docs(devlog): open the cross-path contract unit for the next release @lidge-jun
- #5372 fix(chat): honour a recorded developer-role setting on the native Chat route @lidge-jun
- #5373 docs: one developer-role policy in the Chat contract, the reference and the translations @lidge-jun
- #5375 test(codex): judge the paginated-history transition by conversation destination @lidge-jun
- #5376 fix(server,xai): enforce the request's tool selection after a response repair @lidge-jun
- #5377 fix(transports): answer an ambiguous resend the same way on every HTTP surface @lidge-jun
- #5378 fix(runtime): one resend budget across composed recovery legs @lidge-jun
- #5379 docs(devlog): bind lane ownership, ordering and acceptance for the cross-path unit @lidge-jun
- #5380 feat(integrations): write the ZCode provider store the client actually reads @lidge-jun
- #5381 fix(chat): keep a mid-conversation instruction in its slot on the translated Chat inbound @lidge-jun
- #5382 docs(devlog): close the cross-path contract unit with its landed record @lidge-jun
- #5383 feat(cli): expose ocx resolve and ocx stop --json for embedding shells @lidge-jun
- #5384 Desktop shell: one exit path, one startup surface and a real tray probe @lidge-jun
- #5386 Make background-service runtime ownership durable, and stop every path that would undo it @lidge-jun
- #5387 fix(gui): replace the platform dialogs the desktop webview cannot draw @lidge-jun
- #5388 fix(release): pipeline correctness for Windows packaging, checksums, publication ordering, and process identity @lidge-jun
- #5390 docs(devlog): record the post-landing verification of the cross-path unit @lidge-jun
- #5391 feat(desktop): dual Linux updater targets and the installed-artifact release gate @lidge-jun
- #5392 docs(devlog): open the remaining-seams unit for the next release @lidge-jun
- #5394 fix(cli): warn only for proven stale app servers @Ingwannu
- #5395 fix(responses): repair exec_command input wrappers @Ingwannu
- #5396 fix(server): preserve replay refusal on routed Claude Messages @lidge-jun
- #5397 Preserve tool identity through response restoration @lidge-jun
- #5398 fix(chat): share explicit reasoning wire policy @lidge-jun
- #5399 fix(desktop): make the Windows shell load its own origin and hide the console @devin-ai-integration[bot]
- #5400 Close the review findings on runtime ownership: one install-state contract, locked resolution, atomic replace @lidge-jun
- #5401 fix(integrations): preserve legacy selector grammar @lidge-jun
- #5402 test(server): stop paying for eight route snapshots in the #848 provenance test @lidge-jun
- #5403 fix(kimi): K2.8 registry refresh — adjustable thinking, 1M context, kimi-for-coding default @yuanyuanlove
- #5404 test(release): take the asset basename the way the platform spells it @lidge-jun
- #5405 feat(release): verify everything before publication and add a resumable publish path @lidge-jun
- #5406 Harden durable runtime ownership against stale consent and unsafe replacement @lidge-jun
- #5410 fix(desktop): keep one local bundle format from destroying the rest @lidge-jun
- #5411 docs(devlog): close the remaining-seams unit with its landed record @lidge-jun
- #5412 fix(desktop): let the bootstrap surface stay silent until it has something to report @lidge-jun
- #5417 docs: fold the desktop app into a beta section and record install locations @lidge-jun
- #5418 fix(cli): probe endpoint liveness in-process so the standalone resolve does not fork execPath @devin-ai-integration[bot]
- #5425 test(ci): derive the release-verify fixture's signed set from the updater table @lidge-jun
- #5426 fix(runtime): close ownership mutation races @lidge-jun
- #5445 fix(desktop): ship the startup surface as one page the policy can name @lidge-jun
- #5451 fix(desktop): make the startup surface unable to wait forever @lidge-jun
- #5452 feat(desktop): open a usage popup from the tray icon @lidge-jun
- #5462 fix(desktop): let the tray's left click reach the usage popup @lidge-jun
- #5467 docs(devlog): land the app runtime ownership record and close the unit @lidge-jun
- #5490 feat(desktop): native macOS usage panel and release regression fixes @lidge-jun
- #5510 release: promote native macOS tray candidate to main 2.61.0 @lidge-jun
- #5519 fix(claude): retain committed gateway state after cleanup failure @lidge-jun
- #5520 ci: bound ordinary macOS shard process lifetimes @lidge-jun
- #5524 release: enable Linux package diagnostics on main @lidge-jun
- #5528 release: fix stable platform packaging @lidge-jun
- #5532 release(main): carry native sidecar packaging repair @lidge-jun
- #5534 chore(ci): retrigger main release verification @lidge-jun
- #5537 release(main): carry lipo verification fix @lidge-jun
- #5546 release(main): carry verified checksum and signature repair @lidge-jun
- #5552 release(main): carry Windows checksum record support @lidge-jun
- #5558 fix(release): carry the draft-then-publish release fix to main @lidge-jun