What's Changed
- feat(app): raise Responses WS default limits to 1024 connections/sessions (
4b4c42cc) - feat(app): add per-key cost_multiplier with backfill, CSV roundtrip and admin UI (
329df6e1) - fix(app): rewrite Zed agent_message and strip Codex encrypted content before upstream (
01aa71bd) - feat(app): add Sub2API management login and profile-based Key rate lookup (
c42e6df6) - fix(app): refresh active channel quotas and harden Responses retries (
375f4e73) - docs(www): sync capabilities with Zed login, WS defaults, multimodal fallback and management accounts (
9fa880e7) - fix(web): remove empty Model Matching group and merge Other into Advanced (
c18a640c) - fix: allow partial key model refresh (
cece8040) - 修复 Codex 额度合并并优化渠道成本显示 (
dff36136) - fix: align Anthropic fast mode pricing (
a5814c10) - fix(billing): honor upstream service tier and ultrafast pricing (
9ed11fe1) - fix(codex): replace premium quota scope from headers (
ea511025) - fix(billing): charge Codex auto tier as fast mode (
c1a5b85e) - fix(codex): isolate Spark quota resets from Codex weekly usage (
c0ccef85) - fix(channels): separate manual key disables from empty scopes (
fadfcf2c) - fix(docker): use GET for healthcheck probe (
a0d6876b) - fix(channels): apply per-key model scopes during refresh (
8d9f0600) - fix(web): restore Codex credential view toggle (
2fe6e356) - fix(codex): retry encrypted content errors in websocket streams (
b1237b72) - fix(codex): preserve Responses prompt cache prefix (
25942a1b) - perf(codex): strip Responses status in linear time (
c28f3289) - fix(codex): reject non-websocket Responses GET requests (
954d7084) - test(cursorauth): tolerate deadline classification race (
e82b11f0) - refactor(oauthcost): scope usage rollback to individual windows (
83bbea8b) - refactor(wire): drop map as the JSON intermediate representation (
53ea5eac) - fix(responses): restore the upstream JSON validity gate in the SSE bridge (
501f27e1) - fix Zed null field removal treating literal keys as sjson paths (
35b805d4) - converge Antigravity schema aliases onto the canonical field (
abac986a) - cap all JSON walkers at depth 20, index wide objects, keep raw keys (
39ee4df5) - fold the Antigravity generation_config parent into generationConfig (
f6594816) - fix(wire): align response decoding with gjson duplicate-member semantics (
58f3220b) - fix(usage): funnel usage numeric conversion through a single guarded entry (
08b19651) - fix(anthropic): stop requiring cch to recognize native Claude Code requests (
70370bb0) - fix(anthropic): align native Claude Code identity and UA checks with upstream (
0df63d56) - refactor(anthropic): reduce native Claude Code detection to upstream's four signals (
a82a4d29) - fix(anthropic): 把原生 Claude Code 判据收敛成三个请求头 (
032f4e80) - fix(usage): 流式 usage 的零值占位不再覆盖有效累计快照 (
e51106b4) - fix(antigravity): Claude 目标响应的 usage 减去缓存命中的输入 (
f490cf2e) - fix(anthropic): bump forged Claude Code pin to 2.1.258 (
9728e324) - test(anthropic): refresh wire goldens for forged CLI 2.1.258 (
1a364ae5) - fix(codex): strip input item status before native WebSocket send (
fe6cfc8d) - feat(antigravity): add gemini-3.8-flash-high to model whitelist (
42669dd4) - fix(sse): repair malformed Codex SSE framing and harden SSE detection (
e10a8b28) - feat(web): display sse_framing_repairs in runtime metrics UI (
9484daf9) - fix(admin): raise API Key allowed_models limit from 2000 to 8000 bytes (
f8dd6281) - fix(storage): widen api_keys.allowed_models from VARCHAR(2000) to VARCHAR(8000) (
1592eeae) - fix(update): fetch preview releases from GitHub Atom feed (
fd6c03dd) - fix(oauthcost): isolate gpt-reserve window from regular Codex cost accumulation (
a460eb96) - fix(settings): preserve multimodal fallback selections (
e79e4b56) - fix(proxy): continue protocol fallback when local transform cannot represent request (
46cf9989) - fix: make Zed system ID optional (
6e325838) - fix(zed): harden native wire and validation handling (
152c14d7) - fix: preserve priority billing and compact reset credits (
111e16d2) - fix: persist themes and expose Antigravity 3.8 models (
eb9d6883) - fix(codex): retry encrypted content after websocket metadata (
b12ab7ed) - feat(web): model cooldown count-first layout and test key notes (
d3b5405c) - feat(pricing): add GPT-6 Astra pricing (
986c4d5f) - fix(cursor): preserve active SDK runs (
229c5e31) - feat(pricing): add Grok 4.6 pricing (
e9083a35) - feat(codex): expose GPT-6 Astra to paid plans (
94baedea) - feat(models): update OAuth catalogs and Fable pricing (
910e943e) - feat(wire): preserve Codex and Claude client versions (
e2316de6) - fix(web): restore shared channel editor actions (
c79a01c8) - fix(oauth): preserve quota costs across window changes and partial updates (
6f01d867)
Full Changelog: v4.9.0...v4.10.0