shaw
f54e9d0b1c
chore: update readme
2026-04-08 16:37:00 +08:00
shaw
b982076e52
fix: resolve errcheck lint and add missing enable_cch_signing to test
...
- Suppress errcheck for xxhash Digest.Write (never returns error)
- Add enable_cch_signing field to settings API contract test
2026-04-08 16:23:02 +08:00
shaw
7060596a30
fix: bump Go from 1.26.1 to 1.26.2 to resolve 6 stdlib CVEs
...
Fixes GO-2026-4947, GO-2026-4946, GO-2026-4870, GO-2026-4869,
GO-2026-4866, GO-2026-4865 in crypto/x509, crypto/tls, archive/tar,
and html/template.
2026-04-08 16:17:15 +08:00
shaw
e51c9e50b5
feat: sync billing header cc_version with User-Agent and add opt-in CCH signing
...
- Sync cc_version in x-anthropic-billing-header with the fingerprint
User-Agent version, preserving the message-derived suffix
- Implement xxHash64-based CCH signing to replace the cch=00000
placeholder with a computed hash
- Add admin toggle (enable_cch_signing) under gateway forwarding settings,
disabled by default
2026-04-08 16:11:19 +08:00
Wesley Liddick and GitHub
5088e91566
Merge pull request #1417 from YanzheL/fix/openai-empty-base64-image-payloads
...
fix: sanitize empty base64 image payloads for OpenAI requests
2026-04-08 14:20:38 +08:00
Wesley Liddick and GitHub
276f499c82
Merge pull request #1418 from YanzheL/fix/1161-gemini-google-search-grounding
...
fix(gemini): preserve google search grounding tools
2026-04-08 14:19:57 +08:00
Wesley Liddick and GitHub
5c203ce6c6
Merge pull request #1428 from YanzheL/fix/openai-gateway-content-session-hash-fallback
...
fix(gateway): add content-based session hash fallback for non-Codex clients
2026-04-08 14:17:49 +08:00
Wesley Liddick and GitHub
47cd1c5286
Merge pull request #1467 from touwaeriol/refactor/channel-service-cleanup
...
refactor(channel): split long functions, extract shared validation, move billing validation to service
2026-04-08 14:16:28 +08:00
Wesley Liddick and GitHub
06e2756ee4
Merge pull request #1501 from StarryKira/fix/1493-non-streaming-empty-output
...
fix: 非流式响应路径扩展SSE检测至所有账号类型
2026-04-08 14:11:47 +08:00
shaw
1c9a2128cf
fix: 修复非CC客户端OAuth伪装被Anthropic检测为第三方应用的问题
...
commit f3aa54b 的 rewriteSystemForNonClaudeCode 未能通过 Anthropic 第三方检测,
根因是两个关键信号与真实 Claude Code 不一致:
1. anthropic-beta 头缺少 claude-code-20250219:伪装路径主动将该 beta
加入 drop set 并移除,但 Anthropic 依赖此 beta 识别 Claude Code 请求。
修复:非 haiku 模型的伪装请求强制包含 claude-code beta。
2. system 字段使用 string 格式而非 array+cache_control:真实 Claude Code
始终以 [{type,text,cache_control:{type:"ephemeral"}}] 发送 system,
string 格式成为第三方检测信号。
修复:rewriteSystemForNonClaudeCode 改为注入 array 格式。
附带调整:stripSystemCacheControl 按 system 是否被重写动态决定,
重写时保留 CC prompt 的 cache_control,未重写时(haiku/已含CC前缀)
保持原有剥离行为。
2026-04-08 14:06:06 +08:00
Wesley Liddick and GitHub
00aaf0f796
Merge pull request #1382 from StarryKira/fix/refresh-token-race-condition
...
fix: resolve refresh token race condition causing false invalid_grant errors fix issue#1381
2026-04-07 20:50:08 +08:00
Wesley Liddick and GitHub
81b96ae123
Merge pull request #1498 from aiexz/main
...
do not normalize model for openai API token based accounts
2026-04-07 20:37:10 +08:00
shaw
7c60ee3c85
feat: Beta策略支持按模型区分处理(模型白名单)
2026-04-07 20:33:09 +08:00
shaw
b2e379cf7a
fix: 非流式路径在上游终态事件output为空时从delta事件重建响应内容
...
上游API近期更新后,response.completed终态SSE事件的output字段可能为空,
实际内容仅通过response.output_text.delta等增量事件下发。流式路径不受影响,
但chat_completions非流式路径和responses OAuth非流式路径只依赖终态事件的
output,导致返回空响应。
新增BufferedResponseAccumulator累积器,在SSE扫描过程中收集delta事件内容
(文本、function_call、reasoning),当终态output为空时补充重建。
同时修复handleChatBufferedStreamingResponse遗漏response.done事件类型的问题。
2026-04-07 19:35:56 +08:00
shaw
08b454423b
chore: renew expired xlsx audit exceptions to 2026-07-06
2026-04-07 17:22:17 +08:00
shaw
f3aa54b770
fix: 非Claude Code客户端system prompt迁移至messages以绕过第三方应用检测
...
Anthropic近期引入基于system参数内容的第三方应用检测机制,原有的前置追加
Claude Code提示词策略无法通过检测(后续内容仍为非Claude Code格式触发429)。
新策略:对非Claude Code客户端的OAuth/SetupToken账号请求,将system字段
完整替换为Claude Code标识提示词,原始system内容作为user/assistant消息对
注入messages开头,模型仍接收完整指令。
仅影响/v1/messages路径,chat_completions和responses路径保持原有逻辑不变。
真正的Claude Code客户端请求完全不受影响(原样透传)。
2026-04-07 17:06:47 +08:00
Wesley Liddick and GitHub
9ab2fd7f9e
Merge pull request #1391 from Zqysl/qingyu/fix-openai-passthrough-failover-429-529
...
fix(openai): fail over passthrough 429 and 529
2026-04-07 15:18:52 +08:00
Wesley Liddick and GitHub
bf2b590273
Merge pull request #1397 from weak-fox/fix/active-filter-excludes-rate-limited
...
解决账号管理中“正常”筛选包含限流中账号
2026-04-07 08:26:51 +08:00
shaw
339d906e54
chore: update readme
2026-04-05 22:31:01 +08:00
shaw
f47c865555
chore: update readme
2026-04-05 22:27:13 +08:00
Wesley Liddick and GitHub
c71b1d63e5
Merge pull request #1460 from imfusheng/main
...
解决issue#1453提到的反重力不可用问题
2026-04-05 22:01:08 +08:00
shaw
a07296770c
fix: remove remaining Sora references from frontend
...
The previous Sora removal missed several frontend references, causing
TypeScript build errors for sora_client_enabled and a missing SoraView.vue
import. Clean up all remaining Sora code from types, router, sidebar,
settings, store, and accounts API.
2026-04-05 21:26:47 +08:00
Wesley Liddick and GitHub
8154575d70
Merge pull request #1464 from touwaeriol/fix/channel-platform-isolation
...
fix(channel): remove cross-platform pricing/mapping leakage for antigravity groups
2026-04-05 21:09:10 +08:00
Wesley Liddick and GitHub
d757df8a4b
Merge pull request #1463 from touwaeriol/feat/remove-sora
...
revert: completely remove Sora platform
2026-04-05 21:08:48 +08:00
shaw
f585a15eff
fix(billing): prevent channel_mapped override from reverting BillingModel when channel did not map
...
When a channel has no model mapping for the requested model, ChannelMappedModel
equals OriginalModel (the user's arbitrary input). Combined with the default
BillingModelSource="channel_mapped", this incorrectly overrides the BillingModel
set by the OpenAI format conversion layer (e.g., gpt-5.4 from DefaultMappedModel)
back to the unmapped original model (e.g., glm) which has no pricing — resulting
in zero-cost billing.
Add guard condition so the channel_mapped override only fires when the channel
actually changed the model (ChannelMappedModel != OriginalModel).
2026-04-05 17:31:18 +08:00
Wesley Liddick and GitHub
bf45581104
Merge pull request #1455 from touwaeriol/feat/channel-management
...
feat(channel): add channel management with multi-mode pricing and billing integration
2026-04-04 23:42:33 +08:00
Wesley Liddick and GitHub
b384570de3
Merge pull request #1439 from touwaeriol/feat/redeem-negative-value
...
feat(redeem): support negative values for refund/deduction
2026-04-03 22:22:54 +08:00
Wesley Liddick and GitHub
0507852a34
Merge pull request #1437 from DaydreamCoding/fix/openai-oauth-improvements
...
feat(openai): OpenAI OAuth 账号管理增强:订阅状态、隐私设置、Token 刷新修复
2026-04-03 09:22:10 +08:00
Wesley Liddick and GitHub
7b6ff135fb
Merge pull request #1424 from DaydreamCoding/fix/antigravity-batch-privacy
...
fix(antigravity): 修复批量刷新令牌不设置隐私模式的问题
2026-04-03 09:21:39 +08:00
Wesley Liddick and GitHub
055c48ab33
Merge pull request #1262 from InCerryGit/main
...
fix(openai): preserve bare gpt-5.3-codex-spark across forwarding paths
2026-04-01 08:31:12 +08:00
Wesley Liddick and GitHub
6663e1eda6
Merge pull request #1420 from YanzheL/fix/1202-gemini-customtools-404
...
Fix Gemini CLI 404s for gemini-3.1-pro-preview-customtools
2026-04-01 08:30:40 +08:00
Wesley Liddick and GitHub
83a16dec19
Merge pull request #1407 from DaydreamCoding/feat/cache-driven-rpm-buffer
...
feat(gateway): Cache-Driven RPM Buffer
2026-03-31 14:01:23 +08:00
Wesley Liddick and GitHub
820c531814
Merge pull request #1406 from DaydreamCoding/feat/group-account-filter
...
feat(group-filter): 分组账号过滤控制 — require_oauth_only + require_privacy_set
2026-03-31 14:01:05 +08:00
Wesley Liddick and GitHub
1727b8df3b
Merge pull request #1404 from DaydreamCoding/feat/antigravity-privacy-on-refresh-fail
...
feat(antigravity): 令牌刷新失败及创建账号时也设置隐私
2026-03-31 14:00:53 +08:00
shaw
a025a15f5d
feat: add refresh button to admin and user dashboard pages
2026-03-31 13:53:49 +08:00
shaw
318aa5e0d3
feat: add cache hit rate line to token usage trend chart
...
Add a purple dashed line showing cache hit rate percentage
(cache_read / (cache_read + cache_creation)) on a secondary
right Y-axis (0-100%). Applies to both user and admin dashboards.
2026-03-30 21:43:07 +08:00
shaw
1dfd974432
chore: update readme
2026-03-30 16:28:31 +08:00
shaw
cc396f59cf
chore: update readme
2026-03-30 16:24:29 +08:00
Wesley Liddick and GitHub
6a2cf09ee0
Merge pull request #1349 from touwaeriol/feat/antigravity-internal500-penalty
...
feat(antigravity): progressive penalty for consecutive INTERNAL 500 errors
2026-03-30 15:54:04 +08:00
Wesley Liddick and GitHub
c6fd88116b
Merge pull request #1354 from wucm667/fix/billing-use-requested-model
...
fix(billing): 计费始终使用用户请求的原始模型,而非映射后的上游模型
2026-03-30 15:52:31 +08:00
Wesley Liddick and GitHub
8f0dbdeaba
Merge pull request #1343 from yilinyo/fix/api-key-unique-conflict-after-soft-delete
...
fix(api-key):软删除apikey后key没有被释放后续无法再自定义相同的key
2026-03-30 15:47:28 +08:00
Wesley Liddick and GitHub
007c09b84e
Merge pull request #1338 from LvyuanW/fix/safari-ops-log-select
...
fix(admin): fix Safari system log select height
2026-03-30 15:45:35 +08:00
Wesley Liddick and GitHub
73f3c068ef
Merge pull request #1344 from 7836246/fix/i18n-sora-storage-missing-keys
...
fix(i18n): 修复 Sora 存储配置页面表格列头「存储桶」翻译缺失
2026-03-30 15:45:03 +08:00
Wesley Liddick and GitHub
9a92fa4a60
Merge pull request #1370 from YanzheL/fix/1320-openai-messages-gpt54-xhigh
...
fix(gateway): normalize gpt-5.4-xhigh for /v1/messages
2026-03-30 15:44:34 +08:00
Wesley Liddick and GitHub
576af710be
Merge pull request #1352 from StarryKira/feat/add-file-upload-oauth-scope
...
Feat/add file upload oauth scope
2026-03-30 15:41:18 +08:00
Wesley Liddick and GitHub
b5642bd068
Merge pull request #1377 from DaydreamCoding/fix/lifecycle-stop-duplicate-close
...
fix(lifecycle): TokenRefreshService Stop() 防重复 close
2026-03-30 15:38:39 +08:00
Wesley Liddick and GitHub
128f322252
Merge pull request #1376 from weak-fox/fix/privacy-without-refresh-token
...
修复缺少 refresh_token 时被临时停调度
2026-03-30 15:38:27 +08:00
Wesley Liddick and GitHub
17d7e57a2e
Merge pull request #1375 from weak-fox/fix/batch-reset-temp-unsched
...
修复重置状态时未清理临时停调度
2026-03-30 15:37:58 +08:00
shaw
50288e6b01
fix: 修复模型定价文件更新url
2026-03-30 15:36:53 +08:00
shaw
ab3e44e4bd
fix: 适配X-Claude-Code-Session-Id头
2026-03-30 11:43:07 +08:00
shaw
b65275235f
feat: Anthropic oauth/setup-token账号支持自定义转发URL
2026-03-30 09:10:57 +08:00
Wesley Liddick and GitHub
9398ea7af5
Merge pull request #1340 from DaydreamCoding/fix/privacy-and-system-prompt
...
fix(openai): OpenAI 隐私模式全场景覆盖 & 修复转发路径 system prompt 丢失
2026-03-27 15:03:57 +08:00
Wesley Liddick and GitHub
29dce1a59c
Merge pull request #1266 from eltociear/add-ja-doc
...
docs: add Japanese README
2026-03-27 14:51:37 +08:00
Wesley Liddick and GitHub
20544a4447
Merge pull request #1300 from xilu0/fix/forward-failed-log-missing-account-proxy-info
...
fix: add account and proxy details to forward_failed log
2026-03-27 14:47:51 +08:00
Wesley Liddick and GitHub
b688ebeefa
Merge pull request #1215 from weak-fox/fix/privacy-retry-failed-mode
...
fix: 允许 OpenAI privacy_mode修改失败后能在 token 刷新时重试
2026-03-27 14:46:38 +08:00
shaw
1854050df3
feat(tls-fingerprint): 新增 TLS 指纹 Profile 数据库管理及代码质量优化
...
新增功能:
- 新增 TLS 指纹 Profile CRUD 管理(Ent schema + 迁移 + Admin API + 前端管理界面)
- 支持账号绑定数据库中的自定义 TLS Profile,或随机选择(profile_id=-1)
- HTTPUpstream.DoWithTLS 接口从 bool 改为 *tlsfingerprint.Profile,支持按账号指定 Profile
- AccountUsageService 注入 TLSFingerprintProfileService,统一 usage 场景与网关的 Profile 解析逻辑
代码优化:
- 删除已被 TLSFingerprintProfileService 完全取代的 registry.go 死代码(418 行)
- 提取 3 个 dialer 的重复 TLS 握手逻辑为 performTLSHandshake() 共用函数
- 修复 GetTLSFingerprintProfileID 缺少 json.Number 处理的 bug
- gateway_service.Forward 中 ResolveTLSProfile 从重试循环内重复调用改为预解析局部变量
- 删除冗余的 buildClientHelloSpec() 单行 wrapper 和 int64(e.ID) 无效转换
- tls_fingerprint_profile_cache.go 日志从 log.Printf 改为 slog 结构化日志
- dialer_capture_test.go 添加 //go:build integration 标签,防止 CI 失败
- 去重 TestProfileExpectation 类型至共享 test_types_test.go
- 修复 9 个测试文件缺少 tlsfingerprint import 的编译错误
- 修复 error_policy_integration_test.go 中 handleError 回调签名被错误替换的问题
2026-03-27 14:33:05 +08:00
Wesley Liddick and GitHub
ef5c8e6839
Merge pull request #1231 from LvyuanW/bulk-openai-passthrough-worktree
...
Support bulk editing for OpenAI passthrough
2026-03-26 16:47:49 +08:00
shaw
d571f300e5
feat(rectifier): 请求整流器增加 API Key 账号签名整流支持
...
新增独立开关控制 API Key 账号的签名整流功能,支持配置自定义
匹配关键词以捕获不同格式的上游错误响应。
- 新增 apikey_signature_enabled 开关(默认关闭)
- 新增 apikey_signature_patterns 自定义关键词配置
- 内置签名检测规则对 API Key 账号同样生效
- 自定义关键词对完整响应体做不区分大小写匹配
- 重试二阶段检测仅做模式匹配,不重复校验开关
- Handler 层校验关键词数量(≤50)和长度(≤500)
- API 响应 nil patterns 统一序列化为空数组
- OAuth/SetupToken/Upstream/Bedrock 账号行为不变
2026-03-26 16:43:38 +08:00
Wesley Liddick and GitHub
ce96527dd9
Merge pull request #1302 from DaydreamCoding/fix/openai-error-handling
...
fix(ratelimit): OpenAI 401 token_invalidated/token_revoked 及 402 deac…
2026-03-26 11:30:52 +08:00
Wesley Liddick and GitHub
f8b8b53985
Merge pull request #1299 from DaydreamCoding/feat/antigravity-privacy-and-subscription
...
feat(antigravity): 自动隐私设置 + 订阅状态检测
2026-03-26 11:30:24 +08:00
shaw
b20e142249
feat: 网关请求头 wire casing 保持、转发行为开关、调试日志增强及 accept-encoding 恢复
...
- 新增 header_util.go,通过 setHeaderRaw/getHeaderRaw/addHeaderRaw 绕过
Go 的 canonical-case 规范化,保持真实 Claude CLI 抓包的请求头大小写
(如 "x-app" 而非 "X-App","X-Stainless-OS" 而非 "X-Stainless-Os")
- 新增管理后台开关:指纹统一化(默认开启)和 metadata 透传(默认关闭),
使用 atomic.Value + singleflight 缓存模式,60s TTL
- 调试日志从控制台 body 打印升级为文件级完整快照
(按真实 wire 顺序输出 headers + 格式化 JSON body + 上下文元数据)
- 恢复 accept-encoding 到白名单,在 http_upstream.go 新增 decompressResponseBody
处理 gzip/brotli/deflate 解压(Go 显式设置 Accept-Encoding 时不会自动解压)
- OAuth 服务 axios UA 从 1.8.4 更新至 1.13.6
- 测试断言改用 getHeaderRaw 适配 raw header 存储方式
2026-03-26 11:17:25 +08:00
Wesley Liddick and GitHub
0f03393010
Merge pull request #1234 from Zqysl/qingyu/fix-ops-runtime-log-controls-layout
...
fix(ops): prevent runtime log controls UI overflow
2026-03-24 19:13:47 +08:00
Wesley Liddick and GitHub
4b1ffc23f5
Merge pull request #1240 from Zqysl/qingyu/fix-openai-passthrough-429-rate-limits
...
fix(openai): persist passthrough 429 rate limits
2026-03-24 19:02:40 +08:00
Wesley Liddick and GitHub
c7137dffa8
Merge pull request #1218 from LvyuanW/openai-runtime-recheck
...
fix(openai): prevent rescheduling rate-limited accounts
2026-03-24 15:21:18 +08:00
Wesley Liddick and GitHub
5a3375ce52
Merge pull request #1227 from liruiluo/codex/dockerignore-deploy-data
...
Ignore deploy runtime data in Docker context
2026-03-24 15:20:10 +08:00
Wesley Liddick and GitHub
8e834fd9f5
Merge pull request #1204 from Eilen6316/fix/smtp-config-stability-and-refresh-test
...
fix(settings): prevent SMTP config overwrite and stabilize SMTP test after refresh
2026-03-24 15:19:24 +08:00
Wesley Liddick and GitHub
02046744eb
Merge pull request #1212 from alfadb/fix/filter-empty-text-blocks-nested
...
fix(gateway): 修复 tool_result 嵌套内容中空 text block 导致上游 400 错误
2026-03-24 15:19:01 +08:00
Wesley Liddick and GitHub
68d7ec9155
Merge pull request #1220 from weak-fox/feat/account-privacy-mode-filter
...
feat: 管理员账号列表支持按 Privacy 状态筛选
2026-03-24 15:18:30 +08:00
Wesley Liddick and GitHub
7537dce0f0
Merge pull request #1230 from LvyuanW/bulk-openai-oauth-ws-mode-pr
...
Add bulk OpenAI OAuth WS mode editing
2026-03-24 15:17:13 +08:00
Wesley Liddick and GitHub
5f41b74707
Merge pull request #1242 from Ethan0x0000/feat/anthropic-openai-endpoint-compat
...
支持 Anthropic Responses / Chat Completions 兼容端点并完善会话一致性与错误可观测性
2026-03-24 15:16:26 +08:00
Wesley Liddick and GitHub
25d961d4e0
Merge pull request #1252 from DaydreamCoding/feat/openai-mobile-rt
...
feat(openai): 支持 Mobile Refresh Token 导入,自动补全 plan_type
2026-03-24 15:12:25 +08:00
shaw
995bee143a
feat: 支持自定义端点配置与展示
2026-03-24 10:22:08 +08:00
Wesley Liddick and GitHub
bda7c39e55
Merge pull request #1196 from Eilen6316/fix/settings-form-url-validation
...
fix: prevent silent save failure in admin settings form
2026-03-21 20:55:23 +08:00
Wesley Liddick and GitHub
3583283ebb
Merge pull request #1197 from mutuyihao/fix/apicompat-array-content
...
fix(apicompat): support array content for system and tool messages
2026-03-21 20:53:27 +08:00
Wesley Liddick and GitHub
186e36752d
Merge pull request #1194 from Ethan0x0000/feat/requested-upstream-model-semantics
...
feat(usage): 统一使用记录中的请求模型与上游模型语义
2026-03-21 14:02:10 +08:00
Wesley Liddick and GitHub
421728a985
Merge pull request #1193 from xilu0/worktree-fix-thinking-block-log-level
...
fix: correct log levels for thinking block signature retry flow
2026-03-21 13:57:30 +08:00
Wesley Liddick and GitHub
39a5701184
Merge pull request #1182 from DaydreamCoding/fix/ops-alert-wg-race-and-context-leak
...
fix(ops_alert): wg.Add 竞态修复 + leader lock release context 泄漏
2026-03-21 13:52:14 +08:00
Wesley Liddick and GitHub
a225a241d7
Merge pull request #1162 from remxcode/main
...
feat(openai): 增加 gpt-5.4-mini/nano 模型支持与定价配置
2026-03-20 13:57:47 +08:00
Wesley Liddick and GitHub
553a486d17
Merge pull request #1171 from wucm667/fix/quota-display-stale-after-reset
...
fix: quota display shows stale cumulative usage after daily/weekly reset
2026-03-20 13:54:18 +08:00
Wesley Liddick and GitHub
c73374a221
Merge pull request #1176 from learnerLj/fix-bugs
...
fix: 修复 OpenAI 转发路径未应用分组默认模型映射
2026-03-20 13:53:20 +08:00
Wesley Liddick and GitHub
94e26dee4f
Merge pull request #1172 from alfadb/fix/openai-messages-effort-max-to-xhigh
...
fix(apicompat): 修正 Anthropic→OpenAI 推理级别映射
2026-03-20 13:48:41 +08:00
shaw
4f7629a4cb
fix: add max_claude_code_version to API contract test expected output
2026-03-20 09:17:32 +08:00
Wesley Liddick and GitHub
4015f31f28
Merge pull request #1157 from LvyuanW/fix-bulk-model-restriction-empty
...
fix: allow clearing model restriction in bulk edit when whitelist is empty
2026-03-20 09:13:44 +08:00
Wesley Liddick and GitHub
9dccbe1b07
Merge pull request #1169 from touwaeriol/pr/credits-exhausted-fix
...
fix(antigravity): correctly mark credits exhausted on "Resource has been exhausted" 429
2026-03-20 09:12:55 +08:00
Wesley Liddick and GitHub
9a88df7f28
Merge pull request #1167 from touwaeriol/pr/proxy-fast-fail
...
fix(antigravity): fast-fail on proxy unavailable, temp-unschedule account
2026-03-20 09:12:39 +08:00
Wesley Liddick and GitHub
a47f622e7e
Merge pull request #1159 from JerryFan626/fix/docker-compose-to-docker-compose-v2
...
docs: update docker-compose commands to Docker Compose V2 syntax
2026-03-20 09:12:14 +08:00
Wesley Liddick and GitHub
3529148455
Merge pull request #1151 from DaydreamCoding/feat/admin-user-group-filter
...
feat(admin): 用户管理新增分组列、分组筛选与专属分组一键替换
2026-03-20 09:10:38 +08:00
shaw
01d8286bd9
feat: add max_claude_code_version setting and disable auto-upgrade env var
...
Add maximum Claude Code version limit to complement the existing minimum
version check. Refactor the version cache from single-value to unified
bounds struct (min+max) with a single atomic.Value and singleflight group.
- Backend: new constant, struct field, cache refactor, validation (semver
format + cross-validation max >= min), gateway enforcement, audit diff
- Frontend: settings UI input, TypeScript types, zh/en i18n
- Add CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 to all Claude Code
tutorials on /keys page (unix/cmd/powershell/vscode settings.json)
2026-03-20 09:10:01 +08:00
Wesley Liddick and GitHub
0236b97d49
Merge pull request #1134 from yasu-dev221/fix/openai-compat-prompt-cache-key
...
fix(openai): add fallback prompt_cache_key for compat codex OAuth requests
2026-03-19 22:02:08 +08:00
Wesley Liddick and GitHub
26f6b1eeff
Merge pull request #1142 from StarryKira/fix/failover-exhausted-upstream-status-code
...
fix: record original upstream status code when failover exhausted (#1128)
2026-03-19 21:56:58 +08:00
Wesley Liddick and GitHub
dc447ccebe
Merge pull request #1153 from hging/main
...
feat: add ungrouped filter to account
2026-03-19 21:55:28 +08:00
Wesley Liddick and GitHub
7ec29638f4
Merge pull request #1147 from DaydreamCoding/feat/persisted-page-size
...
feat(frontend): 分页 pageSize 持久化到 localStorage,刷新后自动恢复
2026-03-19 21:53:54 +08:00
Wesley Liddick and GitHub
4c9562af20
Merge pull request #1148 from weak-fox/ci/sync-version-file-after-release
...
ci: sync VERSION file back to default branch after release
2026-03-19 21:46:45 +08:00
Wesley Liddick and GitHub
71942fd322
Merge pull request #1132 from touwaeriol/pr/virtual-scroll
...
perf(frontend): add virtual scrolling to DataTable
2026-03-19 21:46:16 +08:00
Wesley Liddick and GitHub
550b979ac5
Merge pull request #1146 from DaydreamCoding/fix/test-403-error-status
...
fix(test): 测试连接收到 403 时将账号标记为 error 状态
2026-03-19 21:44:57 +08:00
Wesley Liddick and GitHub
3878a5a46f
Merge pull request #1164 from GuangYiDing/fix/normalize-tool-parameters-schema
...
fix: Anthropic tool schema 转换时补充缺失的 properties 字段
2026-03-19 21:44:18 +08:00
shaw
525cdb8830
feat: Anthropic 账号被动用量采样,页面默认展示被动数据
...
从上游 /v1/messages 响应头被动采集 5h/7d utilization 并存储到
Account.Extra,页面加载时直接读取本地数据而非调用外部 Usage API。
用户可点击"查询"按钮主动拉取最新数据,主动查询结果自动回写被动缓存。
后端:
- UpdateSessionWindow 合并采集 5h + 7d headers 为单次 DB 写入
- 新增 GetPassiveUsage 从 Extra 构建 UsageInfo (复用 estimateSetupTokenUsage)
- GetUsage 主动查询后 syncActiveToPassive 回写被动缓存
- passive_usage_ 前缀注册为 scheduler-neutral
前端:
- Anthropic 账号 mount/refresh 默认 source=passive
- 新增"被动采样"标签和"查询"按钮 (带 loading 动画)
2026-03-19 17:42:59 +08:00
shaw
a6764e82f2
修复 OAuth/SetupToken 转发请求体重排并增加调试开关
2026-03-19 16:56:18 +08:00
Wesley Liddick and GitHub
9f6ab6b817
Merge pull request #1090 from laukkw/main
...
fix(setup): align install validation and expose backend errors
2026-03-18 16:23:06 +08:00
shaw
bf3d6c0e6e
feat: add 529 overload cooldown toggle and duration settings in admin gateway page
...
Move 529 overload cooldown configuration from config file to admin
settings UI. Adds an enable/disable toggle and configurable cooldown
duration (1-120 min) under /admin/settings gateway tab, stored as
JSON in the settings table.
When disabled, 529 errors are logged but accounts are no longer
paused from scheduling. Falls back to config file value when DB
is unreachable or settingService is nil.
2026-03-18 16:22:19 +08:00