Steven Moder
b3ad9b67cf
fix(i18n): fail builds on missing locale keys
2026-09-06 04:16:06 +08:00
github-actions[bot]
ab99d56e96
chore: sync VERSION to 0.2.1 [skip ci]
2026-09-05 09:45:17 +00:00
Wesley Liddick
578785ee7f
Merge pull request #6640 from cyhhao/fix/claude-billing-fingerprint
...
fix(claude): align billing fingerprint with outbound User-Agent
v0.2.1
2026-09-05 16:59:33 +08:00
Wesley Liddick
ed7c8f2208
Merge pull request #6572 from lyy0709/codex/gpt-6-astra
...
feat(openai): complete GPT-6 Astra support
2026-09-05 16:50:40 +08:00
cyh
2e1c7c00a6
test(claude): check request body close errors
2026-09-05 16:43:54 +08:00
cyh
994ca26e92
fix(claude): align billing fingerprint with outbound user agent
2026-09-05 16:34:00 +08:00
Wesley Liddick
d2f87c612e
Merge pull request #6638 from feeeei/feat/images-url-to-b64json-backfill
...
feat(images): 账户开关将生图结果 url 下载回填为 b64_json
2026-09-05 16:24:40 +08:00
lyy0709
62cd63bfda
fix(openai): retain capabilities when model listing is unavailable
2026-09-05 16:24:15 +08:00
lyy0709
dee35a841d
merge: reconcile Astra fixes with upstream capability sync
2026-09-05 16:19:57 +08:00
Wesley Liddick
fb44e2dd09
Merge pull request #6514 from StarryKira/codex/anthropic-reasoning-pricing
...
feat: add Anthropic reasoning effort and Fable 5.1 max pricing
2026-09-05 16:19:18 +08:00
Wesley Liddick
c42d78e26c
Merge pull request #6571 from DuskLin/feat/codex-ultrafast-tier
...
feat(codex): support ultrafast service tier
2026-09-05 16:18:16 +08:00
Wesley Liddick
2dc287f2e0
Merge pull request #6636 from specialpointcentral/cyber-ws-recording-fix
...
fix(openai): record WS cyber policy failures across paths
2026-09-05 16:17:33 +08:00
Wesley Liddick
83094abf21
Merge pull request #6536 from wucm667/fix/issue-6526-mapped-model-scheduling
...
fix(openai): schedule accounts with mapped model
2026-09-05 16:17:04 +08:00
Wesley Liddick
aafe93b335
Merge pull request #6557 from Ritel-T/pr/compact-admin-account-list
...
perf(admin): return compact account lists for lite requests
2026-09-05 16:16:26 +08:00
Wesley Liddick
cc52c93ad7
Merge pull request #6539 from creamtea47/codex/fix-delegation-bootstrap-resume
...
fix(openai): 兼容历史任务委派续聊
2026-09-05 16:16:00 +08:00
lyy0709
d7f048a265
fix(openai): preserve synced Astra capabilities and continuation
2026-09-05 16:13:28 +08:00
Wesley Liddick
0d9e7e1530
Merge pull request #6628 from baryon/contrib/openai-gpt6-astra-capability-sync
...
fix(openai): persist GPT-6 Astra Codex capabilities from upstream sync
2026-09-05 16:07:50 +08:00
Wesley Liddick
9b4fcfb897
Merge pull request #6606 from luckydududu/feat/claude-cli-version-env-override
...
feat(claude): allow operators to override the advertised CLI version
2026-09-05 16:05:33 +08:00
Wesley Liddick
9517f12cdd
Merge pull request #6510 from wall-wxk/fix/release-session-slot-on-forward-failure
...
fix(gateway): 转发失败的请求立即释放会话槽,不再占用整个空闲超时窗口
2026-09-05 16:05:06 +08:00
Wesley Liddick
40f4d450be
Merge pull request #6507 from wucm667/fix/issue-6501-glm53-thinking-effort
...
fix(gateway): normalize GLM-5.3 thinking effort
2026-09-05 16:04:16 +08:00
Wesley Liddick
620eb3fd00
Merge pull request #6581 from r266-tech/r266/forward-opencode-session
...
fix(openai): scope OpenCode session forwarding
2026-09-05 16:03:57 +08:00
Wesley Liddick
c6ff69fd12
Merge pull request #6542 from wucm667/fix/issue-6530-gateway-concurrency-origin
...
fix(handler): distinguish gateway admission rejections
2026-09-05 16:03:17 +08:00
Wesley Liddick
7b271bbee9
Merge pull request #6529 from wucm667/fix/issue-6521-preserve-passthrough-reasoning
...
fix(openai): preserve reasoning effort in API-key passthrough
2026-09-05 16:02:56 +08:00
Wesley Liddick
68f099707e
Merge pull request #6553 from wucm667/fix/issue-6547-heartbeat-bootstrap
...
fix(openai): normalize automation heartbeat bootstrap
2026-09-05 16:02:36 +08:00
feeeei
c227863d51
fix(images): 生图 url 回填下载拒绝私网目的地并只信字节嗅探
...
账户开关 images_url_to_b64_json 下载的图片 url 来自上游响应,是不可信输入。此前沿用
base_url 的 security.url_allowlist 策略,默认配置下只做格式校验,上游返回
localhost:8080 之类地址时网关会真的去请求内网。
- 下载 URL 主机为 localhost、回环、私网、链路本地、未指定地址的字面量时直接拒绝,
不受 security.url_allowlist 配置影响(urlvalidator 导出 IsBlockedHost)
- 新增 ctx 标记 WithHTTPUpstreamPublicHostsOnly:共享上游客户端对带标记的请求无视配置
校验解析后 IP,并为其克隆客户端挂 redirectChecker,重定向保持跟随但每一跳都校验
- 下载内容改为只信 http.DetectContentType 嗅探结果且限 png/jpeg/webp/gif,
响应头不再作为依据
- 下载失败仍只记日志并保留原样;超时与端口策略不变
2026-09-05 15:50:56 +08:00
lyy0709
3a8c9f16de
Merge remote-tracking branch 'upstream/main' into codex/gpt-6-astra
2026-09-05 15:48:49 +08:00
Qi HU
2da31290a1
fix(openai): record WS cyber policy failures across paths
...
Cyber-policy detection only inspected response.failed, and the ingress check ran after error-specific early returns. As a result, error-shaped failures and the connection-pool, HTTP-bridge, and WSv2 paths could miss cyber-policy hits.
Centralize event marking and invoke it before retry and failover returns across the WebSocket implementations. Preserve the recorded guard during account failover and defer connection blocking until the logical failover chain completes, avoiding duplicate records while ensuring subsequent turns are blocked.
2026-09-05 15:32:29 +08:00
feeeei
3c53ba01a7
feat(images): 账户开关将生图结果 url 下载回填为 b64_json
...
部分第三方 GPT-image 上游把 Images 响应里的 b64_json 换成 url,按官方接口实现的
客户端读不到图。账户 extra.images_url_to_b64_json 开启后,OpenAI API Key 的
Images 非流式响应里 b64_json 缺失或为空且 url 非空的项,由网关下载 url 内容并以
base64 回填 b64_json,url 与其余字段原样保留;异步生图任务复用同一路径。
- 下载经账户代理发起,沿用 base_url 的出站 URL 校验策略(validateUpstreamBaseURL
抽出 validateOutboundURL,nil cfg 按仅格式校验处理),单图上限 20MB 且须为图片
内容(响应头或字节嗅探);data: URL 直接取 base64 载荷
- 单项下载失败仅记日志并保留原样;客户端显式 response_format=url 时不回填;
流式响应不处理
- 创建/编辑账户弹窗在 OpenAI API Key 的 Responses 模式块后新增“生图结果 URL 转
base64”开关,中英文案;新增 openai_images_b64_backfill_test.go
- 只被 unit 标签测试引用的定价目录测试辅助补上 //go:build unit(admin 包整文件加标签,
service 包的 newPricingServiceFromModelPricing 搬到 pricing_stub_helpers_unit_test.go),
消除 golangci-lint 在默认标签下的 unused 报错
2026-09-05 15:17:57 +08:00
Wesley Liddick
07bf8b92fd
Merge pull request #6550 from weiness/fix/alipay-payment-reconciliation
...
修复支付宝回调延迟或丢失,已支付订单可能长时间停留在待支付状态的问题
2026-09-05 15:08:56 +08:00
Wesley Liddick
63dc24b5e8
Merge pull request #6626 from wucm667/feat/issue-6624-none-reasoning-mapping
...
feat(openai): allow none as reasoning mapping source
2026-09-05 15:06:32 +08:00
Wesley Liddick
8f1d6af3ed
Merge pull request #6531 from wucm667/fix/issue-6524-continuation-unavailable-recovery
...
fix(openai): recover unavailable continuation responses
2026-09-05 15:06:02 +08:00
Wesley Liddick
85f431a072
Merge pull request #6620 from wucm667/fix/issue-6615-astra-messages-cache
...
fix(openai): enable Astra messages prompt caching
2026-09-05 15:04:13 +08:00
Wesley Liddick
d7fb9b5d35
Merge pull request #6593 from wucm667/fix/issue-6584-chat-tool-discovery
...
fix(apicompat): preserve discovered tools in chat fallback
2026-09-05 15:03:52 +08:00
Wesley Liddick
eba6ea5639
Merge pull request #6590 from wucm667/fix/issue-6582-search-tool-capability
...
fix(codex): advertise search capability for bridged routes
2026-09-05 15:03:31 +08:00
Wesley Liddick
2ad6e8fb75
Merge pull request #6599 from wucm667/fix/issue-6598-gemini-custom-models-list
...
fix(gemini): apply custom list to native models endpoint
2026-09-05 15:03:08 +08:00
Wesley Liddick
570bd084c2
Merge pull request #6594 from wucm667/fix/issue-6592-preserve-zero-system-metrics
...
fix(ops): preserve zero-valued system metrics
2026-09-05 15:02:40 +08:00
Wesley Liddick
15278fe2f9
Merge pull request #6580 from OG-Wang/fix/sidebar-collapse-when-active
...
fix(frontend): allow collapsing sidebar groups while a child route is active
2026-09-05 15:02:30 +08:00
Wesley Liddick
c4e6dcfd80
Merge pull request #6602 from ZeroClover/feat/codex-manifest-pinned-accounts
...
feat(codex): pinned-accounts Codex model manifest for OpenAI groups
2026-09-05 14:51:17 +08:00
Wesley Liddick
701f844755
Merge pull request #6555 from feeeei/feat/usage-upstream-request-id
...
feat(usage): 用量记录落库直接上游的请求 ID,并支持按账户配置响应头名
2026-09-05 14:36:07 +08:00
Wesley Liddick
91cf660377
Merge pull request #6397 from feeeei/fix/openai-ws-replay-oom-6382
...
fix(openai-ws): eliminate O(T²) replay copying and invalid_encrypted_content retry storms
2026-09-05 14:32:11 +08:00
Wesley Liddick
78e1aaedb9
Merge pull request #6535 from feeeei/feat/pricing-custom-file-hot-reload
...
feat(pricing): fallback/override 定价文件按内容哈希热重载,改动无需重启生效
2026-09-05 14:31:09 +08:00
shaw
708b85a6a4
fix: complete upstream request id handling
2026-09-05 14:18:13 +08:00
shaw
1cab4d8c22
fix: make custom pricing reload coherent
2026-09-05 14:18:13 +08:00
Wesley Liddick
d8b9a83f8c
Merge pull request #6492 from feeeei/main
...
fix(gateway): 负载感知调度补齐渠道模型限制的逐账号检查
2026-09-05 14:06:21 +08:00
Long Li and Cursor
a016bd4ba5
style: gofmt upstream models capability sync tests
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-05 14:58:51 +09:00
Long Li and Cursor
983a3db3af
fix(openai): persist GPT-6 Astra Codex capabilities from upstream sync
...
Official OpenAI hosts and models.dev entries without an api field left
Astra falling back to reasoning effort none and empty Fast tiers. Persist
complete per-model metadata, advertise Astra reasoning/Fast locally, and
surface partial sync warnings when image models remain incomplete.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-05 14:45:06 +09:00
wucm667
7969751f1f
feat(openai): allow none as reasoning mapping source
2026-09-05 12:32:30 +08:00
wucm667
4aaf5cb73b
fix(openai): enable Astra messages prompt caching
2026-09-05 10:58:05 +08:00
Lucky and Claude Opus 5
e9bad40b10
feat(claude): allow operators to override the advertised CLI version
...
Anthropic gates newer models on a minimum Claude Code client version. With
CLICurrentVersion pinned at 2.1.220, claude-fable-5-1 fails every request with
"Claude Code 2.1.220 does not support this model; version 2.1.251 or newer is
required", and the only fix is a release that bumps one constant.
Add SUB2API_CLAUDE_CLI_VERSION, mirroring what internal/pkg/xai already does
with XAI_GROK_CLI_VERSION. CLICurrentVersion remains the built-in pin; the new
CLIVersion() is what every consumer reads. With no env var set the resolved
value equals the pin, so existing deployments are unaffected.
The value is resolved once at package init rather than per call: the User-Agent
header and the request body's cc_version are written by different code paths for
the same request, and reading different values would make that request
contradict itself.
Validation is strict (three numeric segments, not below the pin) because
identity_service.go documents what a malformed version does once it reaches an
account's persistent fingerprint: sustained 429s without reset headers, 5s
fallback cooldown, pool collapse into a 503 storm, and no reset entry point.
Invalid values warn and fall back rather than being silently dropped.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_0168uDMAj9anaJrnH8CeFze6
2026-09-04 18:01:34 +00:00
Zero Clover
1e28ef5942
feat(codex): pinned-accounts Codex model manifest for OpenAI groups
2026-09-05 00:10:24 +08:00