Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1672 commits
Select commit Hold shift + click to select a range
a4edda3
fix(gateway): 不再剥离客户端 system 上的 cache_control
nekocode Sep 10, 2026
1c0932e
feat(gateway): retrieve models from the visible catalogue
r266-tech Sep 10, 2026
4a4b50d
fix(quota): 平台限额表只保存已配置限额的记录,仪表盘按用量与限额展示平台
feeeei Sep 10, 2026
06b61ba
feat(openai): 解析 codex 线程标识派生 WS 执行作用域
xlplbo Sep 10, 2026
9e7c2d7
fix(openai): WS 会话抢占改用执行作用域键
xlplbo Sep 10, 2026
cd1ee1d
fix(openai): WS 接入会话状态改用执行作用域键
xlplbo Sep 10, 2026
95a04c8
test(apicompat): additional_tools 走 chat 桥的回归用例
xlplbo Sep 8, 2026
df8eceb
fix(apicompat): chat 桥保留 Codex agent_message 任务正文
xlplbo Sep 10, 2026
a5b07b2
feat(openai): WS 连接池常驻读循环应答上游 ping
xlplbo Sep 8, 2026
bed1e3c
fix(openai): 重试强制新建连接并放宽轮次预检超时
xlplbo Sep 8, 2026
5032d06
fix(codex): advertise DeepSeek vision image input
ouchihao Sep 10, 2026
ab3b398
fix(groups): return bad request for invalid peak-rate settings
ouchihao Sep 10, 2026
e9f5add
fix(ops): show first-token latency in TTFT request details
ouchihao Sep 10, 2026
d3bd614
test(groups): initialize a valid rate multiplier in peak validation case
ouchihao Sep 10, 2026
8c56eab
fix(payment): allow scrolling through renewal plans
ouchihao Sep 10, 2026
b112805
test(ops): align query matcher formatting with gofmt
ouchihao Sep 10, 2026
ab9bd9e
fix(billing): 适配 DeepSeek V4.1-Flash 新价与 pro→Flash 切换
alfadb Sep 10, 2026
9d475f9
feat(settings): 新增「站点类型」三态开关,关闭订阅后用户端收起所有「订阅」入口与文案
feeeei Sep 10, 2026
6feefb7
fix(openai): keep Codex manifest display names in account model lists
ZeroClover Sep 10, 2026
8f2cba0
fix(openai): map new ChatGPT plan tiers to friendly labels
ZeroClover Sep 10, 2026
799e993
Merge pull request #6945 from r266-tech/feat/model-retrieval-6931
Wei-Shaw Sep 11, 2026
4adcef4
Merge pull request #6943 from xiuai-labs/fix/keep-client-system-cache…
Wei-Shaw Sep 11, 2026
e71d291
Merge pull request #6917 from ouchihao/codex/issue-2149-monitor-base-…
Wei-Shaw Sep 11, 2026
685e97a
Merge pull request #6904 from m11y/fix-scheduling-threshold-snapshot
Wei-Shaw Sep 11, 2026
43f9383
Merge pull request #6869 from Garfielk/codex/fix-heartbeat-envelope-f…
Wei-Shaw Sep 11, 2026
87e0159
Merge pull request #6850 from reallyfeishi/fix/channel-monitor-utc-bu…
Wei-Shaw Sep 11, 2026
264cbbe
Merge pull request #6499 from soulxyz/fix/setup-database-bootstrap
Wei-Shaw Sep 11, 2026
2493b0d
Merge pull request #6924 from smyyyyy2025/fix/codex-user-agent-valida…
Wei-Shaw Sep 11, 2026
324a47e
Merge pull request #6913 from ouchihao/codex/issue-6732-bulk-delete-u…
Wei-Shaw Sep 11, 2026
0be3088
Merge pull request #6916 from ouchihao/codex/issue-3640-subscription-…
Wei-Shaw Sep 11, 2026
f4dd88b
Merge pull request #6847 from ouchihao/codex/issue-4064-custom-page-b…
Wei-Shaw Sep 11, 2026
0aac71c
Merge pull request #6845 from ouchihao/codex/issue-6808-ops-error-sum…
Wei-Shaw Sep 11, 2026
8efe2fd
Merge pull request #6843 from ouchihao/codex/issue-6841-usage-cost-pr…
Wei-Shaw Sep 11, 2026
501cc19
Merge pull request #6902 from anguobao123/codex/apple-container-self-…
Wei-Shaw Sep 11, 2026
67d3a89
Merge pull request #6912 from ouchihao/codex/issue-2106-redeem-subscr…
Wei-Shaw Sep 11, 2026
0116c5a
Merge pull request #6915 from ouchihao/codex/issue-2734-async-process…
Wei-Shaw Sep 11, 2026
2429078
feat(opencode): add OpenCode platform with Zen and GO account types
DuskLin Sep 11, 2026
1035a4d
feat(ops): support token request stats across all platforms
SavitarC Sep 11, 2026
e4c369b
fix(openai): HTTP 经 WS 池转发按执行作用域取会话状态键
xlplbo Sep 11, 2026
d0ca057
fix(openai): WS 会话被抢占时先发关闭帧再取消
xlplbo Sep 11, 2026
66a10d4
fix(setup): handle mock database cleanup errors in tests
SavitarC Sep 11, 2026
613722e
fix(openai): HTTP 转发的执行作用域改从原始请求计算
xlplbo Sep 11, 2026
5af7e74
fix(ci): check deferred sql.DB.Close errors in setup tests
Wei-Shaw Sep 11, 2026
4543ddc
fix(openai): WS 执行作用域按 request_kind 分道
xlplbo Sep 11, 2026
bae37a0
Merge pull request #7006 from Wei-Shaw/fix/setup-test-errcheck-close
Wei-Shaw Sep 11, 2026
8f9a9a2
Merge pull request #6965 from xlplbo/fix/openai-ws-pool-reader-loop
Wei-Shaw Sep 11, 2026
3fb03cd
Merge pull request #6960 from xlplbo/fix/openai-ws-exec-scope-preemption
Wei-Shaw Sep 11, 2026
14029e5
Merge pull request #6661 from whhphd/fix/grok-media-slot-release
Wei-Shaw Sep 11, 2026
88011a6
Merge pull request #6783 from asmoyou/fix/large-image-request-memory
Wei-Shaw Sep 11, 2026
fd300ab
Merge pull request #6974 from alfadb/fix/deepseek-v41-flash-pricing
Wei-Shaw Sep 11, 2026
7145484
Merge pull request #6971 from ouchihao/codex/issue-1890-ttft-request-…
Wei-Shaw Sep 11, 2026
6254aba
Merge pull request #6575 from doublepi123/feat/antigravity-gemini-3.8…
Wei-Shaw Sep 11, 2026
310f8b7
Merge pull request #6964 from xlplbo/fix/apicompat-agent-message-chat…
Wei-Shaw Sep 11, 2026
623c32e
Merge pull request #6989 from ZeroClover/fix/openai-plan-type-labels
Wei-Shaw Sep 11, 2026
642d20b
Merge pull request #6988 from ZeroClover/fix/codex-manifest-display-name
Wei-Shaw Sep 11, 2026
75b7dd1
Merge pull request #6969 from ouchihao/codex/issue-5882-peak-rate-val…
Wei-Shaw Sep 11, 2026
40cf3f5
Merge pull request #6968 from ouchihao/codex/issue-6903-deepseek-visi…
Wei-Shaw Sep 11, 2026
9c30951
Merge pull request #6973 from ouchihao/codex/issue-4210-renewal-modal…
Wei-Shaw Sep 11, 2026
7c008bd
fix(opencode): apply account model mapping in connection tests
DuskLin Sep 11, 2026
489968f
fix(config): use GPT-5.5 as the default compact model
ouchihao Sep 11, 2026
c3b3072
fix(payment): allow periods in EasyPay upstream types
ouchihao Sep 11, 2026
981279c
fix(opencode): rewrite mapped model onto all three upstream protocols
DuskLin Sep 11, 2026
efcc225
fix(opencode): address review on dispatch, billing, session, and 402
DuskLin Sep 11, 2026
22dffa1
fix(opencode): apply De Morgan for staticcheck QF1001
DuskLin Sep 11, 2026
c0d5119
feat(openai): route OAuth image requests through native Codex Images
slovx2 Sep 9, 2026
eacff0a
fix: retain upstream config and image pricing updates
slovx2 Sep 9, 2026
fa565ea
fix(pricing): add image cache pricing field
slovx2 Sep 9, 2026
e5e04de
fix: sync upstream config and model tests
slovx2 Sep 9, 2026
5ee436d
fix(pricing): set image cache fallback rate
slovx2 Sep 9, 2026
04c45e9
test: remove incompatible upstream image model assertions
slovx2 Sep 9, 2026
1067e89
fix(openai): address image route review findings
slovx2 Sep 11, 2026
2dff7af
Merge pull request #6954 from feeeei/fix/quota
Wei-Shaw Sep 11, 2026
dfa83fb
Merge pull request #6986 from feeeei/feat/site-billing-mode
Wei-Shaw Sep 11, 2026
cdb5cfa
Merge pull request #6747 from DuskLin/feat/opencode-go-platform
Wei-Shaw Sep 11, 2026
23eef9e
test(openai): restore image model regression coverage
slovx2 Sep 11, 2026
8ea4dc5
fix(gemini): 模型侧 finishReason 不再按上游失败登记
feeeei Sep 11, 2026
4726bdd
Merge pull request #6890 from slovx2/feat/openai-images-75be
Wei-Shaw Sep 11, 2026
9eb120d
fix(openai): 隐私/账号检查客户端改用 Firefox 指纹,规避 chatgpt.com Cloudflare 质询
xpflying Sep 11, 2026
d8326fc
fix(claude): preserve mid-conversation output config beta
alfadb Sep 11, 2026
213de07
fix(gateway): avoid duplicate Accept-Encoding headers
ouchihao Sep 11, 2026
9b6a49b
fix(profile): show normalized API error messages
ouchihao Sep 11, 2026
51c5d03
fix(subscriptions): clear assignment user before search debounce
ouchihao Sep 11, 2026
961d9e9
fix(proxies): refresh the list after partial imports
ouchihao Sep 11, 2026
a65d476
fix(keys): sync status after resetting quota
ouchihao Sep 11, 2026
8e79544
fix(openai): force priority when service tier is omitted
xuhaihan Sep 11, 2026
29371b0
fix(openai-ws): ctx_pool 每账号连接上限系数默认值改为 5.0
xlplbo Sep 12, 2026
195a331
fix(codex): preserve maximum context window in model catalogs
Sjeary Sep 12, 2026
7cf90c7
perf(openai): WS 连接池排队等待者按账号池变更重选连接
xlplbo Sep 12, 2026
3645ce5
fix(profile): remove verified notification emails by identity
ouchihao Sep 12, 2026
781a02a
fix(auth): preserve sessions during temporary service failures
ouchihao Sep 12, 2026
5bafffe
fix(proxies): reset pagination when changing filters
ouchihao Sep 12, 2026
429d6f0
fix(usage): keep export filters consistent across pages
ouchihao Sep 12, 2026
bb0b50d
fix(redeem): preserve success when account refresh fails
ouchihao Sep 12, 2026
c6727ed
fix(admin): surface partial Antigravity refresh warnings
Shen-An Sep 12, 2026
5968fd0
fix(channel-monitor): add missing minimax to provider allowlists
wc4440222 Sep 12, 2026
6206ce9
Merge pull request #6929 from feeeei/fix/gemini-inband-response-signals
Wei-Shaw Sep 12, 2026
956f467
fix(openai-ws): 对齐 OpenAI 新版上下文池容量计算
xlplbo Sep 12, 2026
cf3aca6
fix(ui): 按 OpenAI WS 模式显示链路提示
xlplbo Sep 12, 2026
5d5b395
docs(ui): 完善 OpenAI WS 模式说明
xlplbo Sep 12, 2026
db15ddf
docs(ui): 区分 OpenAI WS 开关与连接模式说明
xlplbo Sep 12, 2026
76b3f3c
docs(ui): 精简 OpenAI WS 模式提示
xlplbo Sep 12, 2026
5948988
Merge pull request #7022 from ouchihao/codex/issue-3623-accept-encodi…
Wei-Shaw Sep 12, 2026
ba57ea9
Merge pull request #7052 from ouchihao/codex/issue-2912-transient-aut…
Wei-Shaw Sep 12, 2026
d206766
Merge pull request #7024 from ouchihao/codex/fix-subscription-assignm…
Wei-Shaw Sep 12, 2026
e67ffda
Merge pull request #7012 from ouchihao/codex/issue-6982-easypay-upstr…
Wei-Shaw Sep 12, 2026
f78c4b2
Merge pull request #7011 from ouchihao/codex/issue-7003-compact-defau…
Wei-Shaw Sep 12, 2026
4ff3e6d
Merge pull request #7055 from ouchihao/codex/bug-redeem-profile-refresh
Wei-Shaw Sep 12, 2026
2a4f3d1
Merge pull request #7043 from xlplbo/fix/openai-ws-max-conns-factor-d…
Wei-Shaw Sep 12, 2026
3873215
Merge pull request #7049 from xlplbo/perf/openai-ws-pool-queue-wake
Wei-Shaw Sep 12, 2026
eaa4083
Merge pull request #6995 from alfadb/fix/claude-mid-conversation-outp…
Wei-Shaw Sep 12, 2026
749cd7c
Merge pull request #7062 from wc4440222/fix/channel-monitor-minimax-p…
Wei-Shaw Sep 12, 2026
3a070ec
Merge pull request #7010 from xpflying/fix/openai-privacy-client-cf-c…
Wei-Shaw Sep 12, 2026
6784566
Merge pull request #7050 from ouchihao/codex/bug-balance-email-verifi…
Wei-Shaw Sep 12, 2026
99b93b2
Merge pull request #7053 from ouchihao/codex/bug-proxy-filter-pagination
Wei-Shaw Sep 12, 2026
f0dd497
Merge pull request #7054 from ouchihao/codex/bug-usage-export-filter-…
Wei-Shaw Sep 12, 2026
329641a
Merge pull request #7025 from ouchihao/codex/bug-proxy-partial-import…
Wei-Shaw Sep 12, 2026
f2b51e3
Merge pull request #7023 from ouchihao/codex/bug-profile-api-errors
Wei-Shaw Sep 12, 2026
0a378f3
Merge pull request #7026 from ouchihao/codex/bug-key-quota-reset-state
Wei-Shaw Sep 12, 2026
a59f0c7
Merge pull request #5833 from xuhaihan/fix/openai-fast-missing-tier
Wei-Shaw Sep 12, 2026
c7ed614
Merge pull request #7001 from SavitarC/feat/ops-token-stats-all-platf…
Wei-Shaw Sep 12, 2026
9383e0b
Merge pull request #7057 from Sjeary/codex/issue-7042-max-context-window
Wei-Shaw Sep 12, 2026
bdb42e2
Merge pull request #7064 from xlplbo/codex/openai-ws-v2-pool-capacity
Wei-Shaw Sep 12, 2026
7e152e4
fix(scheduler): 修复选号耗时返回值和粘性命中率重复计数
Brisbanehuang Sep 12, 2026
d2c2b46
fix(batch-image): 修正批量生图账号优先级排序方向
Brisbanehuang Sep 12, 2026
db76cc4
fix(scheduler): 按规范窗口读取 Codex 配额与重置时间
Brisbanehuang Sep 12, 2026
bc8da78
fix(antigravity): isolate OAuth token cache key by account ID to prev…
ggllzz04 Sep 12, 2026
6263553
fix(antigravity): explicitly invalidate legacy project-based token cache
ggllzz04 Sep 12, 2026
196c15b
fix(openai): strip internal metadata from OAuth input items
r266-tech Sep 12, 2026
e5272c1
test(openai): check input type before metadata assertion
r266-tech Sep 12, 2026
a1d5968
feat(ollama): async rate-limit reset for Ollama Cloud usage windows
alfadb Sep 7, 2026
3d6c207
feat: 支持订阅管理批量操作
SavitarC Sep 13, 2026
e3cce57
fix: serialize subscription extensions
SavitarC Sep 13, 2026
5255838
fix(apicompat): merge leading system messages and downgrade mid-conve…
liuyuzhou666 Sep 13, 2026
06af9f8
fix(monitor): honor the selected auto-refresh interval
ouchihao Sep 13, 2026
5ecfaa4
fix(batch-image): scope access cache to the current user
ouchihao Sep 13, 2026
28a4ea9
fix(proxy): allow explicitly clearing stored credentials
ouchihao Sep 13, 2026
4bd7132
fix(openai): 保留 Responses Lite namespace 调用
xO-ox-ai Sep 14, 2026
0879870
fix(responses): 为 grok-build 始终写出 sequence_number
kk-418 Sep 14, 2026
13c1d4c
test(openai): 覆盖 Lite 命名空间工具回传
xO-ox-ai Sep 14, 2026
e916990
Merge pull request #7112 from ouchihao/codex/bug-monitor-refresh-inte…
Wei-Shaw Sep 15, 2026
a4c5179
Merge pull request #7073 from Brisbanehuang/codex/fix-batch-image-pri…
Wei-Shaw Sep 15, 2026
008391f
Merge pull request #7085 from r266-tech/codex/sub2api-f352188cb784
Wei-Shaw Sep 15, 2026
f7e959a
Merge pull request #7111 from ouchihao/codex/bug-proxy-clear-credentials
Wei-Shaw Sep 15, 2026
1e1d15c
Merge pull request #7082 from ggllzz04/fix/antigravity-token-cache-is…
Wei-Shaw Sep 15, 2026
d443912
Merge pull request #7094 from liuyuzhou666/fix/responses-chat-develop…
Wei-Shaw Sep 15, 2026
dd2e6b3
Merge pull request #7076 from Shen-An/fix/antigravity-refresh-warning
Wei-Shaw Sep 15, 2026
3e4b6a0
Merge pull request #6925 from reed-yang/fix/recover-responses-text
Wei-Shaw Sep 15, 2026
150c52b
Merge pull request #6689 from tunsuy/fix/antigravity-codex-web-search…
Wei-Shaw Sep 15, 2026
0bba06d
Merge pull request #6691 from yan9651688/feat/api-key-bulk-edit
Wei-Shaw Sep 15, 2026
a444551
Merge pull request #6654 from ouchihao/codex/issue-2229-register-conf…
Wei-Shaw Sep 15, 2026
1920a7d
Merge pull request #7091 from SavitarC/feat/subscription-bulk-actions
Wei-Shaw Sep 15, 2026
9fade3e
Merge pull request #6769 from alfadb/feature/ollama-rate-limit-reset
Wei-Shaw Sep 15, 2026
fb90414
Merge pull request #7126 from xO-ox-ai/codex/fix-responses-lite-names…
Wei-Shaw Sep 15, 2026
2061508
Merge pull request #7072 from Brisbanehuang/codex/fix-scheduler-metrics
Wei-Shaw Sep 15, 2026
0a215c9
Merge pull request #7110 from ouchihao/codex/bug-batch-image-access-s…
Wei-Shaw Sep 15, 2026
325213a
Revert "fix(batch-image): scope access cache to the current user"
Wei-Shaw Sep 15, 2026
1be482c
Merge pull request #7148 from Wei-Shaw/revert-7110-codex/bug-batch-im…
Wei-Shaw Sep 15, 2026
badfad8
Merge pull request #6257 from 88766lawrence/fix/oauth-promo-code-6216
Wei-Shaw Sep 15, 2026
a939553
fix(deepseek): 模型名校验不再默认兜底,未配置映射时按官方名单校验
alfadb Sep 10, 2026
55a95d4
feat: filter API key groups by provider
hezhaoqian1 Sep 15, 2026
32682a4
chore: update sponsors
Wei-Shaw Sep 15, 2026
8447bdd
fix(antigravity): gemini 透传 SSE 事件之间不再多写一个空行
HuntercodeT Sep 15, 2026
2d9af85
Merge pull request #7153 from hezhaoqian1/codex/upstream-api-key-prov…
Wei-Shaw Sep 15, 2026
25c21ae
Merge pull request #7129 from kk-418/fix/grok-build-responses-sequenc…
Wei-Shaw Sep 15, 2026
b827520
Merge pull request #7162 from HuntercodeT/fix/antigravity-gemini-sse-…
Wei-Shaw Sep 15, 2026
30ed40a
Merge pull request #7074 from Brisbanehuang/codex/fix-codex-quota-win…
Wei-Shaw Sep 15, 2026
86f93c2
Merge pull request #6977 from alfadb/fix/deepseek-model-name-validation
Wei-Shaw Sep 15, 2026
da74bf1
fix(gemini): discover antigravity mappings in native model lists
HuntercodeT Sep 15, 2026
881f320
chore: sync VERSION to 0.2.5 [skip ci]
github-actions[bot] Sep 15, 2026
d7ee1ab
fix(openai): persist response affinity after client cancel
xO-ox-ai Sep 15, 2026
21532ad
fix(payment): reset the order page when changing status
ouchihao Sep 15, 2026
0ed735d
fix(proxies): reuse in-flight test guards during batch testing
ouchihao Sep 15, 2026
14636d2
fix(totp): display normalized API error messages
ouchihao Sep 15, 2026
6a4938b
fix(announcements): preserve successful bulk read results
ouchihao Sep 15, 2026
130ba63
fix(clipboard): report errors thrown by the copy fallback
ouchihao Sep 15, 2026
8e34ca5
fix(account): keep refreshing OAuth tokens for paused accounts
bitnom Sep 15, 2026
18d483c
fix: 分组用量汇总不再全表扫 usage_logs
HuntercodeT Sep 16, 2026
a9ed218
feat(redeem): paginate user redemption history
wucm667 Sep 16, 2026
2f16e09
fix(openai): avoid duplicate manifest parsing
xz-dev Sep 14, 2026
31f3003
fix(openai): preserve manifest key validation
xz-dev Sep 14, 2026
18bfa4b
fix(gateway): normalize developer roles for strict Chat upstreams
HypoxanthineOvO Sep 16, 2026
1a32b91
fix(pagination): handle numeric jump input
ouchihao Sep 16, 2026
ee9ac3e
fix(auth): keep TOTP setup digits in sync with state
ouchihao Sep 16, 2026
98321a0
fix(payment): restore accepted text after invalid amount input
ouchihao Sep 16, 2026
0838e0e
fix(admin): reject negative platform quota limits before saving
ouchihao Sep 16, 2026
f8e5a0d
fix(channels): allow tabbing out of an empty model input
ouchihao Sep 16, 2026
fe36f4a
fix: prevent promo code field flash on registration
Liu8Can Sep 16, 2026
881ab1b
fix(deepseek): lift Responses tool output images
laoxiechuzheng Sep 16, 2026
aba3452
feat: support native Seedance Ark video task API
Qiaogun Sep 16, 2026
be4a499
fix(antigravity): strip Claude attribution metadata from system prompts
zhudaguaneren Sep 17, 2026
611c30f
chore(deps): 升级 google.golang.org/grpc 到 v1.83.2 修复 govulncheck 报告的两条公告
HuntercodeT Sep 17, 2026
017e9e9
fix(payment): base refund balance warnings on the requested amount
ouchihao Sep 17, 2026
be31373
fix(ui): keep dialog title IDs unique across instances
ouchihao Sep 17, 2026
b51f075
fix(payment): await in-flight configuration requests
ouchihao Sep 17, 2026
406be7c
fix(subscriptions): reset loading when clearing state
ouchihao Sep 17, 2026
acc0562
fix(deepseek): keep parallel Responses tool outputs contiguous
laoxiechuzheng Sep 17, 2026
4daabc3
Merge pull request #7234 from ouchihao/codex/bug-pagination-jump-number
Wei-Shaw Sep 17, 2026
131893e
Merge pull request #7237 from ouchihao/codex/bug-platform-quota-negative
Wei-Shaw Sep 17, 2026
44831bb
Merge pull request #7261 from HuntercodeT/chore/bump-grpc-1.83.2
Wei-Shaw Sep 17, 2026
7e4164c
Merge pull request #7207 from HuntercodeT/fix/group-usage-summary-seq…
Wei-Shaw Sep 17, 2026
d52ab27
Merge pull request #7173 from HuntercodeT/fix/gemini-native-mixed-mod…
Wei-Shaw Sep 17, 2026
40e7ce7
Merge pull request #7265 from ouchihao/codex/bug-payment-config-await
Wei-Shaw Sep 17, 2026
ea68c0e
Merge pull request #7263 from ouchihao/codex/bug-dialog-title-ids
Wei-Shaw Sep 17, 2026
efd86c6
Merge pull request #7235 from ouchihao/codex/bug-totp-setup-input-sync
Wei-Shaw Sep 17, 2026
5f75e0d
Merge pull request #7186 from ouchihao/codex/bug-clipboard-fallback-e…
Wei-Shaw Sep 17, 2026
55bde08
Merge pull request #7185 from ouchihao/codex/bug-announcement-read-re…
Wei-Shaw Sep 17, 2026
53fd5f8
Merge pull request #7183 from ouchihao/codex/bug-proxy-test-dedup
Wei-Shaw Sep 17, 2026
10fd1ad
Merge pull request #7182 from ouchihao/codex/bug-orders-filter-page
Wei-Shaw Sep 17, 2026
71c0eb5
Merge pull request #7184 from ouchihao/codex/bug-totp-error-messages
Wei-Shaw Sep 17, 2026
57e9f6a
Merge pull request #7238 from ouchihao/codex/bug-model-tag-tab-naviga…
Wei-Shaw Sep 17, 2026
ffa4360
Merge pull request #7236 from ouchihao/codex/bug-payment-amount-input
Wei-Shaw Sep 17, 2026
0932e8c
Merge pull request #7266 from ouchihao/codex/bug-subscription-loading…
Wei-Shaw Sep 17, 2026
cd1834e
Merge pull request #7262 from ouchihao/codex/bug-refund-balance-warning
Wei-Shaw Sep 17, 2026
c84a3d5
Merge pull request #7215 from xz-dev/fix/manifest-double-parse
Wei-Shaw Sep 17, 2026
5050471
Merge pull request #7239 from Liu8Can/fix/register-promo-code-flicker
Wei-Shaw Sep 17, 2026
9efc167
Merge pull request #7195 from bitnom/fix/refresh-paused-oauth-accounts
Wei-Shaw Sep 17, 2026
b4e5608
Merge pull request #7177 from xO-ox-ai/codex/fix-openai-response-bind…
Wei-Shaw Sep 17, 2026
48a86ec
Merge pull request #7224 from HypoxanthineOvO/codex/upstream-chat-rol…
Wei-Shaw Sep 17, 2026
18328ae
Merge pull request #7212 from wucm667/feat/issue-7203-redemption-pagi…
Wei-Shaw Sep 17, 2026
aeab57b
Merge pull request #7256 from zhudaguaneren/fix/antigravity-attributi…
Wei-Shaw Sep 17, 2026
d099c06
fix: resolve Seedance lint and gRPC security checks
Qiaogun Sep 17, 2026
efe9aab
Merge pull request #7246 from laoxiechuzheng/fix/deepseek-native-resp…
Wei-Shaw Sep 17, 2026
f79b8bf
fix(antigravity): Gemini 原生流对 go-genai / python-genai 客户端不发 SSE 注释心跳
HuntercodeT Sep 17, 2026
0f4d8ac
fix(antigravity): Gemini 原生请求的裸模型名按 thinkingConfig 解析到 -low/-medium/-…
HuntercodeT Sep 17, 2026
a9c7c6e
ui(header): 手机竖屏顶栏保留模型广场图标入口
feeeei Sep 18, 2026
bcc73f8
fix(openai): pass DeepSeek thinking-mode reasoning_content on chat fa…
baryon Sep 18, 2026
db8692d
fix(ratelimit): pause CN coding-plan accounts on quota-exhausted 403
ye4241 Sep 18, 2026
a8a1a3a
fix(apicompat): flatten root union tool schemas for Anthropic
laoxiechuzheng Sep 18, 2026
c63bd14
feat(plugin): generic host services + read-only status bridge channel
Wei-Shaw Sep 19, 2026
6477143
test(plugin): check type assertions to satisfy errcheck lint
Wei-Shaw Sep 19, 2026
4dbcdce
Merge pull request #7351 from Wei-Shaw/feat/plugin-host-services-stat…
Wei-Shaw Sep 19, 2026
4275047
Merge pull request #7313 from baryon/contrib/deepseek-chat-reasoning-…
Wei-Shaw Sep 19, 2026
d5cea61
Merge pull request #7345 from laoxiechuzheng/fix/anthropic-root-union…
Wei-Shaw Sep 19, 2026
1b45d21
Merge pull request #7340 from ye4241/fix/kimi-cn-quota-403-rate-limit…
Wei-Shaw Sep 19, 2026
09f8886
Merge pull request #7294 from feeeei/feat/model-plaza-icon
Wei-Shaw Sep 19, 2026
0c9e83b
Merge pull request #7278 from HuntercodeT/fix/antigravity-gemini-sse-…
Wei-Shaw Sep 19, 2026
74431ff
Merge pull request #7258 from HuntercodeT/fix/antigravity-gemini-bare…
Wei-Shaw Sep 19, 2026
aea725f
Merge pull request #7247 from Qiaogun/codex/seedance-native-api
Wei-Shaw Sep 19, 2026
3cb958e
chore(sync): record previously integrated upstream v0.2.0
CatStack-pixe Sep 19, 2026
bdaaa29
feat(sync): integrate upstream v0.2.7 while preserving fork features
CatStack-pixe Sep 19, 2026
c0af64c
fix(sync): preserve independent model configuration during upgrades
CatStack-pixe Sep 19, 2026
4dc23cc
fix(sync): apply CI generation and preserve model visibility filters
CatStack-pixe Sep 19, 2026
2d68048
fix(sync): resolve bridge compilation and key catalogue regressions
CatStack-pixe Sep 19, 2026
83d36c8
fix(sync): restore quota metadata and gateway usage compatibility
CatStack-pixe Sep 19, 2026
5a9fbbb
fix(apicompat): preserve parallel tools during text recovery
CatStack-pixe Sep 19, 2026
5aa5d72
fix(sync): reconcile scheduling and configuration regressions
CatStack-pixe Sep 19, 2026
80a71b6
chore(sync): resolve lint findings after integration
CatStack-pixe Sep 19, 2026
3a20365
fix(sync): preserve provider routing cooldowns and billing semantics
CatStack-pixe Sep 19, 2026
e334ba9
fix(gateway): distinguish upstream timeouts from client cancellation
CatStack-pixe Sep 19, 2026
be0c8ad
test(sync): align preserved gateway fixtures and split CI suites
CatStack-pixe Sep 19, 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
  •  
  •  
  •  
11 changes: 11 additions & 0 deletions .github/upstream-sync.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"repository": "Wei-Shaw/sub2api",
"tag": "v0.2.7",
"commit": "aea725f2ea644d5592d0bbb1d63b607efa7e200a",
"previous_tag": "v0.2.0",
"previous_commit": "aa236488351eb71e120fc2b6fb32e36b0374c918",
"fork_baseline": "eff0f5292b12ced80201c219fd097d0025c477bf",
"application_version": "0.2.7-harbor.1",
"conflict_policy": "Preserve fork behavior and integrate compatible upstream changes.",
"history_note": "Squash merges do not retain upstream ancestry. Use the recorded upstream commit as the content merge baseline for the next synchronization, and audit fork differences before merging."
}
55 changes: 54 additions & 1 deletion .github/workflows/backend-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,36 @@ permissions:
contents: read

jobs:
generated:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version-file: backend/go.mod
check-latest: false
cache-dependency-path: backend/go.sum
- name: Generate Ent
working-directory: backend
run: go generate ./ent
- name: Format Go sources
run: git ls-files -z '*.go' | xargs -0 gofmt -w
- name: Generate Wire
working-directory: backend
run: go generate ./cmd/server
- name: Export generated source changes
if: always()
run: git diff --binary > generated-sources.patch
- name: Upload generated source changes
if: always()
uses: actions/upload-artifact@v7
with:
name: generated-sources-${{ github.sha }}
path: generated-sources.patch
retention-days: 7
- name: Verify generated sources are committed
run: git diff --exit-code

shell:
runs-on: macos-15
steps:
Expand Down Expand Up @@ -42,12 +72,29 @@ jobs:
- name: Unit tests
working-directory: backend
run: make test-unit

integration:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version-file: backend/go.mod
check-latest: false
cache: true
cache-dependency-path: backend/go.sum
- name: Verify Go version
run: |
go version | grep -q 'go1.27.0'
- name: Generate Ent and Wire
working-directory: backend
run: go generate ./ent ./cmd/server
- name: Integration tests
working-directory: backend
run: make test-integration

proxy-pool-import:
needs: [test, golangci-lint]
needs: [test, integration, golangci-lint]
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
Expand Down Expand Up @@ -92,6 +139,12 @@ jobs:
run: pnpm install --frozen-lockfile
- name: Frontend typecheck and critical vitest
run: make test-frontend
- name: Full frontend regression suite
working-directory: frontend
run: pnpm run test:run
- name: Build frontend
working-directory: frontend
run: pnpm run build

golangci-lint:
runs-on: ubuntu-latest
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ deploy/docker-compose.override.yml
.gocache/
vite.config.js
docs/*
!docs/ANTIGRAVITY_ATTRIBUTION_429.md
!docs/PAYMENT.md
!docs/PAYMENT_CN.md
!docs/ADMIN_PAYMENT_INTEGRATION_API.md
Expand Down
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
.PHONY: build build-backend build-frontend test test-backend test-frontend test-frontend-critical

FRONTEND_CRITICAL_VITEST := \
src/i18n/__tests__/localeKeyCompleteness.spec.ts \
src/api/__tests__/client.spec.ts \
src/api/__tests__/tokenRefresh.spec.ts \
src/api/__tests__/keys.bulkUpdate.spec.ts \
src/components/keys/__tests__/BulkEditKeysModal.spec.ts \
src/views/user/__tests__/KeysView.spec.ts \
src/api/__tests__/channelMonitorV2.spec.ts \
src/views/auth/__tests__/LinuxDoCallbackView.spec.ts \
src/views/auth/__tests__/WechatCallbackView.spec.ts \
Expand Down
25 changes: 3 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ Please read the following carefully before using this project:
</tr>

<tr>
<td width="180"><a href="https://apikey.fun/register?aff=SUB2API"><img src="assets/partners/logos/apikey-fun.png" alt="APIKEY.FUN" width="150"></a></td>
<td>Thanks to APIKEY.FUN for sponsoring this project! <a href="https://apikey.fun/register?aff=SUB2API">APIKEY.FUN</a> is one of the core contributors to the sub2api open-source project, dedicated to providing open, stable, and cost-effective AI API access. The platform supports API relay services for Claude, OpenAI, Gemini, and other popular models, with pricing starting from as low as 7% of the original rate. Register via the exclusive link: <a href="https://apikey.fun/register?aff=SUB2API">APIKEY</a> to enjoy up to 5% off on all recharges.</td>
<td width="180"><a href="https://apikey.fan/register?aff=SUB2API"><img src="assets/partners/logos/apikey-fun.png" alt="APIKEY.FUN" width="150"></a></td>
<td>Thanks to APIKEY.FUN for sponsoring this project! <a href="https://apikey.fan/register?aff=SUB2API">APIKEY.FUN</a> is one of the core contributors to the sub2api open-source project, dedicated to providing open, stable, and cost-effective AI API access. The platform supports API relay services for Claude, OpenAI, Gemini, and other popular models, with pricing starting from as low as 7% of the original rate. Register via the exclusive link: <a href="https://apikey.fan/register?aff=SUB2API">APIKEY</a> to enjoy up to 5% off on all recharges.</td>
</tr>

<tr>
Expand Down Expand Up @@ -96,26 +96,12 @@ Please read the following carefully before using this project:
</td>
</tr>

<tr>
<td width="180"><a href="https://sui-xiang.com/"><img src="assets/partners/logos/sui-xiang.jpg" alt="sui-xiang" width="150"></a></td>
<td>Thanks to Suixiang AI Gateway for sponsoring this project! <a href="https://sui-xiang.com/">Suixiang AI Gateway</a> is a reliable and efficient API relay service provider offering relay services for Claude, Codex, Gemini, and more. A privacy-focused relay — no data reselling, no model dilution; privacy, transparency, and lightning-fast after-sales support. New accounts get ¥0.5 in trial credit daily by signing in; top-ups are 1:1, no subscription required, pay-as-you-go. Multi-line redundancy, cross-region disaster recovery, automatic failover, and uninterrupted long-link SSE. 99.9% availability — critical calls never fall behind.
</td>
</tr>

<tr>
<td width="180"><a href="https://www.proxy4free.com/?keyword=4yjqecpc"><img src="assets/partners/logos/proxy4free.png" alt="proxy4free" width="150"></a></td>
<td>Thanks to Proxy4Free for sponsoring this project! Proxy4Free is a data proxy service provider for developers and AI applications, offering residential proxies, static residential proxies, ISP proxies, and datacenter proxies for scenarios such as Web Scraping, Browser Automation, and AI Agents. With global IP resources, stable connections, and flexible switching, it helps developers improve data collection success rates and reduce the risk of IP bans. Register via <a href="https://www.proxy4free.com/?keyword=4yjqecpc">this link</a> to get started and easily build more stable and efficient automation workflows.
</td>
</tr>

<tr>
<td width="180"><a href="http://www.fastaitoken.com/register"><img src="assets/partners/logos/fastaitoken.jpg" alt="fastaitoken" width="150"></a></td>
<td>🎉 Thanks to FastAIToken for sponsoring this project! <a href="http://www.fastaitoken.com/register">FastAIToken</a> is an AI API aggregation platform for developers, supporting mainstream large models such as OpenAI, Claude, and Gemini. Top-up at 1:1 — 1 CNY = 1 USD of API credit — letting developers use the world's leading large model services at lower cost and with greater convenience.<br>

🚀 The platform offers a variety of channels to choose from: an ultra-low-price 0.02x OpenAI promotional group (limited time), groups as low as 0.25x OpenAI, 0.7x Claude with 95% fixed cache, and a 1.2x Claude Max channel. It also provides a public status page showing real-time availability, latency, and operating status of each group for transparent and reliable service, plus 7×24 human technical support (not bots) with fast responses to developer needs.
</td>
</tr>

<tr>
<td width="180"><a href="http://aimzoon.com"><img src="assets/partners/logos/aimzoon.jpg" alt="aimzoon" width="150"></a></td>
<td>Thanks to Aimzoon for sponsoring this project! <a href="http://aimzoon.com">Aimzoon</a> provides stable, cost-effective AI API access services, enabling developers to quickly connect popular AI services to coding tools such as Codex, Claude Code, and Gemini CLI. No complex configuration — faster onboarding, more stable calls, and lower costs. Ongoing promotions including discounted Codex rates and special pricing, with free trial credits upon registration, bringing AI coding into your daily workflow. <a href="http://aimzoon.com">Click here</a> to register and try it out!
Expand All @@ -127,11 +113,6 @@ Please read the following carefully before using this project:
<td><a href="https://nagora.ai/">Nagora</a> is a multi-model AI API gateway built for developers and teams. With a single account and API key, you can access more than 26 leading text and image models through one unified interface. It is compatible with OpenAI, Anthropic, and Gemini protocols and integrates seamlessly with development tools such as Claude Code, Codex, and Gemini CLI. The platform provides intelligent routing, automatic failover, transparent pricing, and consolidated billing, along with budget management, rate limiting, and concurrency controls. This makes AI usage more reliable and manageable across individual development, team collaboration, and production environments. No changes to your existing application are required. Simply replace the Base URL and API key to complete the integration in as little as one minute.</td>
</tr>

<tr>
<td width="180"><a href="https://www.novada.com/?sub2api/"><img src="assets/partners/logos/novada.png" alt="Novada" width="150"></a></td>
<td>Thanks to <a href="https://www.novada.com/?sub2api/">Novada</a> for sponsoring this project! Novada provides residential, ISP, datacenter, and mobile proxies, along with Web Unlocker and Scraper APIs for developers building AI applications and automation workflows. With global IP coverage, flexible rotating and sticky sessions, and precise geo-targeting, Novada helps teams access web data reliably for AI agent workflows, cross-region testing, web research, and browser automation. Explore Novada to build more stable and scalable AI workflows.</td>
</tr>

<tr>
<td width="180"><a href="https://s.qiniu.com/u6rQrq"><img src="assets/partners/logos/qiniu.jpg" alt="Qiniu AI" width="150"></a></td>
<td>Thanks to Qiniu AI for sponsoring this project! Qiniu AI is the enterprise-grade large-model MaaS platform under Qiniu Cloud (02567.HK), offering one-stop access to 150+ mainstream models worldwide, compatible with the protocols of major global model providers, and covering full-modality capabilities including text, image, audio, video, and file processing, serving over 1.69 million enterprises and developers. Qiniu AI offers an exclusive benefit for Sub2API users: register via <a href="https://s.qiniu.com/u6rQrq">this link</a> — enterprise users get 12 million tokens free, and developers get 3 million tokens free.</td>
Expand Down Expand Up @@ -822,7 +803,7 @@ xAI quota is passive. Sub2API does not invent subscription quota values; it reco

`401` responses temporarily remove accounts with invalid credentials from scheduling. `403` responses are treated as access or entitlement failures instead of token-refresh loops. `429` responses use `Retry-After` or a short cooldown to temporarily remove the account from scheduling.

New Grok image and video generation requests use a media-specific eligibility check. API-key accounts remain eligible. OAuth accounts require positive paid-entitlement evidence from the xAI billing probe; Free, forbidden, missing, malformed, and inconclusive billing observations are excluded from new media generation. Unobserved OAuth accounts are probed before the first media request is forwarded, and imports run the billing-first quota probe proactively. Chat requests and video status lookups are not affected by this media-only quarantine. If no eligible account remains, the media endpoint returns HTTP `503` with error type `grok_media_no_eligible_account`.
New Grok image and video generation requests use a media-specific eligibility check. API-key accounts remain eligible. OAuth accounts with explicit Free or forbidden billing evidence are excluded from new media generation. Missing or malformed observations are probed before dispatch; a successful but incomplete billing response is treated as `billing_inconclusive` and remains eligible for backwards compatibility, because an unknown billing schema is not proof that the account lacks media entitlement. Operators can quarantine a known-bad account with `extra.grok_media_eligible=false` or force-enable a verified account with `true`. Imports run the billing-first quota probe proactively. Chat requests and video status lookups are not affected by this media-only quarantine. If no eligible account remains, the media endpoint returns HTTP `503` with error type `grok_media_no_eligible_account`.

Administrators can override automatic media eligibility through the account create/update API by setting `extra.grok_media_eligible` to `false` (exclude) or `true` (force eligible). On update, set it to `null` to remove the override and return to automatic probe-based behavior; omitting the field preserves the current override. A weekly allowance period alone is not treated as a paid tier signal. Successful image responses must contain at least one actual image output; empty HTTP `200` responses trigger account failover instead of being counted and returned as successful generations.

Expand Down
Loading
Loading