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 |
|
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 |
|
Wesley Liddick
|
a7d2c782df
|
Merge pull request #5717 from wucm667/feat/issue-2629-current-main
feat(simple-mode): allow basic account grouping
|
2026-09-07 15:43:22 +08:00 |
|
Wesley Liddick
|
a3aa9bae6d
|
Merge pull request #6662 from ZeroClover/fix/codex-manifest-pinned-accounts
fix(openai): reuse pinned accounts for model lists and fix manifest controls
|
2026-09-07 15:35:49 +08:00 |
|
milesians
|
d03c42d798
|
fix: size plaza pricing columns to fit cache prices
|
2026-09-07 11:56:53 +08:00 |
|
qiu121
|
6aabbdf547
|
fix(openai): 记录流式失败的上游诊断信息
- 在 Responses 流已经输出语义内容后记录 response.failed 的上游事件,使运维可以查询原始错误、账号和上游 request ID,定位 OpenAI 临时处理失败而不丢失诊断上下文。
- 保留已提交语义内容后禁止切号重放的安全边界,避免客户端收到重复或混合响应;补充原生与透传路径的回归测试,确保该错误可观测且行为一致。
Refs: #5165, #6714
|
2026-09-07 11:27:08 +08:00 |
|
lyy0709
|
ad4b2f30f5
|
test(codex): assert alias workflow effort before dereferencing
|
2026-09-07 11:23:11 +08:00 |
|
milesians
|
ff758f37d2
|
fix: preserve plaza 1h pricing and align interval fallbacks
|
2026-09-07 11:07:35 +08:00 |
|
zhuanzhi
|
2e31d8b702
|
fix(codex): preserve allowed_tools selection constraints
Keep allowed_tools policies intact for upstream validation and rewrite their
function references alongside reserved tool-name aliases.
|
2026-09-07 10:47:51 +08:00 |
|
wucm667
|
8c8fd6e298
|
feat(admin): link subscriptions to user usage
|
2026-09-07 10:13:18 +08:00 |
|
刘佳林
|
f62ec2e4a0
|
feat(groups): 推理强度映射转发值支持拒绝
分组推理强度映射的转发值新增 deny。命中对应请求档位时直接拒绝请求,
返回 403 permission_error,而不是改写后转发。
|
2026-09-07 10:12:42 +08:00 |
|
milesians
|
415a0dc9d0
|
fix: display multiplier-only interval prices
|
2026-09-07 10:11:07 +08:00 |
|