liuxiongfeng
4bfeeecb05
fix(billing): 修复 Gemini 接口缓存 token 统计
...
extractGeminiUsage 函数未提取 cachedContentTokenCount,
导致计费时缓存读取 token 始终为 0。
修复:
- 提取 usageMetadata.cachedContentTokenCount
- 设置 CacheReadInputTokens 字段
- InputTokens 减去缓存 token(与 response_transformer 逻辑一致)
2026-02-02 14:01:17 +08:00
liuxiongfeng
bbc7b4aeed
feat(gateway): Gemini API Key 账户跳过模型映射检查,直接透传
...
Gemini API Key 账户通常代理上游服务,模型支持由上游判断,
本地不需要预先配置模型映射。
2026-02-02 13:40:29 +08:00
Wesley Liddick
d3062b2e46
Merge pull request #434 from DuckyProject/feat/announcement-system-pr-upstream
...
feat(announcements): admin/user announcement system
2026-02-02 10:50:26 +08:00
Wesley Liddick
b7777fb46c
Merge pull request #436 from iBenzene/feat/redis-tls-support
...
feat: add support for using TLS to connect to Redis
2026-02-02 10:02:25 +08:00
iBenzene
35f39ca291
chore: 修复了 redis.go 中代码风格(golangci-lint)的问题
2026-01-31 19:06:19 +08:00
iBenzene
f2e206700c
feat: add support for using TLS to connect to Redis
2026-01-31 03:58:01 +08:00
cyhhao
adb77af1d9
fix: satisfy golangci-lint (nil checks, remove unused helpers)
2026-01-31 02:07:57 +08:00
cyhhao
3a34746668
refactor: stop rewriting tool descriptions; keep only system sentence rewrite
2026-01-31 02:01:51 +08:00
cyhhao
fe17058700
refactor: limit OpenCode keyword replacement to tool descriptions
2026-01-31 01:40:38 +08:00
ducky
9bee0a2071
chore: gofmt for golangci-lint
2026-01-30 17:28:53 +08:00
ducky
b7f69844e1
feat(announcements): add admin/user announcement system
...
Implements announcements end-to-end (admin CRUD + read status, user list + mark read) with OR-of-AND targeting. Also breaks the ent<->service import cycle by moving schema-facing constants/targeting into a new domain package.
2026-01-30 16:45:04 +08:00
cyhhao
602bf9c017
Merge branch 'main' of github.com:Wei-Shaw/sub2api
2026-01-30 13:21:25 +08:00
Wesley Liddick
c3d1891ccd
Merge pull request #427 from touwaeriol/pr/upgrade-antigravity-ua
...
chore: upgrade Antigravity User-Agent to 1.15.8
2026-01-30 09:17:17 +08:00
shaw
4d8f2db924
fix: 更新所有CI workflow的Go版本验证至1.25.6
2026-01-30 08:57:37 +08:00
shaw
6599b366dc
fix: 升级Go版本至1.25.6修复标准库安全漏洞
...
修复GO-2026-4341和GO-2026-4340两个标准库漏洞
2026-01-30 08:53:53 +08:00
liuxiongfeng
ba16ace697
chore: upgrade Antigravity User-Agent to 1.15.8
2026-01-30 08:14:52 +08:00
cyhhao
fa454b1b99
fix: align Claude Code system banner with opencode latest
2026-01-29 15:37:07 +08:00
cyhhao
8375094c69
fix(oauth): match Claude CLI accept header and beta set
2026-01-29 15:31:29 +08:00
cyhhao
91079d3f15
chore(debug): emit Claude mimic fingerprint on credential-scope error
2026-01-29 15:17:46 +08:00
cyhhao
63412a9fcc
chore(debug): log Claude mimic fingerprint
2026-01-29 03:13:14 +08:00
cyhhao
d98648f03b
fix: rewrite OpenCode identity sentence to Claude Code
2026-01-29 03:03:40 +08:00
cyhhao
c37fe91672
fix(oauth): update Claude CLI fingerprint headers
2026-01-29 02:52:26 +08:00
cyhhao
4d40fb6b60
fix(oauth): merge anthropic-beta and force Claude Code headers in mimic mode
2026-01-29 02:36:28 +08:00
cyhhao
be3b788b8f
fix: also prefix next system block with Claude Code banner
2026-01-29 02:03:54 +08:00
cyhhao
723e54013a
fix(oauth): mimic Claude Code metadata and beta headers
2026-01-29 01:49:51 +08:00
cyhhao
4d566f68b6
chore: gofmt
2026-01-29 01:34:58 +08:00
cyhhao
31f817d189
fix: add newline separation for Claude Code system prompt
2026-01-29 01:28:43 +08:00
cyhhao
59231668c5
Merge branch 'main' of github.com:Wei-Shaw/sub2api
2026-01-29 01:16:36 +08:00
shaw
cadca752c4
修复SSE流式响应中usage数据被覆盖的问题
2026-01-28 18:36:21 +08:00
Wesley Liddick
edf215e6fd
Merge pull request #409 from DuckyProject/feat/purchase-subscription-iframe
...
feat(purchase): 增加购买订阅 iframe 页面与配置
2026-01-28 17:28:47 +08:00
shaw
e12dd079fd
修复调度器空缓存导致的竞态条件bug
...
当新分组创建后立即绑定账号时,调度器会错误地将空快照视为有效缓存命中,
导致返回没有可调度的账号。现在空快照会触发数据库回退查询。
2026-01-28 17:26:32 +08:00
ducky
04a509d45e
feat(purchase): 增加购买订阅 iframe 页面与配置
...
- 新增 /purchase 页面(iframe + 新窗口兜底)
- 管理员系统设置可配置开关与URL
- 非 simple mode 才在侧边栏展示入口
2026-01-28 13:54:32 +08:00
Wesley Liddick
269a659200
Merge pull request #406 from geminiwen/main
...
fix(openai-oauth): 改进错误处理和代理支持
2026-01-28 13:53:44 +08:00
Wesley Liddick
2c31bf46b5
Merge pull request #401 from slovx2/heihuzi_main
...
feat(gemini): 为 Gemini 原生平台添加图片计费支持
2026-01-28 13:51:14 +08:00
Gemini Wen
8f6639f825
fix(response): add nil check for c.Request in error logging
...
Prevents panic when ErrorFrom is called in test contexts where
gin.CreateTestContext doesn't set up an HTTP request.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 19:26:44 +08:00
Gemini Wen
fc17d9d7df
chore: bump version to 0.1.61 and fix tests
...
- Update VERSION from 0.1.46 to 0.1.61
- Remove ForceHTTP2 tests for OpenAI OAuth client (ForceHTTP2 was removed)
- Update createOpenAIReqClient test to use new single-arg signature
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 19:22:45 +08:00
Gemini Wen
ab092e88a8
fix(openai-oauth): 改进错误处理和代理支持
...
- 使用 ApplicationError 返回详细错误信息到前端
- 添加 User-Agent: codex-cli/0.91.0
- 移除 ForceHTTP2 以兼容 HTTP 代理
- 修复代理获取失败时静默忽略的问题
- 500 错误时记录完整错误日志
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 19:13:01 +08:00
cyhhao
ffe43f6098
Merge branch 'main' of github.com:Wei-Shaw/sub2api
2026-01-27 11:09:11 +08:00
shaw
56a1e29cdd
fix(gateway): 修复 SSE 流式响应 usage 统计错误
...
message_delta 应完全覆盖 message_start 的 usage 数据,
而非仅在值为 0 时才更新。
2026-01-27 09:16:34 +08:00
song
0059a232a6
feat(gemini): 为 Gemini 原生平台添加图片计费支持
...
对齐 Antigravity 平台的图片计费逻辑:
- 添加 extractImageSize() 方法提取图片尺寸
- Forward() 和 ForwardNative() 返回 ImageCount/ImageSize
- 支持分组自定义图片价格和倍率
2026-01-26 20:51:40 +08:00
shaw
45676fdc8d
fix(ci): 转义 Telegram 消息中的 Markdown 特殊字符
...
修复发布通知发送失败的问题,原因是 tag message 中包含未闭合的
Markdown 格式标记(如 user_id 中的 _ 被解析为斜体开始)导致
Telegram API 返回解析错误。
添加 sed 命令转义 _、*、` 和 [ 字符,避免被 Telegram Markdown
解析器错误处理。
2026-01-26 11:07:08 +08:00
cyhhao
a161fcc89b
Merge branch 'main' of github.com:Wei-Shaw/sub2api
2026-01-26 10:44:38 +08:00
Wesley Liddick
e32c5f534f
Merge pull request #386 from IanShaw027/fix/openai-usage-limit-reset-time
...
fix(ratelimit): 修复 OpenAI usage_limit_reached 错误的重置时间解析
2026-01-26 10:22:42 +08:00
shaw
426d691c95
fix(urlvalidator): 移除 ValidateURLFormat 返回值的末尾斜杠
...
修复 API Key 账号 base_url 末尾带斜杠时导致的双斜杠问题
2026-01-26 10:21:41 +08:00
shaw
e9a4c8ab97
docs: 修改演示站点域名
2026-01-26 10:04:44 +08:00
ianshaw
a55cfebd09
fix(ratelimit): 修复 OpenAI usage_limit_reached 错误的重置时间解析
...
- 问题:OpenAI 的 usage_limit_reached 错误(需 37 小时重置)被错误地设置为 5 分钟
- 原因:handle429 只检查 Anthropic 响应头,没有解析 OpenAI 响应体中的 resets_in_seconds
- 修复:新增 parseOpenAIRateLimitResetTime 函数解析 OpenAI 响应体
- 影响:避免调度器不断尝试已达配额上限的账户
2026-01-26 09:57:44 +08:00
Wesley Liddick
34cc02f8c7
Merge pull request #393 from IanShaw027/fix/gemini-thought-signature-preserve
...
fix(gemini): 修复 thoughtSignature 跨账号验证错误
2026-01-26 09:23:46 +08:00
Wesley Liddick
624d9fddb7
Merge pull request #391 from geminiwen/main
...
fix(subscription): 修复订阅调整逻辑,已过期订阅从当前时间计算
2026-01-26 09:23:29 +08:00
Wesley Liddick
47fbe43324
Merge pull request #385 from DDZS987/fix/oauth-token-refresh-missing-project-id-retry
...
fix(oauth): 修复 OAuth 令牌刷新时 missing_project_id 误报问题
2026-01-26 09:22:48 +08:00
shaw
1245f07a2d
feat(auth): 实现 TOTP 双因素认证功能
...
新增功能:
- 支持 Google Authenticator 等应用进行 TOTP 二次验证
- 用户可在个人设置中启用/禁用 2FA
- 登录时支持 TOTP 验证流程
- 管理后台可全局开关 TOTP 功能
安全增强:
- TOTP 密钥使用 AES-256-GCM 加密存储
- 添加 TOTP_ENCRYPTION_KEY 配置项,必须手动配置才能启用功能
- 防止服务重启导致加密密钥变更使用户无法登录
- 验证失败次数限制,防止暴力破解
配置说明:
- Docker 部署:在 .env 中设置 TOTP_ENCRYPTION_KEY
- 非 Docker 部署:在 config.yaml 中设置 totp.encryption_key
- 生成密钥命令:openssl rand -hex 32
2026-01-26 09:19:53 +08:00