Immutable
release. Only release title and notes can be modified.
Published to npm as @bitkyc08/opencodex@2.50.0 with dist-tag latest.
New Features
- Surface and filter the routed account label per request (#4134)
- Make the inbound body admission limit configurable (#4138)
- Report an explicit account plan field for OAuth providers (#4146)
- Let an operator opt out of email masking (#4160)
- Classify discovered model pricing and filter free models (#4156)
- Show an estimated decode rate alongside end-to-end throughput (#4166)
- Mark quota-exhausted models and combos inactive (#4165)
Bug Fixes
- Attribute Spark 5h header windows to the model limit, not the account short slot (#4128)
- Report operator-owned root routing truthfully (#4114)
- Classify non-streaming provider input overflow (#4127)
- Allow 90 seconds for Codex WebSocket response prelude (#4084)
- Restore AI Studio model discovery (#4068)
- Recover encrypted agent tasks on mid-thread model switches (#4135)
- Persist a terminal validation verdict for a revoked pool grant (#4140)
- Opt-in hosted web-search bridge for the key-auth Responses passthrough (#4142)
- Defer validation for quota-exhausted account registration (#3848)
- Classify a hopping 413 when the combo exhausts its targets (#4150)
- Let a combo shadow-call target enter the failover loop (#4157)
- Keep mid-conversation system messages in the timeline (#4161)
- Export reasoning configuration for thought-capable models (#4153)
- Stop the test suite from mutating a live service manager (#4152)
- Recover a stale launchd job with bootout before load (#4164)
- Explain the discovery dependency when model sync fails (#4158)
Documentation
- Move the closed Spark short-quota unit to _fin (#4132)
- Document the private follow-up path for pending reports (#4133)
- Explain the opencode-free Zen lock-in instead of leaking MissingSessionID (#4136)
- Post-2.49 reconciliation — 101 units to _fin + scope-cleanup records (#4125)
- Plan the post-2.49 round-2 two-lane delivery (#4155)
- Record the round-2 landings, decisions, and blockers (#4162)
- Resync every non-English README and gate them against drift (#4151)
- Record the #4147 and #3859 landings and the #4141 unblock (#4163)
- Close the round-2 record at the screenshot gate (#4168)
- Record the Lane B landing and the screenshot-gate waiver (#4180)
- Cursor ACP -> OpenCodex feasibility investigation (#4186)
Other Changes
- Open dev at 2.50.0 before releasing 2.49.0 (#4115)
- Promote verified 2.50.0 product tree to main (#4195)
Changelog
Full Changelog: v2.49.0...v2.50.0
- #3848 fix(codex): defer validation for quota-exhausted account registration @shaun0927
- #4068 fix(google): restore AI Studio model discovery @chilung-cgu
- #4084 fix(responses): allow 90 seconds for Codex WebSocket response prelude @S0RYUASUKA
- #4114 fix(codex): report operator-owned root routing truthfully @Ingwannu
- #4115 chore(release): open dev at 2.50.0 before releasing 2.49.0 @github-actions[bot]
- #4125 docs(devlog): post-2.49 reconciliation — 101 units to _fin + scope-cleanup records @lidge-jun
- #4127 fix(responses): classify non-streaming provider input overflow @Ingwannu
- #4128 fix(codex): attribute Spark 5h header windows to the model limit, not the account short slot @lidge-jun
- #4132 docs(devlog): move the closed Spark short-quota unit to _fin @lidge-jun
- #4133 docs(security): document the private follow-up path for pending reports @lidge-jun
- #4134 feat(logs): surface and filter the routed account label per request @lidge-jun
- #4135 fix(responses): recover encrypted agent tasks on mid-thread model switches @lidge-jun
- #4136 docs(provider): explain the opencode-free Zen lock-in instead of leaking MissingSessionID @lidge-jun
- #4138 feat(proxy): make the inbound body admission limit configurable @lidge-jun
- #4140 fix(codex): persist a terminal validation verdict for a revoked pool grant @lidge-jun
- #4142 fix(web-search): opt-in hosted web-search bridge for the key-auth Responses passthrough @lidge-jun
- #4146 feat(oauth): report an explicit account plan field for OAuth providers @lidge-jun
- #4150 fix(combos): classify a hopping 413 when the combo exhausts its targets @lidge-jun
- #4151 docs(readme): resync every non-English README and gate them against drift @lidge-jun
- #4152 fix(service): stop the test suite from mutating a live service manager @lidge-jun
- #4153 fix(zcode): export reasoning configuration for thought-capable models @richardfeiliu-a11y
- #4155 docs(devlog): plan the post-2.49 round-2 two-lane delivery @lidge-jun
- #4156 feat(catalog): classify discovered model pricing and filter free models @lidge-jun
- #4157 fix(responses): let a combo shadow-call target enter the failover loop @lidge-jun
- #4158 fix(models): explain the discovery dependency when model sync fails @lidge-jun
- #4160 feat(privacy): let an operator opt out of email masking @lidge-jun
- #4161 fix(claude): keep mid-conversation system messages in the timeline @lidge-jun
- #4162 docs(devlog): record the round-2 landings, decisions, and blockers @lidge-jun
- #4163 docs(devlog): record the #4147 and #3859 landings and the #4141 unblock @lidge-jun
- #4164 fix(service): recover a stale launchd job with bootout before load @lidge-jun
- #4165 feat(catalog): mark quota-exhausted models and combos inactive @lidge-jun
- #4166 feat(logs): show an estimated decode rate alongside end-to-end throughput @lidge-jun
- #4168 docs(devlog): close the round-2 record at the screenshot gate @lidge-jun
- #4180 docs(devlog): record the Lane B landing and the screenshot-gate waiver @lidge-jun
- #4186 docs(devlog): Cursor ACP -> OpenCodex feasibility investigation @lidge-jun
- #4195 release: promote verified 2.50.0 product tree to main @lidge-jun