Lukin
abc66cc86f
fix: patch orphaned tool_use blocks missing tool_result in Claude relay
...
Clients (e.g. opencode) may truncate conversation history in long sessions, leaving tool_use blocks without corresponding tool_result. The upstream Claude API strictly validates this pairing and returns 400. This adds _patchOrphanedToolUse() to claudeRelayService._processRequestBody(), which detects orphaned tool_use IDs and synthesizes error tool_result blocks — the same approach already used in anthropicGeminiBridgeService for the Antigravity path.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-13 11:42:48 +08:00
github-actions[bot]
25cbcd313b
chore: sync VERSION file with release v1.1.277 [skip ci]
2026-02-12 15:42:52 +00:00
Lukin
bf847b8aaf
ci: remove Docker Hub, use only GHCR for releases
...
- Remove Docker Hub login step
- Remove docker.io image tags from build
- Update Telegram notification to show only GHCR images
2026-02-12 23:41:27 +08:00
github-actions[bot]
bdecbdedae
chore: sync VERSION file with release v1.1.276 [skip ci]
2026-02-12 15:37:51 +00:00
Lukin
647420b10c
Merge fix for Console API system role handling
2026-02-12 23:32:31 +08:00
Lukin
fe52a62cda
fix(console): transform system role messages for Console API compatibility
...
Claude Console API (e.g., GLM accounts) does not accept messages with
role='system' in the messages array, returning 422 error:
"Input should be 'user' or 'assistant'"
This fix automatically transforms system messages by merging them into
the first user message's content, maintaining compatibility with clients
like opencode that send system role messages.
Changes:
- Add _transformSystemMessages() method to merge system content into user messages
- Apply transformation in both relayRequest() and relayStreamRequestWithUsageCapture()
- Only affects claude-console account type, no impact on official API
Fixes issues where opencode users get 422 errors when using Console API accounts.
2026-02-12 23:32:26 +08:00
Lukin
8a78f96564
ci: configure workflow for GHCR-only releases
...
- Remove Docker Hub dependency, use only GitHub Container Registry
- Update image naming logic for personal fork
- Simplify release notes to show GHCR images only
2026-02-12 23:31:02 +08:00
github-actions[bot]
02e82cd245
chore: sync VERSION file with release v1.1.274 [skip ci]
v1.1.274
2026-02-10 11:15:57 +00:00
Wesley Liddick
5fd834857e
Merge pull request #966 from TyrantLucifer/fix-cluade-opus-limit
...
fix: update the claude model limit logic
2026-02-10 19:15:41 +08:00
github-actions[bot]
0efb634988
chore: sync VERSION file with release v1.1.273 [skip ci]
v1.1.273
2026-02-10 11:12:22 +00:00
shaw
0cdfd65142
Merge branch 'main' into feat/oai_optimize
2026-02-10 19:09:59 +08:00
tyrantlucifer
f444af49bf
fix: update the limit logic, and if the daily limit is not reached after reaching the opus weekly limit, other claude models can be used
2026-02-10 14:17:36 +08:00
github-actions[bot]
00a954c7e9
chore: sync VERSION file with release v1.1.272 [skip ci]
v1.1.272
2026-02-10 03:22:22 +00:00
shaw
4ed0108a9c
fix: 移除特定system以适配新版cc客户端缓存失效的bug
2026-02-10 11:22:02 +08:00
SunSeekerX
cc82e071dc
1
2026-02-09 22:14:34 +08:00
SunSeekerX
c21997b7f4
1
2026-02-09 22:06:15 +08:00
SunSeekerX
29f2c4aba1
1
2026-02-09 20:33:04 +08:00
SunSeekerX
a08d51ba57
1
2026-02-09 20:24:38 +08:00
SunSeekerX
4637ee03b1
Merge branch 'main' into feat/oai_optimize
2026-02-09 18:17:28 +08:00
SunSeekerX
a119cb1744
1
2026-02-09 18:13:45 +08:00
github-actions[bot]
aa7bc00552
chore: sync VERSION file with release v1.1.271 [skip ci]
v1.1.271
2026-02-09 08:31:49 +00:00
shaw
b66d65d50f
fix: 修复openai账号多分组保存问题
2026-02-09 16:31:31 +08:00
github-actions[bot]
61e772fd95
chore: sync VERSION file with release v1.1.270 [skip ci]
v1.1.270
2026-02-07 11:29:06 +00:00
shaw
21fd4113c8
feat: 新增opus4.6支持
2026-02-07 19:28:42 +08:00
shaw
d2a2505f01
docs: update readme
2026-02-07 16:38:42 +08:00
github-actions[bot]
7a957f0f6e
chore: sync VERSION file with release v1.1.269 [skip ci]
v1.1.269
2026-02-06 03:12:30 +00:00
Wesley Liddick
20db21f99d
Merge pull request #947 from sczheng189/main
...
MOD: API-Key详情页限制的显示补充 + claude周费用补充注解以及修改
2026-02-06 11:12:12 +08:00
github-actions[bot]
18dbc29a26
chore: sync VERSION file with release v1.1.268 [skip ci]
2026-02-05 03:46:09 +00:00
sczheng
d224a7f4c1
fix: 修复速率限制的使用次数显示问题
2026-02-05 11:43:53 +08:00
shaw
1ff0d84e21
chore: update readme
2026-02-04 14:51:54 +08:00
github-actions[bot]
a1b695510b
chore: sync VERSION file with release v1.1.268 [skip ci]
v1.1.268
2026-01-30 01:33:26 +00:00
shaw
f96e21c615
chore: upgrade Antigravity User-Agent to 1.15.8
2026-01-30 09:33:04 +08:00
Wesley Liddick
6a45af3d0d
Merge pull request #933 from foamzou/patch-1 [skip ci]
...
Fix API endpoint for exchanging setup token
2026-01-30 09:31:04 +08:00
foam
c2351e03f8
Fix API endpoint for exchanging setup token
2026-01-29 15:22:15 +08:00
sczheng
88c96f8813
Merge remote-tracking branch 'upstream/main'
2026-01-27 22:21:51 +08:00
shaw
2c2039d1a1
docs: update readme
2026-01-27 14:48:52 +08:00
shaw
56eb7c3c7d
docs: update readme
2026-01-27 14:46:22 +08:00
github-actions[bot]
03dfedc3d9
chore: sync VERSION file with release v1.1.267 [skip ci]
v1.1.267
2026-01-25 05:12:51 +00:00
Wesley Liddick
866806301f
Merge pull request #924 from DaydreamCoding/feat/codex_exec
...
feat(codex): 添加 codex_exec 用户代理支持
2026-01-25 13:12:37 +08:00
QTom
816c47b51d
feat(codex): 添加 codex_exec 用户代理支持
...
支持 Codex CLI 的非交互式/脚本模式(codex exec),使其与 codex_vscode 和 codex_cli_rs 共享相同的验证逻辑和权限配置。修复 codex exec 0.89.0 版本因客户端限制导致的 403 错误。
2026-01-25 12:24:19 +08:00
github-actions[bot]
c97bfb6478
chore: sync VERSION file with release v1.1.266 [skip ci]
v1.1.266
2026-01-24 12:22:09 +00:00
Wesley Liddick
efda870e96
Merge pull request #923 from DaydreamCoding/feature/fix_api_auth
...
fix(auth): 修复客户端限制绕过漏洞,添加路径白名单检查
2026-01-24 20:21:52 +08:00
Wesley Liddick
1ae310f2a1
Merge pull request #920 from arksou/main [skip ci]
...
fix: 配额超限优化
2026-01-24 20:21:34 +08:00
QTom
6dc85b39c9
refactor(validators): 消除重复代码,使用映射表和复用函数
...
代码审查后的重构:
- isPathAllowedForClient 复用 getClientDefinitionById 避免重复查找
- validateRequest 中使用 getClientDefinitionById 替代内联查找
- 使用 VALIDATOR_MAP 映射表替代 switch 语句
- getSupportedClients 改为从映射表动态获取,避免硬编码
- 导入 CLIENT_IDS 枚举,提高类型安全性
这些改动提高了代码的可维护性,添加新客户端时只需修改映射表。
2026-01-24 17:45:13 +08:00
QTom
6c4670213e
fix(auth): 修复客户端限制绕过漏洞,添加路径白名单检查
...
当 API Key 启用客户端限制(如仅允许 Claude Code)时,攻击者可通过
/api/v1/chat/completions 等 OpenAI 兼容端点绕过验证。原因是
ClaudeCodeValidator 对非 messages 路径仅检查 User-Agent。
修复方案:
- 为每个客户端类型定义允许的路径白名单
- 在客户端验证前进行路径检查
- 路径不在白名单中则直接拒绝,无需继续验证
修改文件:
- src/validators/clientDefinitions.js:添加 allowedPathPrefixes 配置
- src/validators/clientValidator.js:添加路径白名单前置检查
Claude Code 限制时的路由保护:
- 允许访问:/api/v1/messages, /claude/v1/messages 等原生端点
- 拒绝访问:/api/v1/chat/completions, /openai/claude/v1/chat/completions 等
- 其他客户端类型(Gemini CLI、Codex CLI、Droid CLI)也同样适用
相关问题:/api/v1/chat/completions 端点在启用 Claude Code 限制后
依然可以使用,深入分析原因并提供修复方案 #security #client-restriction
2026-01-24 17:37:42 +08:00
gaozitian
d16b75293d
fix: optimize Claude Console quota exceeded status display
...
- Keep account status as 'active' when quota exceeded (not 'quota_exceeded')
- Keep isActive as true, only use quotaStoppedAt to mark quota exceeded
- Show green status in UI for quota exceeded accounts (normal state)
- Show '余额不足' as unschedulable reason instead of '已暂停'
- Simplify resetDailyUsage() to only check quotaStoppedAt field
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-24 12:06:09 +08:00
github-actions[bot]
2ac31a5706
chore: sync VERSION file with release v1.1.265 [skip ci]
v1.1.265
2026-01-23 11:16:24 +00:00
Wesley Liddick
a3a922ac09
Merge pull request #919 from arksou/hotfix/claude-console-quota-exceeded-recovery
...
fix: Claude Console 配额超限状态优化,支持主动自动恢复
2026-01-23 19:16:10 +08:00
Wesley Liddick
0073d40299
Merge pull request #916 from enzyme2013/fix/allow-new-session-after-clear [skip ci]
...
fix: allow new session binding after /clear command
2026-01-23 19:15:59 +08:00
jett.gao
d812af9159
fix: Claude Console 配额超限状态优化,支持主动自动恢复
...
- 新增 rateLimitCleanupService 配额超限恢复检查(每5分钟)
- 调度器预检查配额超限账户,到达重置时间自动恢复
- 前端显示"余额不足"替代默认的"手动停止调度"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-23 18:19:34 +08:00