github-actions[bot]
b7dba62678
chore: sync VERSION to 0.2.2 [skip ci]
2026-09-07 13:01:57 +00:00
Wesley Liddick
5485f368b2
Merge pull request #6690 from alfadb/fix/astra-pro-mode
...
fix(openai): 保留 Codex OAuth 请求中的 Astra reasoning.mode
v0.2.2
2026-09-07 20:42:37 +08:00
Wesley Liddick
f8351e9e33
Merge pull request #6658 from ZeroClover/feat/group-model-allowlist
...
feat(groups)!: enforce model allowlists across gateway endpoints
2026-09-07 20:25:57 +08:00
shaw
2031c1d5ad
fix(groups): merge main and resolve model allowlist conflicts
...
Resolve three conflicts from main's #6680 (supplementUnmappedOpenAIModels):
1. gateway_handler.go — keep PR's allowlist refactoring (ModelAllowlistEnabled,
writeAllowlistedModelsList, modelListingSource); main's OpenAI branch in
writeModelsList was auto-merged.
2. group_models_list.go (modify/delete) — delete file per PR intent; relocate
supplementUnmappedOpenAIModels to group_model_allowlist.go where gateway_service
and openai_codex_models_service can still call it.
3. openai_codex_models_service.go — combine main's supplementUnmappedOpenAIModels
wrapping with PR's ModelAllowlistEnabled() guard.
Also fix two auto-merged test files that still referenced the old
GroupModelsListConfig / ModelsListConfig types.
2026-09-07 19:44:03 +08:00
Wesley Liddick
8193b80a59
Merge pull request #6743 from MarushiruDonato/fix/gpt6-astra-instructions
...
fix(openai): 修正 GPT-6 Astra 提示词选择
2026-09-07 19:22:43 +08:00
shaw
f6d580200a
fix: update #6688 test assertions for #6678 image modality and #6718 ultra level
...
- TestCodexAliasFailoverMappingHonorsModelRouting/no_routing_rule: expect
["text","image"] instead of ["text"] — image input is resolved per-account
via isOpenAICodexImageInputModel, independent of routing rules
- TestCodexAliasFailoverMappingHonorsModelRouting/routing_rule: expect
effort levels to include "ultra" (added by #6718 )
2026-09-07 19:13:01 +08:00
shaw
b491c3271b
fix: rename redeemMaxErrorsPerHour to redeemMaxFailedAttempts in tests
...
#6669 renamed the constant from redeemMaxErrorsPerHour to
redeemMaxFailedAttempts (fixed 10-minute window), but #6670 's tests
still referenced the old name, breaking compilation on main.
2026-09-07 19:00:04 +08:00
shaw
d106b3b5a0
fix: resolve merge conflict with main and fix #6718 missing group parameter
...
- Resolve conflict in openai_codex_models_service_test.go: keep both
GPT-6 Astra instructions template assertion (from this PR) and ultra
reasoning level + multi_agent fields (from #6718 on main)
- Fix compilation error on main: add missing `group *Group` parameter
to buildCodexModelsManifestForAccounts calls in
openai_codex_model_metadata_test.go (lines 24, 32) — caused by #6688
changing the function signature while #6718 added new callers with
the old signature
2026-09-07 18:58:00 +08:00
Wesley Liddick
10fe591e54
Merge pull request #6660 from ouchihao/codex/issue-312-onboarding-button-shadow
...
fix(onboarding): remove button text shadows
2026-09-07 18:51:44 +08:00
Wesley Liddick
66cd8a72bc
Merge pull request #6738 from Milesians/codex/fix-interval-multiplier-display
...
fix: 修正区间倍率展示并补齐模型广场 1h 缓存价格
2026-09-07 18:51:00 +08:00
Wesley Liddick
dc46daa690
Merge pull request #6726 from DuskLin/feat/openai-reasoning-effort-mapping-deny
...
feat(groups): 推理强度映射转发值支持拒绝
2026-09-07 18:50:41 +08:00
Wesley Liddick
65246e69d7
Merge pull request #6643 from MarushiruDonato/fix/codex-manifest-reactive-vmodel
...
fix(frontend): 修复 Codex Manifest 编辑状态丢失
2026-09-07 18:50:27 +08:00
Wesley Liddick
de69bf1e03
Merge pull request #6655 from ouchihao/codex/issue-275-account-expiry-presets
...
feat(accounts): add month and year expiry presets
2026-09-07 18:50:13 +08:00
Wesley Liddick
eba85dc478
Merge pull request #6680 from cyhhao/fix/openai-mixed-account-model-list
...
fix(openai): retain default models in mixed account catalogs
2026-09-07 18:50:03 +08:00
Wesley Liddick
abf70750fd
Merge pull request #6669 from ssharkkky/fix/redeem-fixed-failure-window
...
fix(redeem): use a fixed 10-minute failure window
2026-09-07 18:49:51 +08:00
Wesley Liddick
88b697d5df
Merge pull request #6673 from ssharkkky/fix/backup-migrations-advisory-lock
...
fix(backup): serialize pg_dump/psql with the migrations advisory lock
2026-09-07 18:49:34 +08:00
Wesley Liddick
3eb5a84ea1
Merge pull request #6700 from qiu121/codex/fix/deepseek-account-cost-peak
...
fix(billing): 修复 DeepSeek 高峰账号成本少计
2026-09-07 18:49:19 +08:00
Wesley Liddick
71e5a4baf7
Merge pull request #6486 from aofee/codex/fix-grok-media-inconclusive-eligibility
...
fix(grok): do not reject media accounts on incomplete billing
2026-09-07 18:48:39 +08:00
Wesley Liddick
4bfcbd0c78
Merge pull request #6498 from aofee/codex/fix-ws-pending-turn-terminal
...
fix(openai-ws): track pending passthrough turns
2026-09-07 18:48:04 +08:00
Wesley Liddick
2b1e5e7f5c
Merge pull request #6429 from spin6lock/fix/billing-glm-5.3-flash-fallback-pricing
...
fix(billing): 补上 glm-5.3 / glm-5.3-flash 兜底价,避免被 glm-5 子串匹配抢走
2026-09-07 18:47:46 +08:00
Wesley Liddick
cbb4b7e53e
Merge pull request #6678 from gebdalaoli-arch/codex/stale-astra-input-modalities-v021
...
[codex] Fix stale official Astra input modalities
2026-09-07 18:47:31 +08:00
Wesley Liddick
81c0f11d7a
Merge pull request #6736 from qiu121/codex/fix/openai-stream-failure-observability
...
fix(openai): 记录流式失败的上游诊断信息
2026-09-07 18:46:58 +08:00
Wesley Liddick
561fc1c3e4
Merge pull request #6718 from lyy0709/codex/astra-ultra-catalog
...
fix(codex): preserve Astra Ultra workflow metadata
2026-09-07 18:46:11 +08:00
Wesley Liddick
43491f67a1
Merge pull request #6733 from AndrewZhuCC/fix/codex-allowed-tools
...
fix(codex): preserve allowed_tools selection constraints
2026-09-07 18:45:48 +08:00
Wesley Liddick
c05bc4d3cc
Merge pull request #6705 from ouchihao/codex/issue-4827-usage-api-key-filter
...
fix(usage): load all API keys for record filters
2026-09-07 18:45:35 +08:00
Wesley Liddick
b9ebc8f209
Merge pull request #6637 from varrge/fix/gemini-flash-tier-pricing
...
fix(billing): resolve Gemini 3.7/3.8 Flash thinking-tier prices
2026-09-07 18:44:55 +08:00
Wesley Liddick
f7c48ba59a
Merge pull request #6674 from wuji-labs/fix/antigravity-toolconfig-always-present
...
fix(antigravity): always set toolConfig for reasoning models without tools
2026-09-07 18:44:41 +08:00
Wesley Liddick
22c16d0517
Merge pull request #6708 from r266-tech/r266/fix-ws-turn-rate-limit-6679
...
fix(openai-ws): recover later passthrough turns from account quota exhaustion
2026-09-07 18:44:18 +08:00
Wesley Liddick
2cc1e7ef90
Merge pull request #6677 from Lynricsy/fix/claude-thinking-block-binding
...
fix(claude): support thinking block binding beta
2026-09-07 18:43:52 +08:00
Zero Clover
81ff9384cb
fix(groups): merge main and resolve model allowlist conflicts
2026-09-07 18:33:39 +08:00
alfadb
0aaed397cc
fix: preserve Astra reasoning mode for Codex OAuth
2026-09-07 17:58:20 +08:00
Wesley Liddick
909b8c7ef4
Merge pull request #6648 from ouchihao/codex/issue-3667-turnstile-loading
...
fix(auth): show a loading placeholder for Turnstile
2026-09-07 17:38:11 +08:00
Wesley Liddick
b8ff74ad70
Merge pull request #6668 from ssharkkky/fix/channel-monitor-gemini-role
...
fix(monitors): send explicit user role in Gemini monitor probes
2026-09-07 17:38:00 +08:00
Wesley Liddick
96cf8bd76a
Merge pull request #6665 from ssharkkky/fix/grok-cross-client-map-default-doc
...
fix(settings): describe Grok cross-client mapping default as enabled
2026-09-07 17:37:47 +08:00
Wesley Liddick
1f716aa181
Merge pull request #6667 from ssharkkky/fix/antigravity-user-agent-version
...
fix(antigravity): refresh default user agent version
2026-09-07 17:37:37 +08:00
Wesley Liddick
111c41cf3f
Merge pull request #6684 from SakuraPuare/feat/i18n-build-gate
...
fix(i18n): fail builds on missing locale keys
2026-09-07 17:37:25 +08:00
Wesley Liddick
787a6a33df
Merge pull request #6481 from alfadb/fix/claude-cli-version-floor
...
fix(claude): 让伪装的 Claude Code 版本真正生效,修复 Fable 5.1 仍然 400
2026-09-07 17:37:12 +08:00
Wesley Liddick
f8e1e7fed6
Merge pull request #6711 from wucm667/fix/issue-6701-model-not-found-failover
...
Fix failover for model-not-found responses
2026-09-07 17:36:58 +08:00
Wesley Liddick
f09a5b602e
Merge pull request #6704 from aofee/codex/fix-http-bridge-session-isolation
...
fix(openai-ws): 修复 HTTP bridge 并发连接抢占与状态串用
2026-09-07 17:36:36 +08:00
Wesley Liddick
027e3f2d54
Merge pull request #6688 from suixincrazy/fix/codex-manifest-failover-alias
...
fix(openai): honor model_routing for Codex manifests and scheduling
2026-09-07 17:36:26 +08:00
Wesley Liddick
8116d235ef
Merge pull request #6629 from superdav42/fix/preserve-function-arguments-done
...
fix(apicompat): preserve function arguments from done events
2026-09-07 17:36:10 +08:00
Wesley Liddick
959cbe3d87
Merge pull request #5453 from wucm667/fix/issue-5451-ws-passthrough-before-turn
...
fix(openai): reacquire passthrough turn slots
2026-09-07 17:35:57 +08:00
Wesley Liddick
c0420e2b8a
Merge pull request #6484 from aofee/codex/fix-fable-credits-required-scope
...
fix(anthropic): keep Fable credits_required model-scoped
2026-09-07 17:33:59 +08:00
Wesley Liddick
9578ddbddd
Merge pull request #6687 from Chenning-Tao/codex/fix-native-delegation-ws
...
fix(openai): preserve named standalone Responses inputs
2026-09-07 17:31:17 +08:00
Wesley Liddick
e274de45b7
Merge pull request #6702 from a1gaoshanlaiyige/fix/message-cache-json-escaping
...
fix(gateway): use JSON escaping for message cache promotion
2026-09-07 17:30:54 +08:00
Wesley Liddick
ce328fb37a
Merge pull request #6670 from ssharkkky/fix/payment-fulfillment-isolation
...
fix(payment): isolate fulfillment from redeem limits
2026-09-07 17:30:43 +08:00
Wesley Liddick
8f7f2b5d92
Merge pull request #6727 from wucm667/feat/issue-6723-subscription-usage-link
...
feat(admin): link subscriptions to user usage
2026-09-07 16:45:32 +08:00
alfadb
3efeba33a4
test(claude): 版本覆盖用例字面量随内置基线升至 2.1.259
...
这三个用例的字面量 2.1.251 写于内置基线为 2.1.220 的时期,本意是取一个
高于基线的补丁位验证"覆盖不得低于 pin"规则。基线升至 2.1.258 后,2.1.251
落在 pin 之下:IsSupportedCLIVersion 应判 false、resolveCLIVersion 应回落
基线,与用例原意相悖,CI 随之失败。
改为真正高于当前 pin 的最小补丁位 2.1.259,用例语义不变;实现未放宽,
constants_cli_version_test.go 中独立的 Fable 5.1 闸门下限 2.1.251 保持不变。
2026-09-07 16:34:35 +08:00
alfadb
ce157b32ed
fix(claude): 指纹自愈路径同样执行 claude-cli 版本下限
...
GetOrCreateFingerprint 的 heal 分支(畸形缓存自愈)此前在版本下限逻辑之外:
畸形缓存 + 合法但过旧的客户端 UA 会在首次读取时把过旧 UA 原样落库并返回,
下一次读取才被抬到下限——该窗口内账号仍以过旧版本撞上游客户端版本闸门
(PR #6481 review 指出的边界 case)。
修复:把 floorClaudeCLIUserAgentVersion 后置块从 healthy else 内移到
heal/healthy if-else 之后、TTL 续期检查之前,作为两条缓存命中路径的共同
后置条件;heal 分支 needWrite 本已为 true,单次落库语义不变。
测试:TestGetOrCreateFingerprintHealsPoisonedCacheUsingValidClientUA
期望改为首次返回/落库即 claude-cli/CLICurrentVersion(保留 ClientID 不变、
恰好一次落库断言);floor/UA 全部既有用例保持绿。
2026-09-07 16:34:35 +08:00
alfadb
3cb2381bdc
fix(claude): 让伪装的 Claude Code 版本真正生效,修复 Fable 5.1 仍然 400
...
claude-fable-5-1 已登记进 DefaultModels,但 OAuth 账号实际调用仍然全部失败:
400 claude_code_version_too_old
"Claude Code 2.1.220 does not support this model;
version 2.1.251 or newer is required."
两个独立的原因,缺一不可:
1. CLICurrentVersion 停留在 2.1.220,低于上游对该模型的客户端版本闸门。
升到 2.1.258(当前官方 CLI 最新版,npm @anthropic-ai/claude-code)。
2. 只升常量对所有已有账号无效。上游请求实际发送的 User-Agent 来自账号级
持久指纹(IdentityService,Redis fingerprint:<accountID>),不是
DefaultHeaders;defaultFingerprint 只在首次创建指纹时使用。
GetOrCreateFingerprint 的缓存命中路径只有两条改写分支:UA 畸形时自愈,
或客户端送来更新版本时升级。指纹 7 天 TTL 但活跃账号每 24h 续期,实际
近乎永不过期,系统内也没有重置入口——客户端版本比缓存旧时(例如缓存
2.1.220、客户端 2.1.75),存量账号会永远对上游声称 2.1.220。
生产实测:升级 CLICurrentVersion 并部署后仍报同样的 400,读 Redis 确认
出问题账号的缓存值为 "claude-cli/2.1.220 (external, cli)"。
修复:新增 floorClaudeCLIUserAgentVersion,把 CLICurrentVersion 作为缓存
指纹里 claude-cli 版本的下限,缓存命中与首次创建两条路径共用。
- 只对 claude-cli 产品生效,其它客户端一律不动
- 只升不降:版本等于或高于下限(含客户端上报的更新版本)不做任何改动
- 只替换版本号段,UA 其余部分原样保留,例如
"(external, claude-desktop-3p, agent-sdk/0.3.100)" 不受影响
- 与既有的"客户端更新版本"升级分支相互独立、二者取更新者
- X-Stainless-* 维持既有 merge 语义,不被下限逻辑覆盖
cc_version 无需单独处理:billing attribution block 的版本已由
syncBillingHeaderVersion 跟随实际发送的 User-Agent 同步。
测试:identity_service_version_floor_test.go 覆盖 helper 的 8 种 UA 形态与
5 个 GetOrCreateFingerprint 场景,其中一个直接复现线上故障(缓存 2.1.220 +
客户端 2.1.75 → 写回 2.1.258,Stainless 字段保持不变)。
constants_cli_version_test.go 锁定常量与 DefaultHeaders 的 UA 同源,并断言
不低于 Fable 5.1 的闸门下限。回退实现后对应用例确认转红。
identity_service_user_agent_validation_test.go 中 3 个把版本钉死在旧字面量
的既有用例改为钉 CLICurrentVersion 或更高版本——它们断言的正是本次有意改变
的行为,各自的原始意图(哨兵拒绝、合法升级生效、健康缓存不重写)保持不变。
2026-09-07 16:34:35 +08:00