huangzhenpc
|
06e360b447
|
修复: 移除未使用的releaseInfo变量解决TypeScript编译错误
CI / test (push) Has been cancelled
CI / golangci-lint (push) Has been cancelled
Security Scan / backend-security (push) Has been cancelled
Security Scan / frontend-security (push) Has been cancelled
|
2026-02-03 21:28:28 +08:00 |
|
huangzhenpc
|
da1938b19f
|
同步上游v0.1.66并重新应用自定义配置
CI / test (push) Has been cancelled
CI / golangci-lint (push) Has been cancelled
Security Scan / backend-security (push) Has been cancelled
Security Scan / frontend-security (push) Has been cancelled
上游更新内容:
- 邀请码注册功能
- 公告系统(Header铃铛通知)
- Gemini 长上下文双倍计费
- Antigravity scope 级别限流
- Redis TLS 支持
- 大量 Claude OAuth 兼容性修复
自定义配置:
- 品牌化:Sub2API → StarFireAPI
- 移除所有 GitHub 链接,改为官网 anthropic.edu.pl
- 移除版本更新日志的 GitHub 跳转
- docker-compose.yml: starfireapi镜像、端口6580、外部Redis
- .env.example: 外部Redis配置
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-02-03 20:35:56 +08:00 |
|
Wesley Liddick
|
bb3df5785a
|
Merge pull request #322 from xlx0852/main
fix: 混合渠道警告确认框和过滤 prompt_cache_retention 参数
|
2026-02-03 15:13:10 +08:00 |
|
Wesley Liddick
|
6e54eda41f
|
Merge pull request #464 from touwaeriol/pr/antigravity-scope-ratelimit
feat(antigravity): 支持按配额域(scope)级别限流
|
2026-02-03 15:02:15 +08:00 |
|
Wesley Liddick
|
df4c0adf0b
|
Merge pull request #463 from DuckyProject/feat/usage-records-codex-reasoning-effort
feat(usage): add reasoning effort column
|
2026-02-03 14:57:45 +08:00 |
|
Wesley Liddick
|
7cbe4afdb8
|
Merge pull request #462 from touwaeriol/pr/antigravity-gemini-mapping
feat(antigravity): map all gemini-2.5 to gemini-3 series
|
2026-02-03 14:55:45 +08:00 |
|
Wesley Liddick
|
16f150caae
|
Merge pull request #459 from IanShaw027/fix/gemini-error
fix(gemini): 为 Gemini 工具调用添加 thoughtSignature 避免 INVALID_ARGUMENT 错误
|
2026-02-03 14:48:50 +08:00 |
|
Wesley Liddick
|
7229b41fc7
|
Merge pull request #420 from shuike/feat-invitation-code
feat: 增加邀请码注册功能
|
2026-02-03 14:44:15 +08:00 |
|
ianshaw
|
2cd5037878
|
chore: 触发 CI 重新运行
|
2026-02-03 14:43:59 +08:00 |
|
ducky
|
53ee6383db
|
feat(usage): add reasoning effort column
|
2026-02-03 14:36:29 +08:00 |
|
Wesley Liddick
|
a09478f374
|
Merge pull request #316 from cyhhao/fix/claude-oauth-compat
fix(网关): 完善 Claude OAuth/Claude Code 兼容
|
2026-02-03 14:26:19 +08:00 |
|
liuxiongfeng
|
d3c1d77a35
|
fix(frontend): import missing formatTime function in AccountStatusIndicator
|
2026-02-03 14:25:30 +08:00 |
|
liuxiongfeng
|
8824400c3e
|
feat(accounts): 账号列表显示 Antigravity scope 级别限流状态
- 后端 DTO 新增 scope_rate_limits 字段,从 extra 提取限流信息
- 前端状态列显示 scope 级限流徽章(Claude/Gemini/Image)
- 清除速率限制时同时清除账号级和 scope 级限流(已有实现)
Cherry-picked from slovx2/sub2api: 66f49b67
|
2026-02-03 14:25:30 +08:00 |
|
liuxiongfeng
|
6e8eff9bb9
|
feat(ops): 运维界面展示 Antigravity 账号 scope 级别限流统计
在运维监控的并发/排队卡片中,为 Antigravity 平台账号显示各 scope
(claude/gemini_text/gemini_image) 的限流数量统计,便于管理员了解
哪些 scope 正在被限流。
Cherry-picked from slovx2/sub2api: 08d6dc52
|
2026-02-03 14:25:30 +08:00 |
|
liuxiongfeng
|
f5884d1608
|
fix: jsonb_set 嵌套路径无法创建多层 key 的问题
PostgreSQL jsonb_set 在 create_if_missing=true 时无法一次性创建多层嵌套路径。
例如设置 {antigravity_quota_scopes,gemini_image} 时,如果 antigravity_quota_scopes 不存在,
jsonb_set 不会自动创建外层 key,导致更新静默失败(affected=1 但数据未变)。
修复方案:嵌套两次 jsonb_set,先确保外层 key 存在,再设置内层值。
同时在设置限流时更新 last_used_at,使刚触发 429 的账号调度优先级降低。
Cherry-picked from slovx2/sub2api: 4b57e80e
|
2026-02-03 14:25:30 +08:00 |
|
liuxiongfeng
|
56949a58bc
|
feat(antigravity): 默认开启按配额域限流,避免整个账号被锁定
将 GATEWAY_ANTIGRAVITY_429_SCOPE_LIMIT 的默认值从关闭改为开启。
当 Gemini 模型触发 429 限流时,只会限制对应的配额域(gemini_text),
而 Claude 和 gemini_image 仍可继续使用,提高账号利用率。
|
2026-02-03 14:25:30 +08:00 |
|
liuxiongfeng
|
7d256879c5
|
feat(antigravity): map all gemini-2.5 to gemini-3 series
Antigravity 上游不再支持 gemini-2.5 系列,统一映射到 gemini-3:
- gemini-2.5-flash → gemini-3-flash
- gemini-2.5-flash-lite → gemini-3-flash
- gemini-2.5-flash-thinking → gemini-3-flash
- gemini-2.5-flash-image → gemini-3-pro-image
- gemini-2.5-pro → gemini-3-pro-high
- gemini-2.5-pro-preview → gemini-3-pro-high
- gemini-2.5-pro-exp → gemini-3-pro-high
|
2026-02-03 14:23:47 +08:00 |
|
liuxiongfeng
|
f9512fda58
|
test: update gemini-2.5-pro mapping test case
Update test expectation to reflect new mapping:
gemini-2.5-pro -> gemini-3-pro-high
|
2026-02-03 14:23:47 +08:00 |
|
liuxiongfeng
|
beb63cb152
|
feat(antigravity): map gemini-2.5-pro to gemini-3-pro-high
Add prefix mapping rules for gemini-2.5-pro variants:
- gemini-2.5-pro -> gemini-3-pro-high
- gemini-2.5-pro-preview -> gemini-3-pro-high
- gemini-2.5-pro-exp -> gemini-3-pro-high
|
2026-02-03 14:23:47 +08:00 |
|
shuike
|
0ed4a404e4
|
fix(test): api_contract_test添加 invitation_code_enabled 字段
|
2026-02-03 13:38:44 +08:00 |
|
shuike
|
6c86501d11
|
feat: 增加邀请码注册功能
|
2026-02-03 13:38:44 +08:00 |
|
Call White
|
2fe8932c1d
|
Merge pull request #3 from cyhhao/main
merge to main
|
2026-02-03 11:44:54 +08:00 |
|
shaw
|
0ab68aa9fb
|
fix(setup): 修复 Redis TLS 配置选项位置错误
- 将 TLS Toggle 从第一步(PostgreSQL)移动到第二步(Redis)
- 添加缺失的 Toggle 组件导入
问题描述:
TLS 配置选项错误地出现在数据库配置步骤中,而不是 Redis 配置步骤
|
2026-02-03 11:24:04 +08:00 |
|
Wesley Liddick
|
2f92b06869
|
Merge pull request #457 from touwaeriol/pr/group-copy-accounts
feat(groups): 添加从其他分组复制账号功能
|
2026-02-03 08:45:13 +08:00 |
|
ianshaw
|
03e94f9f53
|
fix(gemini): 为 Gemini 工具调用添加 thoughtSignature 避免 INVALID_ARGUMENT 错误
|
2026-02-03 06:01:29 +08:00 |
|
liuxiongfeng
|
ce1d2904c7
|
test: 为测试 stub 添加缺失的 GroupRepository 接口方法
新增 BindAccountsToGroup 和 GetAccountIDsByGroupIDs 方法的 stub 实现,
确保测试文件中的 mock 类型满足 GroupRepository 接口要求。
|
2026-02-02 22:06:37 +08:00 |
|
Wesley Liddick
|
ea41f830fd
|
Merge pull request #456 from touwaeriol/pr/gemini-long-context-billing
feat(billing): 添加 Gemini 200K 长上下文双倍计费功能
|
2026-02-02 21:57:25 +08:00 |
|
liuxiongfeng
|
e1a4a7b8c0
|
feat(groups): 添加从其他分组复制账号功能
- 创建分组时可选择从已有分组复制账号
- 编辑分组时支持同步账号(全量替换操作)
- 仅允许选择相同平台的源分组
- 添加完整的数据校验:去重、自引用检查、平台一致性检查
- 前端支持多选源分组,带提示说明操作行为
|
2026-02-02 21:47:47 +08:00 |
|
liuxiongfeng
|
b381e8ee73
|
refactor(billing): 简化 CalculateCostWithLongContext 逻辑
将 token 直接拆分为范围内和范围外两部分,分别调用 CalculateCost:
- 范围内:正常计费 (rateMultiplier)
- 范围外:双倍计费 (rateMultiplier × extraMultiplier)
代码更直观,便于理解和维护
|
2026-02-02 21:47:02 +08:00 |
|
liuxiongfeng
|
45e1429ae8
|
feat(billing): 添加 Gemini 200K 长上下文双倍计费功能
- 新增 CalculateCostWithLongContext 方法支持阈值双倍计费
- 新增 RecordUsageWithLongContext 方法专用于 Gemini 计费
- Gemini 超过 200K token 的部分按 2 倍费率计算
- 其他平台(Claude/OpenAI)完全不受影响
|
2026-02-02 21:47:02 +08:00 |
|
shaw
|
7b1d63a786
|
fix(types): 添加缺失的 ignore_invalid_api_key_errors 类型定义
OpsAdvancedSettings 接口缺少 ignore_invalid_api_key_errors 字段,
导致 TypeScript 编译报错。
|
2026-02-02 21:01:32 +08:00 |
|
Wesley Liddick
|
e204b4d81f
|
Merge pull request #452 from s-Joshua-s/feat/enhance-usage-endpoint
feat(gateway): 增强 /v1/usage 端点返回完整用量统计
|
2026-02-02 20:35:00 +08:00 |
|
Wesley Liddick
|
325ed747d8
|
Merge pull request #455 from ZeroClover/feat/ops-ignore-invalid-api-key-errors
feat(ops): 支持过滤无效 API Key 错误,不写入错误日志
|
2026-02-02 20:28:00 +08:00 |
|
Wesley Liddick
|
cbf3dba28d
|
Merge pull request #454 from ZeroClover/feat-exclude-user-inactive-errors
feat(ops): 将 USER_INACTIVE 错误排除在 SLA 统计之外
|
2026-02-02 20:19:48 +08:00 |
|
Wesley Liddick
|
4329f72abf
|
Merge pull request #450 from bayma888/feature/show-admin-adjustment-notes
feat: 向用户显示管理员调整余额的备注
|
2026-02-02 20:19:23 +08:00 |
|
Zero Clover
|
ad1cdba338
|
feat(ops): 支持过滤无效 API Key 错误,不写入错误日志
新增 IgnoreInvalidApiKeyErrors 开关,启用后 INVALID_API_KEY 和
API_KEY_REQUIRED 错误将被完全跳过,不写入 Ops 错误日志。
这些错误由用户错误配置导致,与服务质量无关。
|
2026-02-02 20:16:17 +08:00 |
|
Wesley Liddick
|
016c3915d7
|
Merge pull request #449 from bayma888/feature/user-search-support-notes
feat: 支持在用户列表搜索中使用备注字段和模糊查询、支持用户名备注等搜索
|
2026-02-02 20:16:03 +08:00 |
|
shaw
|
79fa18132b
|
fix(gateway): 修复 OAuth token 刷新后调度器缓存不一致问题
Token 刷新成功后,调度器缓存中的 Account 对象仍包含旧的 credentials,
导致在 Outbox 异步更新之前(最多 1 秒窗口)请求使用过期 token,
返回 403 错误(OAuth token has been revoked)。
修复方案:在 token 刷新成功后同步更新调度器缓存,确保调度获取的
Account 对象立即包含最新的 access_token 和 _token_version。
此修复覆盖所有 OAuth 平台:OpenAI、Claude、Gemini、Antigravity。
|
2026-02-02 20:05:37 +08:00 |
|
Zero Clover
|
673caf41a0
|
feat(ops): 将 USER_INACTIVE 错误排除在 SLA 统计之外
将账户停用 (USER_INACTIVE) 导致的请求失败视为业务限制类错误,不计入 SLA 和错误率统计。
账户停用是预期内的业务结果,不应被视为系统错误或服务质量问题。此改动使错误分类更加准确,避免将预期的业务限制误报为系统故障。
修改内容:
- 在 classifyOpsIsBusinessLimited 函数中添加 USER_INACTIVE 错误码
- 该类错误不再触发错误率告警
Fixes Wei-Shaw/sub2api#453
|
2026-02-02 18:50:54 +08:00 |
|
JIA-ss
|
c441638fc0
|
feat(gateway): 增强 /v1/usage 端点返回完整用量统计
为 CC Switch 集成增强 /v1/usage 网关端点,在保持原有 4 字段
(isValid, planName, remaining, unit) 向后兼容的基础上,新增:
- usage 对象:今日/累计的请求数、token 用量、费用,以及 RPM/TPM
- subscription 对象(订阅模式):日/周/月用量和限额、过期时间
- balance 字段(余额模式):当前钱包余额
用量数据获取采用 best-effort 策略,失败不影响基础响应。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-02-02 18:30:06 +08:00 |
|
小北
|
ae18397ca6
|
feat: 向用户显示管理员调整余额的备注
- 为RedeemCode DTO添加notes字段(仅用于admin_balance/admin_concurrency类型)
- 更新mapper使其有条件地包含备注信息
- 在用户兑换历史UI中显示备注
- 备注以斜体显示,悬停时显示完整内容
用户现在可以看到管理员调整其余额的原因说明。
Changes:
- backend/internal/handler/dto/types.go: RedeemCode添加notes字段
- backend/internal/handler/dto/mappers.go: 条件性填充notes
- frontend/src/api/redeem.ts: TypeScript接口添加notes
- frontend/src/views/user/RedeemView.vue: UI显示备注信息
|
2026-02-02 17:44:50 +08:00 |
|
小北
|
426ce616c0
|
feat: 支持在用户搜索中使用备注字段
- 在用户仓库的搜索过滤器中添加备注字段
- 管理员现在可以通过备注/标记搜索用户
- 使用不区分大小写的搜索(ContainsFold)
Changes:
- backend/internal/repository/user_repo.go: 添加 NotesContainsFold 到搜索条件
|
2026-02-02 17:41:27 +08:00 |
|
shaw
|
5cda979209
|
feat(deploy): 优化 Docker 部署体验,新增一键部署脚本
## 新增功能
- 新增 docker-compose.local.yml:使用本地目录存储数据,便于迁移和备份
- 新增 docker-deploy.sh:一键部署脚本,自动生成安全密钥(JWT_SECRET、TOTP_ENCRYPTION_KEY、POSTGRES_PASSWORD)
- 新增 deploy/.gitignore:忽略运行时数据目录
## 优化改进
- docker-compose.local.yml 包含 PGDATA 环境变量修复,解决 PostgreSQL 18 Alpine 数据丢失问题
- 脚本自动设置 .env 文件权限为 600,增强安全性
- 脚本显示生成的凭证,方便用户记录
## 文档更新
- 更新 README.md(英文版):新增"快速开始"章节,添加部署版本对比表
- 更新 README_CN.md(中文版):同步英文版更新
- 更新 deploy/README.md:详细说明两种部署方式和迁移方法
## 使用方式
一键部署:
```bash
curl -sSL https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/deploy/docker-deploy.sh | bash
docker-compose -f docker-compose.local.yml up -d
```
轻松迁移:
```bash
tar czf sub2api-complete.tar.gz deploy/
# 传输到新服务器后直接解压启动即可
```
|
2026-02-02 16:17:07 +08:00 |
|
Wesley Liddick
|
cc7e67b01a
|
Merge pull request #445 from touwaeriol/fix/gemini-cache-token-billing
fix(billing): 修复 Gemini 接口缓存 token 统计
|
2026-02-02 15:22:46 +08:00 |
|
Wesley Liddick
|
6999a9c011
|
Merge pull request #444 from touwaeriol/fix/gemini-apikey-passthrough
feat(gateway): Gemini API Key 账户跳过模型映射检查,直接透传
|
2026-02-02 15:17:05 +08:00 |
|
shaw
|
bbdc8663d3
|
feat: 重新设计公告系统为Header铃铛通知
- 新增 AnnouncementBell 组件,支持 Modal 弹窗和 Markdown 渲染
- 移除 Dashboard 横幅和独立公告页面
- 铃铛位置在 Header 文档按钮左侧,显示未读红点
- 支持点击查看详情、标记已读、全部已读等操作
- 完善国际化,移除所有硬编码中文
- 修复 AnnouncementTargetingEditor watch 循环问题
|
2026-02-02 15:15:39 +08:00 |
|
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 |
|