Skip to content

v2.52.0-preview.20260911

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Sep 11:39
Immutable release. Only release title and notes can be modified.
69207f1

Published to npm as @bitkyc08/opencodex@2.52.0-preview.20260911 with dist-tag preview.

New Features

  • Add official CodeBuddy Global and CN providers (carry #3340) (#4026)
  • Add Qoder Global PAT provider (carry #3349) (#4027)
  • Add Qoder CN PAT provider (carry #3350) (#4028)
  • Give Qoder its brand mark and name the CLI providers (#4029)
  • Support source-preserving YAML for Hermes Agent (carry #3990) (#4030)
  • OrcaRouter placement, overview introduction and links (#3914)
  • PackyCode preset, placement and overview links (#3915)
  • Explain ChatGPT public endpoint latency (#4091)
  • Explain ChatGPT public endpoint latency (#4063)
  • Opt into client-side compaction (#4092)
  • Opt into client-side compaction (#3987)
  • 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)
  • Let an operator keep a downgraded account out of pool rotation (#4211) (#4238)
  • One-port hub — same-port loopback companion listener, honest hub-gate messages (#4250)
  • Provision the data-plane token, add ocx hub invite, and one hub block in ocx status (#4252)
  • A connected client reports the hub's state, not its own (#4255)

Bug Fixes

  • Guard model-tail histories with user continue nudge across Gemini and CCA (carry #3988) (#4031)
  • Wp1: land the luvs01 fixture and bug-fix train (9 PRs) (#4049)
  • Wp2: land seven contributor bug fixes (quota, catalog, streaming, storage, history) (#4051)
  • Wp4: fix four reported bugs with no owning pull request (#4058)
  • Wp7: report the actual reason a proxy refused to stop (#4067)
  • Show the OrcaRouter sponsor logo on every branch (#4097)
  • Validate token values and escape human output (#4074)
  • Pin manual redirects at upstream dispatch (#4082)
  • Honor rejected identity checks during port reclaim (#4101)
  • Honor rejected identity checks during port reclaim (#4036)
  • Close expired dashboard selection streams quietly when no frames are queued (#4095)
  • Restore main policy binding after owned startup (#4085)
  • Fall back to caller main during Pool cooldown (#4088)
  • Confirm shared teardown before skipping parent restoration (#4070)
  • Persist transport finality evidence (#4061)
  • Retain stored sidecar auth for caller-auth Chat (#4103)
  • Keep credentials scoped to the final routed provider (carry of #4081) (#4102)
  • Drop tool-schema patterns Python re cannot compile (#4096)
  • Drop tool-schema patterns Python re cannot compile (#4072)
  • Preserve composed tool schema contracts (#4113)
  • 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)
  • Give sessionless requests an isolated session lane (#4226)
  • Refuse a write that would take a config file from its owner (#4227)
  • Warm up new ChatGPT Free accounts instead of blaming the credential (#4126) (#4230)
  • Admit the Responses Coding Plan preset to the quota reader (#4231)
  • Name the account that left the pool instead of only dropping it (#4212) (#4233)
  • Support native pnpm self-updates (#4235)
  • Classify Codex WS failures instead of restating them (#4232)
  • Name the real refusal cause instead of asserting ownership (#4237)
  • Refuse vendor CLI scaffolding in routed output (#4234)
  • Refuse a hub catalog the local Codex CLI cannot parse (#4240)
  • MacOS repair no longer evicts a healthy launchd job, and verifies the one it loads (#4249)
  • Route the hub's own local clients through their two destinations (management ingress + loopback inference) (#4251)
  • Emit max/ultra efforts unconditionally and expire stale clamp diagnostics (#4257)
  • Keep the retryable main-refresh refusal an overload, not a bad key (#4269)

Documentation

  • Archive the 2.48.0 release train record (#4021)
  • Record the provider runtime stack landing (#4037)
  • Wp3: land four small contributor changes and the missing feedback-callback test (#4053)
  • 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)
  • Record the 2.50.0 regression audit and release train (#4196)
  • Plan the 260911 lane dispatch round (#4217)
  • Publish the 260911 lane branches and refresh the round ledger (#4220)
  • Mechanize the lane tracking refresh and fix the wp4 merge gate (#4221)
  • Fold the seven-lane feasibility audit into lane ownership and scope (#4223)
  • State which account each provider login spends (#4239)
  • Make the setup runnable on a fresh config and close the macOS data plane (#4241)
  • The one-port hub recipe, invite flow, and launchd semantics (en+ko, skill) (#4254)
  • Provider: seed GLM-5.3-Flash on the BigModel Responses preset (#4244)
  • Make the remote hub guide runnable in every locale (#4247)

Chores

  • Open dev at 2.49.0 before releasing 2.48.0 (#4019)
  • Wp6: pin Bun 1.4.2 and catch up the drifted workflow (#4064)
  • Platform-policy readiness budget for the config-lock holder child, unmasked readiness failures (#4099)

Other Changes

  • Usage: open the custom date range on request instead of on arrival (#4093)
  • Devlog: name the language on the design-dial fence (#4098)
  • Oauth/xai: honor Retry-After and stop retrying aborted token requests (#4087)
  • Oauth/xai: pin discovery endpoints to trusted auth hosts and reject userinfo (#4094)
  • Open dev at 2.50.0 before releasing 2.49.0 (#4115)
  • Promote verified 2.49.0 product tree to preview (#4116)
  • Open dev at 2.51.0 before releasing 2.50.0 (#4194)
  • Pool: name the account when a refresh fails or its models vanish (#4248)
  • Client: report local Codex readiness instead of bare connected state (#4246)
  • Promote verified 2.52.0-preview.20260911 product tree to preview (#4273)

Changelog

Full Changelog: v2.51.0...v2.52.0-preview.20260911

  • #3848 fix(codex): defer validation for quota-exhausted account registration @shaun0927
  • #3914 feat(sponsors): OrcaRouter placement, overview introduction and links @lidge-jun
  • #3915 feat(sponsors): PackyCode preset, placement and overview links @lidge-jun
  • #3987 feat(codex): opt into client-side compaction @cb8010d6
  • #4019 chore(release): open dev at 2.49.0 before releasing 2.48.0 @lidge-jun
  • #4021 docs(devlog): archive the 2.48.0 release train record @lidge-jun
  • #4026 feat(provider): add official CodeBuddy Global and CN providers (carry #3340) @lidge-jun
  • #4027 feat(provider): add Qoder Global PAT provider (carry #3349) @lidge-jun
  • #4028 feat(provider): add Qoder CN PAT provider (carry #3350) @lidge-jun
  • #4029 feat(gui): give Qoder its brand mark and name the CLI providers @lidge-jun
  • #4030 feat(integrations): support source-preserving YAML for Hermes Agent (carry #3990) @lidge-jun
  • #4031 fix(google): guard model-tail histories with user continue nudge across Gemini and CCA (carry #3988) @lidge-jun
  • #4036 fix(server): honor rejected identity checks during port reclaim @luvs01
  • #4037 docs(devlog): record the provider runtime stack landing @lidge-jun
  • #4049 wp1: land the luvs01 fixture and bug-fix train (9 PRs) @lidge-jun
  • #4051 wp2: land seven contributor bug fixes (quota, catalog, streaming, storage, history) @lidge-jun
  • #4053 wp3: land four small contributor changes and the missing feedback-callback test @lidge-jun
  • #4058 wp4: fix four reported bugs with no owning pull request @lidge-jun
  • #4061 fix(logs): persist transport finality evidence @chilung-cgu
  • #4063 feat(doctor): explain ChatGPT public endpoint latency @chilung-cgu
  • #4064 wp6: pin Bun 1.4.2 and catch up the drifted workflow @lidge-jun
  • #4067 wp7: report the actual reason a proxy refused to stop @lidge-jun
  • #4068 fix(google): restore AI Studio model discovery @chilung-cgu
  • #4070 fix(stop): confirm shared teardown before skipping parent restoration @luvs01
  • #4072 fix(openai): drop tool-schema patterns Python re cannot compile @itismyfield
  • #4074 fix(usage): validate token values and escape human output @luvs01
  • #4082 fix(transport): pin manual redirects at upstream dispatch @luvs01
  • #4084 fix(responses): allow 90 seconds for Codex WebSocket response prelude @S0RYUASUKA
  • #4085 fix(codex): restore main policy binding after owned startup @lidge-jun
  • #4087 oauth/xai: honor Retry-After and stop retrying aborted token requests @lidge-jun
  • #4088 fix(codex): fall back to caller main during Pool cooldown @lidge-jun
  • #4091 feat(doctor): explain ChatGPT public endpoint latency @lidge-jun
  • #4092 feat(codex): opt into client-side compaction @lidge-jun
  • #4093 usage: open the custom date range on request instead of on arrival @lidge-jun
  • #4094 oauth/xai: pin discovery endpoints to trusted auth hosts and reject userinfo @lidge-jun
  • #4095 fix(server): close expired dashboard selection streams quietly when no frames are queued @lidge-jun
  • #4096 fix(openai): drop tool-schema patterns Python re cannot compile @lidge-jun
  • #4097 fix(readme): show the OrcaRouter sponsor logo on every branch @lidge-jun
  • #4098 devlog: name the language on the design-dial fence @lidge-jun
  • #4099 test(config): platform-policy readiness budget for the config-lock holder child, unmasked readiness failures @lidge-jun
  • #4101 fix(server): honor rejected identity checks during port reclaim @lidge-jun
  • #4102 fix(auth): keep credentials scoped to the final routed provider (carry of #4081) @lidge-jun
  • #4103 fix(auth): retain stored sidecar auth for caller-auth Chat @luvs01
  • #4113 fix(openai): preserve composed tool schema contracts @lidge-jun
  • #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]
  • #4116 release: promote verified 2.49.0 product tree to preview @lidge-jun
  • #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
  • #4194 chore(release): open dev at 2.51.0 before releasing 2.50.0 @github-actions[bot]
  • #4196 docs(devlog): record the 2.50.0 regression audit and release train @lidge-jun
  • #4217 docs(devlog): plan the 260911 lane dispatch round @lidge-jun
  • #4220 docs(devlog): publish the 260911 lane branches and refresh the round ledger @lidge-jun
  • #4221 docs(devlog): mechanize the lane tracking refresh and fix the wp4 merge gate @lidge-jun
  • #4223 docs(devlog): fold the seven-lane feasibility audit into lane ownership and scope @lidge-jun
  • #4226 fix(opencode-go): give sessionless requests an isolated session lane @lidge-jun
  • #4227 fix(integrations): refuse a write that would take a config file from its owner @lidge-jun
  • #4230 fix(codex): warm up new ChatGPT Free accounts instead of blaming the credential (#4126) @lidge-jun
  • #4231 fix(bigmodel): admit the Responses Coding Plan preset to the quota reader @lidge-jun
  • #4232 fix(responses): classify Codex WS failures instead of restating them @lidge-jun
  • #4233 fix(codex): name the account that left the pool instead of only dropping it (#4212) @lidge-jun
  • #4234 fix(qoder): refuse vendor CLI scaffolding in routed output @lidge-jun
  • #4235 fix(update): support native pnpm self-updates @lidge-jun
  • #4237 fix(stop): name the real refusal cause instead of asserting ownership @lidge-jun
  • #4238 feat(codex): let an operator keep a downgraded account out of pool rotation (#4211) @lidge-jun
  • #4239 docs(providers): state which account each provider login spends @lidge-jun
  • #4240 fix(client): refuse a hub catalog the local Codex CLI cannot parse @lidge-jun
  • #4241 docs(remote-hub): make the setup runnable on a fresh config and close the macOS data plane @lidge-jun
  • #4244 provider: seed GLM-5.3-Flash on the BigModel Responses preset @lidge-jun
  • #4246 client: report local Codex readiness instead of bare connected state @lidge-jun
  • #4247 docs(i18n): make the remote hub guide runnable in every locale @lidge-jun
  • #4248 pool: name the account when a refresh fails or its models vanish @lidge-jun
  • #4249 fix(service): macOS repair no longer evicts a healthy launchd job, and verifies the one it loads @lidge-jun
  • #4250 feat(server): one-port hub — same-port loopback companion listener, honest hub-gate messages @lidge-jun
  • #4251 fix(claude): route the hub's own local clients through their two destinations (management ingress + loopback inference) @lidge-jun
  • #4252 feat(hub): provision the data-plane token, add ocx hub invite, and one hub block in ocx status @lidge-jun
  • #4254 docs(remote-hub): the one-port hub recipe, invite flow, and launchd semantics (en+ko, skill) @lidge-jun
  • #4255 feat(client): a connected client reports the hub's state, not its own @lidge-jun
  • #4257 fix(codex): emit max/ultra efforts unconditionally and expire stale clamp diagnostics @lidge-jun
  • #4269 fix(responses): keep the retryable main-refresh refusal an overload, not a bad key @lidge-jun
  • #4273 release: promote verified 2.52.0-preview.20260911 product tree to preview @lidge-jun