Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
4476 commits
Select commit Hold shift + click to select a range
c556aee
refactor(platform): 多协议供应商的转发与探测判断改查 profile
SavitarC Sep 27, 2026
7ffa38a
feat(frontend): 平台列表与多协议账号表单改由平台清单驱动
SavitarC Sep 27, 2026
e2939cd
feat(platform): 接入 Command Code 平台
SavitarC Oct 3, 2026
874871a
feat(platform): 接入 Cline 平台
SavitarC Oct 3, 2026
9264414
fix(provider): 修复 Claude 计费与钱包冷却并隔离模型目录缓存
SavitarC Oct 9, 2026
7ca08d5
fix(frontend): 按平台能力展示模型同步入口并同步 Zen 规则
SavitarC Oct 9, 2026
387ee20
test(platform): 补录制路由基准与平台约束迁移防护
SavitarC Oct 9, 2026
c61f6eb
fix(security): 升级 Go 1.27.2 与 x/net 修复安全扫描
SavitarC Oct 9, 2026
5f93bb3
fix(ci): 升级 lint 支持 Go 1.27.2 并保留 HTTP2 兼容检查
SavitarC Oct 9, 2026
d85cebe
fix(ci): 升级 schema 导入器支持 Go 1.27.2 导出格式
SavitarC Oct 9, 2026
d0392ed
Merge pull request #7618 from SavitarC/feat/provider-profile
Wei-Shaw Oct 9, 2026
dab3b87
fix(openai): declare web_search when OAuth history replays web_search…
IrisRainbowNeko Oct 8, 2026
64caa9a
fix(openai): declare web_search via additional_tools for Responses Lite
IrisRainbowNeko Oct 8, 2026
85e3110
fix(lint): check type assertions in web_search history helper and test
Wei-Shaw Oct 9, 2026
f2669c8
Merge pull request #7939 from IrisRainbowNeko/fix/issue-7927-web-sear…
Wei-Shaw Oct 9, 2026
3a6fd1c
chore: sync VERSION to 0.2.15 [skip ci]
github-actions[bot] Oct 9, 2026
9a51333
feat(groups): 分组名称与描述支持多语言
feeeei Oct 6, 2026
b686842
fix(gateway): sync main routing without widening responses retry
wucm667 Oct 9, 2026
2bfc494
fix(ops): initialize custom time ranges in local time
ouchihao Oct 9, 2026
d016289
fix(select): preserve keyboard input during IME composition
ouchihao Oct 9, 2026
bd2f53b
fix(groups): reject nonpositive rate multiplier edits
ouchihao Oct 9, 2026
8e3d75b
fix(monitor): refresh cached availability on automatic reload
ouchihao Oct 9, 2026
5753552
fix(gemini): preserve authorization URL error messages
ouchihao Oct 9, 2026
6b2fdfc
fix(openai): return JSON for non-stream OAuth passthrough /v1/responses
ShuminFu Oct 9, 2026
9b54074
fix(openai): return JSON for incomplete/cancelled non-stream Responses
ShuminFu Oct 9, 2026
29b2d72
test(web): use shipped SVG asset in embedded frontend tests
wucm667 Oct 10, 2026
66b7ce0
fix(frontend): show full account group names
hutututtt Oct 10, 2026
ce6242f
fix(quota): recognize international coding endpoints
wucm667 Oct 10, 2026
0f189af
fix(groups): ignore stale RPM override loads
obst4cle Oct 10, 2026
5db2d69
fix(billing): retain DeepSeek V4 Pro pricing after September 14
Yukinoshita-Yukino Oct 10, 2026
3bfd40f
fix(gemini): 引用缓存不存在的 403 不再停用账号并换号
feeeei Oct 9, 2026
d5a802f
feat(gemini): 支持显式上下文缓存(AI Studio / Vertex / 自建网关上游)
feeeei Oct 10, 2026
3abd646
fix(ops): Gemini 原生路由的网关本地错误按错误类型归类
feeeei Oct 10, 2026
64331a9
ui(gemini): Vertex 显示名改为 Agent Platform (Vertex)
feeeei Oct 10, 2026
81e6ec5
feat(gemini): Vertex 账号支持 API Key 认证
feeeei Oct 10, 2026
2588675
fix(gemini): 第三方上游 API Key 与 Vertex 不再套用 AI Studio 等级和模拟配额
feeeei Oct 10, 2026
1c68f99
feat(gemini): 适配 AI Studio AQ. 格式 Key
feeeei Oct 10, 2026
6f9b02f
feat(gemini): Vertex 服务账号支持同步上游模型列表
feeeei Oct 10, 2026
c9e4b26
fix(account): 同步上游模型失败时显示后端返回的错误原因
feeeei Oct 10, 2026
05d7946
fix(gemini): 显式缓存错误透传收窄到上游网关账号,延长沿用创建时计费口径
feeeei Oct 10, 2026
f0ee427
feat(gemini): 显式缓存存储价内置官方价并按 Pro / Flash 系列兜底
feeeei Oct 11, 2026
4426593
fix(gemini): 3.6 Flash 兜底价改为官方优惠价
feeeei Oct 11, 2026
daebb7a
fix(gemini): 模型列表与模型详情接口支持 Agent Platform (Vertex) 账号
feeeei Oct 11, 2026
b63dafa
Merge pull request #7982 from wucm667/fix/issue-7981-embedded-static-…
Wei-Shaw Oct 12, 2026
6977bb6
Merge pull request #7983 from hutututtt/fix/account-group-names
Wei-Shaw Oct 12, 2026
da97995
Merge pull request #7974 from ouchihao/codex/bug-gemini-auth-url-error
Wei-Shaw Oct 12, 2026
0ae1b37
Merge pull request #7973 from ouchihao/codex/bug-monitor-auto-detail-…
Wei-Shaw Oct 12, 2026
f2b1556
Merge pull request #7972 from ouchihao/codex/bug-group-rate-edit-vali…
Wei-Shaw Oct 12, 2026
d702653
Merge pull request #7970 from ouchihao/codex/bug-select-ime-navigation
Wei-Shaw Oct 12, 2026
20b0be5
Merge pull request #7969 from ouchihao/codex/bug-ops-custom-timezone
Wei-Shaw Oct 12, 2026
59fb227
Merge pull request #7933 from yan9651688/feat/issue-7926-ops-details-…
Wei-Shaw Oct 12, 2026
c2885c4
Merge pull request #7738 from r266-tech/codex/monitor-add-platform
Wei-Shaw Oct 12, 2026
832677a
Merge pull request #7717 from ouchihao/codex/bug-payment-countdown-drift
Wei-Shaw Oct 12, 2026
6a6d472
Merge pull request #7696 from a408665321/codex/issue-7687-timer-only
Wei-Shaw Oct 12, 2026
6d509c6
Merge pull request #7711 from wucm667/fix/issue-7709-risk-control-groups
Wei-Shaw Oct 12, 2026
5dbb8f7
Merge pull request #7649 from Yukinoshita-Yukino/fix/codex-image-brid…
Wei-Shaw Oct 12, 2026
e468262
Merge pull request #8002 from obst4cle/fix/group-rpm-override-stale-load
Wei-Shaw Oct 12, 2026
0718581
fix(codex): raise GPT-6.1 Sol generated context default to 500k
Larry-Labs Oct 12, 2026
4376868
fix(billing): 取消 GPT-6.1 Sol 订阅长上下文附加费
Wei-Shaw Oct 12, 2026
7b03b1f
Merge pull request #8036 from Wei-Shaw/fix/gpt61-sol-subscription-lon…
Wei-Shaw Oct 12, 2026
26b31a8
fix(gemini): 显式缓存修改串行化、失败回滚,确定金额费用按 Key / 订阅预留
feeeei Oct 12, 2026
9591136
Merge pull request #8033 from Larry-Labs/fix/gpt61-sol-500k-context
Wei-Shaw Oct 12, 2026
fc82e83
fix(account): 显式模型级 401 规则在网关故障转移入口生效
feeeei Oct 12, 2026
8b74741
fix(groups): 广场 Vary 保留 Origin,分组译文语言代码统一大小写
feeeei Oct 12, 2026
ba2a717
fix(gemini): preserve images from tool results
wucm667 Oct 12, 2026
492c630
fix(gemini): satisfy test lint
wucm667 Oct 12, 2026
ab80abc
Merge pull request #7960 from feeeei/feat/group-i18n
Wei-Shaw Oct 12, 2026
2023c29
fix(account): 计数、Bedrock 与重试耗尽入口把上游模型交给错误处理
feeeei Oct 12, 2026
43a3c19
fix(gemini): 显式缓存恢复流程区分账号已删除与暂不支持缓存,上游必已过期后作废意图
feeeei Oct 12, 2026
cfbbfd6
fix(antigravity): isolate image model rate limits
wucm667 Oct 13, 2026
26f70c6
fix(gateway): wire Claude Haiku 5.5 into Responses bridge
xcrong Oct 13, 2026
c4bdc48
fix(haiku): 修正采样边界、默认模型配置与 lint
Wei-Shaw Oct 13, 2026
b669dc6
test(frontend): 将模型白名单回归用例纳入 CI
Wei-Shaw Oct 13, 2026
7c5afa4
Merge pull request #7957 from xcrong/feat/haiku-5-5-support-7919
Wei-Shaw Oct 13, 2026
53c21fe
Merge pull request #8006 from feeeei/feat/gemini-explicit-cache
Wei-Shaw Oct 13, 2026
9d5e63a
合并 main 并解决 PR #7828 的测试文件冲突
Wei-Shaw Oct 13, 2026
49dc6e2
Merge pull request #7828 from feeeei/feat/temp-unsched-rule-scope
Wei-Shaw Oct 13, 2026
bba8592
Merge pull request #8046 from wucm667/fix/issue-8040-antigravity-imag…
Wei-Shaw Oct 13, 2026
8d7d318
Merge pull request #8038 from wucm667/fix/issue-8035-gemini-tool-resu…
Wei-Shaw Oct 13, 2026
49b2122
Merge pull request #7991 from wucm667/fix/issue-7988-international-quota
Wei-Shaw Oct 13, 2026
0184257
Merge pull request #7810 from wucm667/fix/issue-6247-responses-chat-f…
Wei-Shaw Oct 13, 2026
4d9ac3e
chore: sync VERSION to 0.2.16 [skip ci]
github-actions[bot] Oct 13, 2026
89ad4c2
fix(gemini): Vertex 共享容量不足的 429 不冷却账号,改为同号退避重试
feeeei Oct 13, 2026
9c2cca9
chore: update sponsors
Wei-Shaw Oct 14, 2026
20c4bf5
fix(gemini): Vertex SA 已不存在时账号置为 error 并换号
feeeei Oct 14, 2026
14cd587
fix(gemini): 每个上游错误响应只检查一次错误策略
feeeei Oct 14, 2026
c6c9935
feat(gemini): 补齐 Gemini 4 Argon 计费
feeeei Oct 14, 2026
867563a
fix(gateway): honor Anthropic protocol base URLs
wucm667 Oct 14, 2026
26e55cf
fix(openai): emulate web_search on /v1/messages for OpenAI API Key ac…
SipengXie2024 Oct 14, 2026
c01b2cb
ci: retrigger CI (previous run hit Docker Hub rate limit)
ShuminFu Oct 14, 2026
7de1511
fix(openai): exclude OAuth accounts from web search emulation
SipengXie2024 Oct 14, 2026
16611a8
fix(openai): isolate Codex imports by workspace
wucm667 Oct 14, 2026
373d435
feat(antigravity): support Gemini 4 Argon and accurate upstream model…
baryon Oct 14, 2026
2a8cb08
feat(apicompat): configure minimum output token floor
wucm667 Oct 14, 2026
feab6d8
fix(antigravity): preserve tool_result images, native Gemini function…
baryon Oct 14, 2026
92c9433
chore: update sponsors
Wei-Shaw Oct 15, 2026
1774b79
fix(zhipu): 修正 GLM Coding Plan 5h/weekly 用量窗口标反
coder-zhw Oct 14, 2026
d19265d
fix(gateway): 拒绝含 OpenAI 网关 OAuth 的 composite 歧义路由,防止凭据误入 Anthropic 管线
Wei-Shaw Oct 15, 2026
3856a02
Merge pull request #8106 from Wei-Shaw/fix/composite-oauth-ambiguous-…
Wei-Shaw Oct 15, 2026
fdc7f1f
Merge pull request #8087 from coder-zhw/fix/zhipu-credit-limit-window…
Wei-Shaw Oct 15, 2026
3b83e04
Merge pull request #8060 from feeeei/fix/gemini-vertex-shared-capacit…
Wei-Shaw Oct 15, 2026
abdc827
Merge pull request #8076 from feeeei/fix/gemini-vertex-sa-and-error-p…
Wei-Shaw Oct 15, 2026
dcde68a
Merge pull request #8078 from feeeei/feat/gemini-4-argon-pricing
Wei-Shaw Oct 15, 2026
8afd2ab
Merge remote-tracking branch 'origin/main' into contrib/gemini-4-argo…
Wei-Shaw Oct 15, 2026
9d3cc45
fix(antigravity): keep legacy default passthroughs and bill Claude 5.…
Wei-Shaw Oct 15, 2026
857a76d
Merge pull request #8093 from baryon/contrib/gemini-4-argon-support
Wei-Shaw Oct 15, 2026
64211de
feat(gemini): 兼容入口转发思考档位并流式返回思考摘要
feeeei Oct 15, 2026
58b5e85
Merge pull request #8094 from wucm667/feat/issue-8092-configurable-mi…
Wei-Shaw Oct 15, 2026
ddef055
Merge pull request #8079 from wucm667/fix/issue-8074-anthropic-base-url
Wei-Shaw Oct 15, 2026
698d142
Merge pull request #8088 from wucm667/fix/issue-8077-workspace-aware-…
Wei-Shaw Oct 15, 2026
c2cca51
revert(accounts): restore inline account filters (#7853)
Wei-Shaw Oct 15, 2026
26aab6d
fix(openai): respect GPT-5.5 retirement on ChatGPT upstreams
Larry-Labs Oct 15, 2026
1b2243a
Merge pull request #8120 from Wei-Shaw/revert/inline-account-filters
Wei-Shaw Oct 15, 2026
7c6f706
fix(payment): validate order types and keep refund deductions while p…
StarryKira Oct 15, 2026
f996b0b
fix(payment): load Stripe client secret from the local order snapshot
StarryKira Oct 15, 2026
44e35fb
fix(payment): finalize failed pending refunds atomically
Wei-Shaw Oct 15, 2026
83337a0
fix(payment): query Alipay refund status and close unsupported order …
Wei-Shaw Oct 15, 2026
f37b69b
fix(payment): treat Alipay refund query errors as pending and delay n…
Wei-Shaw Oct 15, 2026
86f8443
fix(openai): evaluate retirement after public alias projection
Larry-Labs Oct 15, 2026
52b3ca9
Merge pull request #8122 from Wei-Shaw/fix/payment-order-type-refund-…
Wei-Shaw Oct 16, 2026
1b92038
fix(payment): fix EasyPay order queries and confirm notifications bef…
Wei-Shaw Oct 16, 2026
b8cfb78
Merge pull request #8133 from Wei-Shaw/fix/easypay-query-confirm
Wei-Shaw Oct 16, 2026
a431e53
Merge remote-tracking branch 'origin/main' into pr-8114
Wei-Shaw Oct 16, 2026
455d317
Merge pull request #8114 from feeeei/feat/gemini-compat-thinking
Wei-Shaw Oct 16, 2026
e068c3d
fix(openai): preserve overload retries after queued and metadata events
zenggang Oct 16, 2026
bdfe215
fix(responses): 网关送出的 Responses 对象一律带 created_at,修复 grok-build 反序列化失败
Wei-Shaw Oct 16, 2026
f2e5b55
test(responses): 模型改写转发测试夹具补齐上游 created_at
Wei-Shaw Oct 16, 2026
71e6b6a
test(responses): 模型改写转发测试夹具补齐上游 created_at
Wei-Shaw Oct 16, 2026
7fcaa32
fix(accounts): persist platform and status filters
qhmhyp Oct 16, 2026
43157c4
Merge pull request #8121 from Larry-Labs/fix/gpt55-subscription-retir…
Wei-Shaw Oct 16, 2026
b14f316
Merge pull request #8080 from SipengXie2024/fix/openai-messages-web-s…
Wei-Shaw Oct 16, 2026
060d016
Merge pull request #8140 from Wei-Shaw/fix/issue-8118-responses-creat…
Wei-Shaw Oct 16, 2026
b0a02a3
chore: sync VERSION to 0.2.17 [skip ci]
github-actions[bot] Oct 16, 2026
2b1f129
fix(gemini): 流式中途客户端断开时按已收集用量计费
feeeei Oct 16, 2026
1cdecf4
fix(billing): Grok 4.7 Fast 按官方 Fast 价卡计费 (#8119)
StarryKira Oct 17, 2026
9c41b32
fix(gemini): prompt 被拦截只报缓存命中时 input_tokens 不再为负
feeeei Oct 17, 2026
c7bfcd9
fix(tools): normalize parameter constants and annotations
wucm667 Oct 17, 2026
3f4e13a
Merge upstream main and resolve pricing comment conflict
Yukinoshita-Yukino Oct 19, 2026
94c7d6b
fix(gateway): Anthropic 账号 chat/responses 兼容流式客户端断开后读完上游再计费
feeeei Oct 19, 2026
ab71e12
fix(images): 异步生图转存的图片下载与同步回填策略对齐
Wei-Shaw Oct 19, 2026
378984d
Merge pull request #8223 from Wei-Shaw/fix/async-image-download-policy
Wei-Shaw Oct 19, 2026
afbef7c
fix(deepseek): avoid duplicate image payloads
wucm667 Oct 19, 2026
0fa0281
Merge pull request #8168 from feeeei/fix/gemini-stream-client-disconn…
Wei-Shaw Oct 19, 2026
8f2cbb5
Merge pull request #8177 from feeeei/fix/gemini-negative-input-tokens
Wei-Shaw Oct 19, 2026
d6120b5
feat(account): Vertex 账号支持配额上限
feeeei Oct 19, 2026
47cb84b
fix(gemini): 分组「允许当前分组生图」开关对 Gemini 系入口生效
feeeei Oct 16, 2026
4355236
fix(gateway): 兼容流上游未正常结束时报错并对齐原生收尾
feeeei Oct 19, 2026
8965487
perf(account): 模型映射签名改为与遍历顺序无关、零分配
feeeei Oct 20, 2026
38b72d7
fix(ratelimit): 模型限流快照写入改为写时复制
feeeei Oct 20, 2026
d5dbb5c
perf(gateway): 单 antigravity 账号分组判定改为按需求值
feeeei Oct 20, 2026
53002f6
perf(scheduler): 调度快照解码结果常驻进程内存
feeeei Oct 20, 2026
e0fa4b9
fix(ratelimit): avoid penalizing Cloudflare 1010 blocks
wucm667 Oct 20, 2026
cacc80b
fix(security): clear dependency security scan failures
wucm667 Oct 21, 2026
4c940c3
fix(ci): synchronize Go patch version checks
wucm667 Oct 21, 2026
4942b2a
Merge pull request #8139 from zenggang/contribute/openai-preoutput-me…
Wei-Shaw Oct 21, 2026
d744c22
Merge pull request #8142 from qhmhyp/fix/account-filter-persistence
Wei-Shaw Oct 21, 2026
9a16800
Merge pull request #8267 from wucm667/fix/issue-8266-security-scan
Wei-Shaw Oct 21, 2026
4c7e9b5
Merge pull request #8166 from feeeei/feat/vertex-account-quota
Wei-Shaw Oct 21, 2026
98f83b7
Merge pull request #8167 from feeeei/fix/gemini-group-image-generatio…
Wei-Shaw Oct 21, 2026
b751230
Merge pull request #8210 from feeeei/fix/anthropic-compat-stream-disc…
Wei-Shaw Oct 21, 2026
b6c3663
Merge pull request #8249 from feeeei/perf/lazy-single-antigravity-probe
Wei-Shaw Oct 21, 2026
b3e66f7
Merge pull request #8250 from feeeei/perf/model-mapping-signature
Wei-Shaw Oct 21, 2026
a34f373
Merge pull request #8251 from feeeei/perf/scheduler-snapshot-memo
Wei-Shaw Oct 21, 2026
67dca96
perf(billing): 账号配额累加按已设置的周期维度选择语句
feeeei Oct 21, 2026
624874b
Merge pull request #8269 from feeeei/perf/account-quota-increment-var…
Wei-Shaw Oct 21, 2026
5e45fa4
Merge pull request #8224 from wucm667/fix/issue-8222-deepseek-image-size
Wei-Shaw Oct 21, 2026
888c605
Merge pull request #8188 from wucm667/fix/issue-8187-tool-schema-cons…
Wei-Shaw Oct 21, 2026
aa48a8b
Merge pull request #8255 from wucm667/fix/issue-8248-cloudflare-json-403
Wei-Shaw Oct 21, 2026
7da09ca
chore: update sponsors
Wei-Shaw Oct 21, 2026
59100d3
fix(build): 对齐上游 Go 1.27.3 镜像版本
apple050620312 Oct 21, 2026
21cc926
Merge pull request #8275 from apple050620312/fix/docker-go-1.27.3
Wei-Shaw Oct 22, 2026
dba770d
Merge pull request #8170 from StarryKira/fix/issue-8119-grok-fast-pri…
Wei-Shaw Oct 22, 2026
de908ed
fix(ratelimit): 国产 Coding Plan 的频率型 429 改用秒级冷却
coder-zhw Oct 22, 2026
4197fa6
feat(gemini): 同账号重试次数改为可配置 gateway.max_same_account_retries_gemini
feeeei Oct 22, 2026
f965280
fix(pagination): keep page offsets from overflowing int
SipengXie2024 Oct 22, 2026
c591412
fix(openai): 合并 Codex overload 身份与空流安全重试修复
apple050620312 Oct 22, 2026
c5b8112
Merge pull request #8305 from apple050620312/fix/openai-overload-reco…
Wei-Shaw Oct 23, 2026
8286268
fix(deps): bump dompurify to 3.4.17 for GHSA-cg2g-xh64-v4q7 / GHSA-mr…
Wei-Shaw Oct 23, 2026
ac1b8f1
chore: update sponsors
Wei-Shaw Oct 23, 2026
9aa16c8
fix(pagination): validate numeric ranges and reuse safe offsets
SipengXie2024 Oct 23, 2026
5c185c5
chore: sync VERSION to 0.2.18 [skip ci]
github-actions[bot] Oct 23, 2026
e445cc3
新增按操作与资源范围授权的管理员 API 密钥
lyen1688 Oct 23, 2026
37067e8
Merge pull request #8319 from lyen1688/feat/scoped-admin-api-keys
Wei-Shaw Oct 24, 2026
fd99812
feat(billing): support per-image billing for multi-image requests
wx-11 Oct 24, 2026
1487fa5
fix(billing): count only images returned in upstream response
wx-11 Oct 24, 2026
cb29592
test(api): include image_count_billing in available groups contract
wx-11 Oct 24, 2026
aa1a1b1
fix(billing): gate per-image billing by endpoint and pricing mode
wx-11 Oct 24, 2026
917dbdc
fix(gemini): count fileData image outputs for billing
r266-tech Oct 24, 2026
014cc01
fix(grok): 补全原生 Responses 响应模型审计
aomsir Oct 24, 2026
7131b99
fix(grok): 补齐聚合路径跨事件模型冲突
aomsir Oct 24, 2026
d01f2eb
fix(grok): 固定聚合前序模型审计并跳过非 Grok
aomsir Oct 24, 2026
6202da0
fix(grok): 统一模型目录解析与观测状态
aomsir Oct 24, 2026
87266a7
fix(grok): 原子保存模型目录观测快照
aomsir Oct 24, 2026
b1cb2eb
fix(grok): 补齐取消与调用方事务的回归断言
aomsir Oct 24, 2026
41a6ff8
fix(grok): 对齐手动同步与后台目录观察
aomsir Oct 24, 2026
635b835
fix(grok): 让旧后台观察测试走 CAS 持久化
aomsir Oct 24, 2026
d4136ce
fix(grok): 提供账号模型目录差异诊断
aomsir Oct 24, 2026
bb11e83
fix(grok): 裸别名无法核验且自定义 ID 保留大小写
aomsir Oct 24, 2026
60931bc
fix(grok): 展示模型目录诊断并保留编辑草稿
aomsir Oct 24, 2026
ae5705d
fix(grok): 同账号刷新不再卡住目录同步
aomsir Oct 24, 2026
2db7ce3
fix(grok): 隔离过期目录同步并在切模式后刷新诊断
aomsir Oct 24, 2026
02db748
fix(grok): 保留受管目录快照并阻止非法时间与敏感失败日志
aomsir Oct 24, 2026
3f1c8f3
chore: update Sponsors
Wei-Shaw Oct 25, 2026
0d374b2
fix(grok): 精简目录诊断并按需展开详情
aomsir Oct 25, 2026
c68d312
fix(grok): 未知目录详情改为历史标题
aomsir Oct 25, 2026
32c00d6
fix(grok): 诊断文案不再读取继承属性
aomsir Oct 25, 2026
21b5b49
fix(grok): 统一目录同步入口并保留模式隔离
aomsir Oct 25, 2026
7f18239
fix(grok): 对齐模型编辑布局与响应式展示
aomsir Oct 25, 2026
9534f1c
fix(grok): 提高删除图标对比度并补齐同步按钮 Label in Name
aomsir Oct 25, 2026
3ce09c8
fix(billing): keep tokens for channel per-request image tiers
Wei-Shaw Oct 25, 2026
ba81c7f
Merge pull request #8323 from wx-11/images-price
Wei-Shaw Oct 25, 2026
dfc13ce
fix(grok): 修复模型目录审计相关 lint 错误
aomsir Oct 25, 2026
cde6ddf
fix(images): reject oversized multipart uploads instead of truncating…
SipengXie2024 Oct 26, 2026
3e18e78
fix(usage): DeepSeek prompt_cache_hit_tokens 计为缓存读取
ychy7001 Oct 26, 2026
88d9c43
fix(admin): 管理员保护规则返回 400 而不是 500
ychy7001 Oct 21, 2026
14a5fe3
fix(antigravity): reject malformed non-streaming tool calls
lkon2112 Oct 26, 2026
3423667
feat(openai): support GPT-6.1 Terra
wucm667 Oct 26, 2026
d0afece
fix(model-plaza): prefer group model pricing over image fallback tiers
wx-11 Oct 27, 2026
a207412
fix(gemini): 绑定显式缓存的请求在池模式上游网关账号上按配置同账号重试
feeeei Oct 27, 2026
b2b1bcf
fix(models): 模型列表刷新进入 singleflight 后复查缓存,避免并发冷启动重复请求上游
feeeei Oct 27, 2026
ba5b218
fix(gateway): 修复 OpenCode 转发 DeepSeek 的角色兼容
fxjs Oct 27, 2026
7bce2cf
fix(claude): match JavaScript UTF-16 billing fingerprint semantics
StarryKira Oct 27, 2026
b332f16
Merge pull request #8364 from wucm667/feat/issue-8363-gpt61-terra
Wei-Shaw Oct 27, 2026
15701ba
Merge pull request #8339 from aomsir/fix/grok-model-catalog-audit
Wei-Shaw Oct 27, 2026
0232cb7
Merge pull request #8286 from coder-zhw/fix/cn-frequency-429-short-co…
Wei-Shaw Oct 27, 2026
3bd166b
Merge pull request #8377 from StarryKira/codex/fix-cc-version-utf16
Wei-Shaw Oct 27, 2026
bb021d3
Merge pull request #8326 from r266-tech/codex/gemini-file-images
Wei-Shaw Oct 27, 2026
3f1ae7e
Merge pull request #8003 from Yukinoshita-Yukino/codex/fix-deepseek-p…
Wei-Shaw Oct 27, 2026
98bcee7
Merge pull request #8366 from wx-11/fix/model-plaza-group-pricing
Wei-Shaw Oct 27, 2026
8e231ff
Merge pull request #8354 from ychy7001/fix/deepseek-cache-hit-tokens
Wei-Shaw Oct 27, 2026
af4462e
Merge pull request #8376 from fxjs/fix/opencode-deepseek-developer-role
Wei-Shaw Oct 27, 2026
2c9d976
Merge pull request #8303 from SipengXie2024/fix/pagination-offset-ove…
Wei-Shaw Oct 27, 2026
449b65a
Merge pull request #8348 from SipengXie2024/fix/images-upload-part-limit
Wei-Shaw Oct 27, 2026
f178e5a
Merge pull request #8362 from lkon2112/fix/nonstream-malformed-functi…
Wei-Shaw Oct 27, 2026
9eba617
fix(channels): preserve web_search_emulation platform dimensions on u…
wc4440222 Oct 28, 2026
b2e7c60
Merge pull request #8352 from ychy7001/fix/admin-guard-400
Wei-Shaw Oct 28, 2026
1352e89
test(channels): use checked type assertions in web search merge tests
wc4440222 Oct 28, 2026
0a2a29b
chore(deps): bump golang.org/x/net to v0.62.0 (GO-2026-6860)
Wei-Shaw Oct 28, 2026
de44e3a
fix(gemini): 分组账号都声明模型映射时,/v1beta/models 列表与详情按声明的模型应答
feeeei Oct 28, 2026
31564b2
fix(gemini): 刷新 Gemini 默认模型列表,移除已停用的 2.x 模型
feeeei Oct 28, 2026
8b3f33f
Merge pull request #8390 from wc4440222/pr/fix-websearch-emulation-di…
Wei-Shaw Oct 28, 2026
bf02c1a
Merge pull request #8395 from feeeei/fix/gemini-model-lists
Wei-Shaw Oct 28, 2026
7311b86
Merge pull request #8287 from feeeei/feat/gemini-same-account-retries…
Wei-Shaw Oct 28, 2026
184193f
Merge pull request #8369 from feeeei/fix/gemini-bound-cache-pool-retry
Wei-Shaw Oct 28, 2026
dece261
Merge pull request #8373 from feeeei/fix/openai-models-cache-singlefl…
Wei-Shaw Oct 28, 2026
a9240d5
chore: sync VERSION to 0.2.19 [skip ci]
github-actions[bot] Oct 28, 2026
4db8402
fix(openai): detect SSE body without Content-Type in OAuth passthroug…
ShuminFu Oct 28, 2026
a3298b4
Merge pull request #7979 from ShuminFu/fix/oauth-passthrough-non-stre…
Wei-Shaw Oct 28, 2026
165c302
chore: sync main with upstream Wei-Shaw/sub2api
mr-kelly Oct 29, 2026
1047944
fix(security): upgrade vue-i18n to 11.4.14 for GHSA-83rm-6c8r-g728
mr-kelly Oct 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
8 changes: 8 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@
*.md
!deploy/DOCKER.md
docs/
# admin-compliance gate (LegalDocumentView.vue) build-time imports
# docs/legal/*.md?raw into the frontend bundle; keep that subtree in the
# Docker build context even though docs/ is otherwise excluded.
!docs/legal/
!docs/legal/*.md

# IDE
.idea/
Expand Down Expand Up @@ -44,6 +49,9 @@ coverage/
.env.*
!.env.example

# 本地闭源插件目录可能包含发布签名私钥,绝不能进入 Docker 构建上下文。
/plugins/

# Local config
config.yaml
config.local.yaml
Expand Down
107 changes: 107 additions & 0 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# Security Policy

[English](#english) | [中文](#中文)

## English

### Reporting a Vulnerability

**Please do not report security vulnerabilities through public GitHub issues, pull requests, or discussions.**

Report them privately through GitHub's private vulnerability reporting:

**[Report a vulnerability](https://github.com/Wei-Shaw/sub2api/security/advisories/new)**

(Repository → **Security** tab → **Report a vulnerability**.) Only the maintainers can see the report, and the advisory becomes the place to discuss, fix, and eventually publish the issue.

If you cannot use GitHub private vulnerability reporting, email **dev@sub2api.org** instead, with `[Security]` in the subject line.

A useful report includes:

- The affected component and version (release tag or commit)
- Impact: what an attacker can do and which privileges they need
- Minimal reproduction steps or a proof of concept
- Any non-default configuration required to trigger the issue
- A suggested fix, if you have one

### Supported Versions

Sub2API releases frequently, and fixes ship in a new release rather than being backported.

| Version | Supported |
| ------- | --------- |
| Latest release | ✅ |
| Older releases | ❌ |

Please confirm that the issue reproduces on the latest release or on `main` before reporting.

### Scope

In scope: the Sub2API backend, frontend, official Docker images, and deployment files in this repository.

Usually out of scope:

- Issues that require already-compromised admin credentials or server access
- Risks arising from explicitly weakening documented security settings (for example, disabling `security.url_allowlist`)
- Vulnerabilities in upstream AI providers or third-party dependencies with no Sub2API-specific impact (please report those upstream)
- Missing best-practice headers or scanner output without a demonstrated impact

### Disclosure Process

1. We acknowledge the report and assess its validity and severity.
2. We develop a fix privately in the advisory and may ask you to verify it.
3. We publish a release containing the fix, then publish the GitHub Security Advisory (with a CVE when applicable), crediting you unless you prefer to stay anonymous.

Please keep details private until the advisory is published. This is a volunteer-maintained project, so response times are best effort.

## 中文

### 报告漏洞

**请不要通过公开的 Issue、Pull Request 或 Discussion 报告安全漏洞。**

请使用 GitHub 私密漏洞报告功能提交:

**[提交漏洞报告](https://github.com/Wei-Shaw/sub2api/security/advisories/new)**

(仓库 → **Security** 标签页 → **Report a vulnerability**。)报告仅维护者可见,后续的讨论、修复与公告发布都在该安全公告中进行。

如果无法使用 GitHub 私密漏洞报告,也可以发送邮件至 **dev@sub2api.org**,邮件标题请注明 `[Security]`。

报告中建议包含:

- 受影响的组件与版本(Release tag 或 commit)
- 影响:攻击者能做什么、需要什么权限
- 最小复现步骤或 PoC
- 触发问题所需的非默认配置
- 修复建议(如有)

### 支持的版本

Sub2API 发版频繁,安全修复随新版本发布,不向旧版本回移。

| 版本 | 是否支持 |
| ---- | -------- |
| 最新 Release | ✅ |
| 更早的版本 | ❌ |

报告前请先确认问题在最新 Release 或 `main` 上仍可复现。

### 范围

范围内:本仓库中的 Sub2API 后端、前端、官方 Docker 镜像与部署文件。

通常不在范围内:

- 需要事先已掌握管理员凭据或服务器权限才能利用的问题
- 因主动关闭文档中的安全配置(如关闭 `security.url_allowlist`)而产生的风险
- 上游 AI 服务商或第三方依赖自身的漏洞,且对 Sub2API 无特定影响(请向上游报告)
- 仅缺少最佳实践响应头或扫描器输出,但未证明实际影响

### 披露流程

1. 我们确认收到报告,并评估其有效性与严重程度。
2. 我们在安全公告中私下开发修复,可能请你协助验证。
3. 我们先发布包含修复的版本,再公开 GitHub 安全公告(适用时申请 CVE),并致谢报告者(如你希望匿名则不署名)。

在公告发布前请勿公开漏洞细节。本项目由志愿者维护,响应时间尽力而为。
19 changes: 13 additions & 6 deletions .github/audit-exceptions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@ exceptions:
- package: xlsx
advisory: "GHSA-4r6h-8v6p-xvw6"
severity: high
reason: "Admin export only; switched to dynamic import to reduce exposure (CVE-2023-30533)"
mitigation: "Load only on export; restrict export permissions and data scope"
expires_on: "2026-07-06"
reason: "Write-only: admin UsageView lazily imports xlsx solely for XLSX.write export; the advisory requires parsing a crafted file and no XLSX.read path exists (CVE-2023-30533)"
mitigation: "Never parse untrusted spreadsheets with xlsx; no patched version on npm, migrate to SheetJS CDN build or another writer before expiry"
expires_on: "2027-01-06"
owner: "security@your-domain"
- package: xlsx
advisory: "GHSA-5pgg-2g8v-p4x9"
severity: high
reason: "Admin export only; switched to dynamic import to reduce exposure (CVE-2024-22363)"
mitigation: "Load only on export; restrict export permissions and data scope"
expires_on: "2026-07-06"
reason: "Write-only: admin UsageView lazily imports xlsx solely for XLSX.write export; the advisory requires parsing a crafted file and no XLSX.read path exists (CVE-2024-22363)"
mitigation: "Never parse untrusted spreadsheets with xlsx; no patched version on npm, migrate to SheetJS CDN build or another writer before expiry"
expires_on: "2027-01-06"
owner: "security@your-domain"
- package: lodash
advisory: "GHSA-r5fr-rjxr-66jc"
Expand All @@ -35,3 +35,10 @@ exceptions:
mitigation: "Proxy configuration not user-controlled; upgrade when axios releases fix"
expires_on: "2026-07-10"
owner: "security@your-domain"
- package: nanoid
advisory: "GHSA-2v37-7h3g-55p8"
severity: high
reason: "Custom generator with size=0 not used; all nanoid calls use default size or positive values"
mitigation: "No zero-size custom generators in codebase; upgrade when nanoid releases fix"
expires_on: "2026-10-13"
owner: "security@your-domain"
1 change: 1 addition & 0 deletions .github/release-tools/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__pycache__/
30 changes: 30 additions & 0 deletions .github/release-tools/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Release matrix

The release workflow builds the frontend once, then runs each configured Go target on its own Linux runner. `CGO_ENABLED=0` permits cross-compilation. The target matrix is read from `.goreleaser.yaml`, including its exclusions; simple releases select Linux amd64 only.

Each build uses GoReleaser OSS in snapshot mode with the selected release version and one target. Archive naming, bundled files, Go flags and release templates remain in the existing GoReleaser configurations. Every archive is accompanied by its source commit, target, version and SHA256. The publishing job verifies the complete matrix before building images or publishing. It uses GoReleaser's `extra_files` support to publish existing archives and checksums, with builds disabled. No Pro license is needed.

Go caches are isolated by target and refreshed on each source commit, with fallback to the preceding target cache. Save uses the original restore key, even if a build hook changes `go.sum`. Matrix jobs upload uniquely named artifacts. The publishing job extracts only the regular Linux binary from each verified archive and restores its executable permission before constructing Docker contexts. QEMU remains limited to runtime-image instructions. DockerHub images are omitted when its credentials are absent; GHCR is always retained. Simple mode still publishes only the amd64 GHCR image and the simple release description.

All build jobs use the commit resolved by `prepare`, including a manual release's selected tag. Helper scripts come from the workflow revision and are passed as a run-local artifact, so older application tags do not need to contain the new scripts. The workflow serializes release runs to prevent simultaneous updates to moving image tags.

## Validate without publication

From a branch containing this workflow:

```bash
gh workflow run release.yml --ref <branch> \
-f tag=<branch> -f dry_run=true -f simple_release=false
```

A dry run builds all selected archives and both runtime images, verifies artifact provenance and produces the final checksum file. It exports images locally as OCI archives instead of pushing them. It skips registry logins, GitHub Release publication, DockerHub description updates, Telegram notifications and VERSION synchronization. Test the simple path separately with `simple_release=true`.

Dry-run artifacts are available in the Actions run, including `release-dry-run-report`. Compare job start/end times, GoReleaser's build duration and cache restore results. Do not present an initial cold-cache run as a warmed-cache benchmark; publishing network time is not measured by dry runs.

Helper checks:

```bash
python -m pip install -r .github/release-tools/requirements-release.txt
python -m unittest discover -s .github/release-tools -p 'test_release_matrix.py'
bash -n .github/release-tools/release-images.sh
```
38 changes: 38 additions & 0 deletions .github/release-tools/release-images.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/usr/bin/env bash
set -euo pipefail
: "${RELEASE_VERSION:?}" "${RELEASE_SHA:?}" "${GITHUB_REPOSITORY:?}" "${RUNNER_TEMP:?}"
owner=${GITHUB_REPOSITORY%%/*}
registries=("ghcr.io/${owner,,}/sub2api")
if [[ ${SIMPLE_RELEASE:-false} != true && ${DOCKERHUB_USERNAME:-skip} != skip ]]; then
registries+=("${DOCKERHUB_USERNAME}/sub2api")
fi
arches=(amd64 arm64)
if [[ ${SIMPLE_RELEASE:-false} == true ]]; then arches=(amd64); fi
for arch in "${arches[@]}"; do
args=(--platform "linux/$arch" --file ".release-context/$arch/Dockerfile"
--label "org.opencontainers.image.version=$RELEASE_VERSION"
--label "org.opencontainers.image.revision=$RELEASE_SHA"
--label "org.opencontainers.image.source=https://github.com/$GITHUB_REPOSITORY")
for registry in "${registries[@]}"; do
args+=(--tag "$registry:$RELEASE_VERSION-$arch")
if [[ ${SIMPLE_RELEASE:-false} == true ]]; then
args+=(--tag "$registry:$RELEASE_VERSION" --tag "$registry:latest")
fi
done
if [[ ${DRY_RUN:-false} == true ]]; then
args+=(--output "type=oci,dest=$RUNNER_TEMP/sub2api-$arch.oci.tar")
else
args+=(--push)
fi
docker buildx build "${args[@]}" ".release-context/$arch"
done
if [[ ${DRY_RUN:-false} != true && ${SIMPLE_RELEASE:-false} != true ]]; then
major=${RELEASE_VERSION%%.*}
minor=${RELEASE_VERSION#*.}; minor=${minor%%.*}
for registry in "${registries[@]}"; do
docker buildx imagetools create \
--tag "$registry:$RELEASE_VERSION" --tag "$registry:latest" \
--tag "$registry:$major.$minor" --tag "$registry:$major" \
"$registry:$RELEASE_VERSION-amd64" "$registry:$RELEASE_VERSION-arm64"
done
fi
Loading
Loading