song
e6eb23eaac
feat(openai): add Live gateway support
2026-07-25 12:50:46 +08:00
shaw
6c9b84cc7a
feat: 适配 Anthropic 新模型 claude-opus-5
...
模型登记:/v1/models 清单、Bedrock 默认映射(us.anthropic.claude-opus-5-v1)、
定价条目($5/$25 per MTok、1M 上下文、128K 输出)、前端模型清单与
Anthropic/Bedrock 预设映射、限流 scope 简称。
同时修复两个会静默出错的问题:
- 定价家族兜底 3 倍超收:定价数据缺 claude-opus-5 时,matchByModelFamily
的 Phase 2 关键字兜底会落到 opus-4 系列、getFallbackPricing 会落到
claude-3-opus,两条路都按 $15/$75 计费(官方 $5/$25),输入输出双双
3 倍超收且无任何报错。两处补 opus-5 家族并回退到同价的 4.8;判断用
opus-5/opus5 子串而非裸 "5",避免误伤 claude-opus-4-5。顺带补齐兜底表
缺失的 claude-opus-4.8(此前同样会掉到 claude-3-opus)。
- Bedrock 版本闸门降级:claudeVersionRe 强制要求 major-minor 两段版本号,
只有主版本号的 claude-opus-5 / claude-sonnet-5 完全不匹配,被当成旧模型:
isBedrockOpus47OrNewer 假导致 thinking.enabled 不转 adaptive(Opus 5 上游
已移除 budget_tokens,透传直接 400)、isBedrockClaude45OrNewer 假导致
cache_control.ttl 被剥离、bedrockModelSupportsToolSearch 假导致 tool search
被过滤。改为 minor 可选(缺省 minor=0),claude-sonnet-5 的同一问题一并修复。
Vertex 无需改动:normalizeVertexAnthropicModelID 只处理 -YYYYMMDD→@YYYYMMDD,
无日期后缀的裸 ID 原样透传即正确。context-1m-2025-08-07 白名单不动:Opus 系
上游不接受该 beta,且 Opus 5 的 1M 上下文是默认能力。
Antigravity 暂不接入:无上游支持证据,mapAntigravityModel 对未映射模型返回
空字符串即"该账号不支持",fails closed 安全。
回归测试 internal/service/claude_opus5_test.go 覆盖定价两层兜底、Bedrock
三个闸门、thinking 转换与模型清单;逐个回退上述修复已确认测试会红。
2026-07-25 11:22:42 +08:00
github-actions[bot]
cb24522dd5
chore: sync VERSION to 0.1.164 [skip ci]
2026-07-23 09:54:18 +00:00
Wesley Liddick and GitHub
cd8bb98c44
Merge pull request #4774 from superman2003/fix/issues-4763-4765-4769-20260723
...
fix: optimize Codex identity imports and OpenAI account tests
2026-07-23 17:38:05 +08:00
shaw
1be6f30188
fix(ollama): 测试仓储到期查询深拷贝消除数据竞争
...
ollamaUsageTestRepo.ListDueOllamaCloudUsageAccounts 返回浅拷贝共享
Extra/Credentials map,RunDue 过滤循环的无锁读与组写协程在 r.mu 下的
map 删改构成数据竞争(-race 可复现;无 -race 时也可能触发 runtime
concurrent map read/write fatal 导致 CI 偶发崩溃)。两条返回路径改为
r.mu 下 mergeMap 深拷贝,并补全 ListOllamaCloudUsageGroupAccounts
只拷 Extra 不拷 Credentials 的半克隆,与基类 GetByID 惯例对齐。
生产仓储每次查询返回全新行,不受影响。
2026-07-23 17:14:10 +08:00
shaw
2faa0891e4
fix(ollama): 审计日志不落会话明文并收紧凭证清理守卫
...
- PUT /admin/accounts/:id/ollama-cloud-usage/session 加入审计整体不入库
路由,并把裸键 session 纳入键级脱敏兜底,防止浏览器会话 Cookie 明文
留存 audit_logs.request_body
- UpdateCredentials 的 Ollama 清理分支加顶层 credentials DISTINCT 守卫,
凭证未变化的持久化不再误清 openai 探测快照或重写 NULL extra
2026-07-23 16:43:18 +08:00
alfadb
5ac4a9fac2
feat(ollama): 支持 Cloud 官方用量自动刷新
2026-07-23 15:50:44 +08:00
Wesley Liddick and GitHub
2c76506e07
Merge pull request #4734 from wjx2951874/feat/alipay-mobile-precreate-deep-link
...
feat(payment): add mobile Alipay precreate deep link
2026-07-23 14:06:18 +08:00
superman2003
dd5956be5e
fix(openai): prefer concrete GPT-5.6 test model
2026-07-23 13:44:15 +08:00
superman2003
5dfe838c21
fix(admin): optimize Codex identity import index
2026-07-23 13:43:57 +08:00
Wesley Liddick and GitHub
6aeea70ee0
Merge pull request #4749 from heathermhuang/codex/fix-openai-proxy-stream-quarantine
...
fix(openai): quarantine proxies after incomplete SSE streams
2026-07-23 11:20:01 +08:00
Wesley Liddick and GitHub
6f7bad3f2f
Merge pull request #4751 from heathermhuang/codex/fix-grok-402-account-cooldown
...
fix(grok): cool down accounts after upstream 402
2026-07-23 11:19:30 +08:00
Wesley Liddick and GitHub
fbc88edf90
Merge pull request #4750 from heathermhuang/codex/fix-simple-default-grok-image
...
fix(simple-mode): enable images for auto-created Grok default
2026-07-23 11:19:20 +08:00
Wesley Liddick and GitHub
da5c80e113
Merge pull request #4724 from fengshao1227/fix/passthrough-input-normalize
...
fix(openai): OAuth 透传路径补齐 input 规范化,修复 Input must be a list
2026-07-23 11:19:12 +08:00
Wesley Liddick and GitHub
09b1309c91
Merge pull request #4755 from wucm667/fix/issue-4754-channel-pricing-model-normalization
...
fix(billing): normalize channel pricing model names
2026-07-23 11:18:10 +08:00
shaw
ba88cc239c
fix(billing): bill composite alias requests by the concrete forwarded model
...
Composite public aliases (e.g. all/claude) reach the Anthropic/Gemini
billing core via OriginalModel/ChannelMappedModel source overrides.
Unknown aliases resolved to no pricing and silently recorded $0 cost,
while family-word aliases were mispriced by the fallback family match
(Opus traffic billed at the Sonnet fallback rate). The OpenAI path
already guards this via usageBillingModelCandidates; the shared
recordUsageCore had neither the guard nor a fallback.
- composite groups: unless the admin explicitly configured channel
pricing for the alias (OpenRouter-style custom pricing), bill by the
concrete forwarded model
- general safety net: when the selected billing model has no resolvable
pricing at all, fall back to the concrete forwarded model instead of
silently recording $0
- grok media usage records now attribute OriginalModel to the client
requested public alias, consistent with every other endpoint
(billing unaffected: empty BillingModelSource never triggers source
overrides)
Priced traffic and non-composite groups are unaffected.
2026-07-23 10:26:58 +08:00
shaw
90c4f50a5e
fix(admin): restore currency and timestamps in admin plan list response
...
The composite-groups PR (#3581 ) replaced the raw ent SubscriptionPlan
response of GET /admin/payment/plans with a projection struct but
dropped the currency field added by #4323 . PlanEditDialog then read an
undefined currency, sent an empty string on save, and silently wiped
the stored plan currency. Restore currency plus created_at/updated_at
so the projection preserves the full original response shape.
2026-07-23 10:26:46 +08:00
Heatherm Huang
ca6b192728
fix: preserve composite video content routing
2026-07-23 09:26:43 +08:00
Heatherm Huang
cb81e17fea
test: align composite route contracts after rebase
2026-07-23 09:20:52 +08:00
Heatherm Huang
1c7959d0de
fix: allow composite grok chat completions
2026-07-23 09:20:52 +08:00
Heatherm Huang
1d2dfab86d
fix: allow composite grok messages routing
2026-07-23 09:20:52 +08:00
Heatherm Huang
06e7d12640
Fix composite Grok video status routing
2026-07-23 09:20:52 +08:00
Heatherm Huang
ee332cee64
Fix composite model defaults for linked platforms
2026-07-23 09:20:52 +08:00
Heatherm Huang
2e774a48b3
Align Grok composite example with live model
2026-07-23 09:20:52 +08:00
Heatherm Huang
ce3272c41b
Build composite subscription bucket two
2026-07-23 09:20:52 +08:00
Heatherm Huang
3a683fff55
Fix composite route alias attribution
2026-07-23 09:20:52 +08:00
Heatherm Huang
ff666be530
Fix composite route lint issues
2026-07-23 09:20:18 +08:00
Heatherm Huang
a008b63c16
Add composite group route registry
2026-07-23 09:20:18 +08:00
Heatherm Huang
c8d1e2e16f
Harden composite group product surfaces
2026-07-23 09:19:25 +08:00
Heatherm Huang
ebc1028771
Add composite group routing
2026-07-23 09:19:24 +08:00
wucm667
44093579e9
fix(billing): normalize channel pricing model names
2026-07-22 20:25:27 +00:00
Heatherm Huang
47ad29db3e
fix(openai): quarantine proxies after stream disconnects
2026-07-23 00:12:28 +08:00
Heatherm Huang
33d694b89b
fix(simple-mode): enable images for auto Grok default
2026-07-23 00:08:23 +08:00
Heatherm Huang
ca0d3314cf
fix(grok): cool down accounts after 402
2026-07-23 00:06:04 +08:00
wjx2951874
7914433011
feat(payment): add mobile Alipay precreate deep link
2026-07-22 19:18:04 +08:00
github-actions[bot]
60013c5f10
chore: sync VERSION to 0.1.163 [skip ci]
2026-07-22 09:08:53 +00:00
li
3e26dfa5bb
style: 统一 input 包装类型为 []any,与正常 OAuth 路径一致
2026-07-22 16:49:31 +08:00
li
851436c552
fix(openai): OAuth 透传路径补齐 input 规范化,修复 Input must be a list
...
openai_passthrough=true 的 OAuth 账号透传路径
(normalizeOpenAIPassthroughOAuthBody) 未对 input 字段做
string→array 转换,导致上游拒绝 "Input must be a list"。
正常 OAuth 路径 (openai_codex_transform.go:290) 已有此逻辑,
透传路径遗漏。补齐三种非数组 input 的规范化:
- string → [{type:"message",role:"user",content:<text>}]
- 空白 string → []
- 单 object → [<object>]
2026-07-22 16:46:29 +08:00
Wesley Liddick and GitHub
cffea2979b
Merge pull request #4701 from nagi330/fix/records-model-filter-0721
...
fix(usage): 统一后台使用记录模型筛选口径,解决 grok 相关模型无法过滤问题
2026-07-22 14:51:15 +08:00
Wesley Liddick and GitHub
5e9d75b863
Merge pull request #4719 from superman2003/fix/grok-403-model-sync-4713-4715
...
fix(grok): sync OAuth models and isolate policy 403s
2026-07-22 14:26:07 +08:00
superman2003
ef8275aede
fix(grok): sync OAuth models and isolate policy 403s
2026-07-22 13:32:35 +08:00
superman2003
f8445a241b
fix(grok): round-trip Codex client tools on Responses
2026-07-22 12:15:48 +08:00
nagi330
fde95fcd0f
fix(usage): 统一后台使用记录模型筛选口径
2026-07-22 09:51:04 +08:00
Wesley Liddick and GitHub
ebfaf2496b
Merge pull request #4674 from AdrianZhaoDev/main
...
feat(groups): add OpenAI reasoning policy
2026-07-22 09:37:06 +08:00
Wesley Liddick and GitHub
a185705d19
Merge pull request #4684 from superman2003/fix/opencode-codebuddy-cache
...
fix(grok): preserve OpenCode and CodeBuddy cache sessions
2026-07-22 09:36:41 +08:00
Wesley Liddick and GitHub
003deac540
Merge pull request #4696 from tylzh97/fix/issue-4694-codex-relay
...
fix(codex): 保留级联中继的客户端指纹
2026-07-22 09:36:28 +08:00
Wesley Liddick and GitHub
3f7beb4679
Merge pull request #4676 from superman2003/fix/channel-monitor-decrypt-scheduling
...
fix(monitor): stop retrying monitors with undecryptable API keys
2026-07-22 09:35:54 +08:00
Wesley Liddick and GitHub
7905d02ce5
Merge pull request #4679 from superman2003/fix/scheduler-last-used-side-key
...
fix(scheduler): isolate LastUsedAt cache writes
2026-07-22 09:35:42 +08:00
Wesley Liddick and GitHub
134a2c0bd3
Merge pull request #4670 from wucm667/fix/issue-4669-scheduler-quota-metadata
...
fix: preserve quota state in scheduler metadata
2026-07-22 09:35:29 +08:00
shaw
c5971a6fcb
fix(deps): bump golang.org/x/text to v0.39.0 to resolve GO-2026-5970
...
govulncheck newly flags GO-2026-5970 (infinite loop on invalid input in
golang.org/x/text < v0.39.0), causing every fresh backend-security CI run
to fail. Upgrading x/text pulls sibling golang.org/x/* modules
(crypto/mod/net/sync/sys/term/tools) to their matching minor versions.
2026-07-22 09:33:47 +08:00