liuxiongfeng
428ee065d3
chore: bump version to 0.1.81.5
2026-02-12 20:09:57 +08:00
liuxiongfeng
320ca28f90
fix: antigravity 429 fallback uses final model key
2026-02-12 19:30:44 +08:00
liuxiongfeng
5e518f5fbd
feat: allow antigravity warmup intercept toggle
...
- Show warmup-intercept toggle for antigravity accounts in admin UI\n- Add unit tests verifying antigravity accounts are intercepted on /v1/messages
2026-02-12 18:56:55 +08:00
liuxiongfeng
24dcba1d72
chore: gofmt antigravity gateway tests
2026-02-12 18:56:31 +08:00
liuxiongfeng
1abc688cad
chore: bump version to 0.1.81.4
2026-02-12 02:33:33 +08:00
liuxiongfeng
34936189d8
fix(antigravity): 固定按映射模型计费并补充回归测试
...
当账号配置了 model_mapping 时,确保计费使用映射后的实际模型,
而非用户请求的原始模型名,避免计费不准确。
2026-02-12 02:33:20 +08:00
liuxiongfeng
3a9f1c5796
chore: bump version to 0.1.81.3
2026-02-11 23:37:37 +08:00
liuxiongfeng
bb1e205516
Merge branch 'develop' into release/custom-0.1.81
2026-02-11 23:37:21 +08:00
liuxiongfeng
9af4a55176
fix: gofmt 格式修复 gateway_cache_integration_test.go
2026-02-11 23:35:26 +08:00
liuxiongfeng
51e903c34e
Revert "fix: 并发/排队面板支持 platform/group 过滤"
...
This reverts commit 86e600aa52 .
2026-02-11 23:26:20 +08:00
liuxiongfeng
7f03319646
Revert "fix: 并发/排队面板支持 platform/group 过滤"
...
This reverts commit 86e600aa52 .
2026-02-11 23:06:59 +08:00
liuxiongfeng
0c33d18a4d
chore: bump version to 0.1.81.2
2026-02-11 22:31:27 +08:00
liuxiongfeng
a747c63b8e
feat: add gemini model mapping whitelist for apikey and bulk edit
2026-02-11 22:31:27 +08:00
liuxiongfeng
a03c361b04
feat: add gemini model mapping whitelist for apikey and bulk edit
2026-02-11 22:31:07 +08:00
liuxiongfeng
850e267763
chore: bump version to 0.1.81.1
2026-02-11 20:49:31 +08:00
liuxiongfeng
c75ae56f10
Merge branch 'develop' into release/custom-0.1.81
2026-02-11 20:49:18 +08:00
Wesley Liddick
bc1abb6a23
Merge pull request #557 from james-6-23/main
...
feat(admin): 为账户和兑换码新增邮箱搜索及限流过滤功能
2026-02-11 20:00:43 +08:00
Wesley Liddick
d307d48def
Merge pull request #551 from SilentFlower/opus4.6-think
...
[UPDATE] 增强 Claude Thinking 模式支持与 Opus 4.6 动态预算适配
2026-02-11 20:00:22 +08:00
Wesley Liddick
1bb40084fc
Merge pull request #550 from Tian-orz/feat/antigravity-refresh-token-import
...
feat(antigravity): 支持 Refresh Token 批量导入创建 OAuth 账号
2026-02-11 19:59:52 +08:00
Wesley Liddick
8f0efa16ca
Merge pull request #555 from sususu98/fix/gemini-thoughts-token-billing
...
fix: include Gemini thoughtsTokenCount in output token billing
2026-02-11 19:53:43 +08:00
kyx236
04a1a7c2b5
feat(admin): Add email search and rate limit filtering for accounts and redeem codes
...
- Add used_by_email column to redeem code export CSV for better user identification
- Implement rate_limited status filter in account listing with RateLimitResetAt check
- Extend redeem code search to include user email in addition to code matching
- Add API key search capability to user listing filters
- Display user email in redeem code table used_by column for improved visibility
- Update search placeholders in UI to reflect expanded search capabilities (email, username, notes, API key)
- Improve Chinese and English localization strings for search hints
2026-02-11 16:39:42 +08:00
liuxiongfeng
d11b295729
chore: bump version to 0.1.80.1
2026-02-11 16:21:22 +08:00
liuxiongfeng
91d0059f8d
Merge branch 'develop' into release/custom-0.1.80
...
# Conflicts:
# backend/internal/pkg/antigravity/client.go
# backend/internal/service/antigravity_oauth_service.go
# backend/internal/service/antigravity_oauth_service_test.go
# backend/internal/service/antigravity_token_provider.go
2026-02-11 16:20:56 +08:00
sususu98
d21d70a5cf
fix: include Gemini thoughtsTokenCount in output token billing
...
Gemini 2.5 Pro/Flash thinking models return thoughtsTokenCount separately
from candidatesTokenCount in usageMetadata, but this field was not parsed
or included in billing calculations, causing thinking tokens to be
unbilled.
- Add ThoughtsTokenCount field to GeminiUsageMetadata struct
- Include thoughtsTokenCount in OutputTokens across all 3 Gemini usage
parsing paths (non-streaming, streaming, compat layer)
- Add tests covering thinking token scenarios
Closes #554
2026-02-11 15:41:54 +08:00
liuxiongfeng
44693d0dfb
chore: bump version to 0.1.79.7
2026-02-11 14:39:29 +08:00
liuxiongfeng
c722212e12
fix: distinguish client disconnection from upstream retry failure
...
When client disconnects during upstream request, the error was
incorrectly reported as "Upstream request failed after retries".
Now checks context cancellation first and returns
"Client disconnected before upstream response" instead.
2026-02-11 14:39:14 +08:00
SilentFlower
e73b778d2b
Merge branch 'main' into opus4.6-think
2026-02-11 13:56:30 +08:00
Edric Li
a4a46a8618
✨ feat(antigravity): 添加 onboardUser 支持并修复 project_id 补齐逻辑
...
- 新增 OnboardUser API 客户端方法,支持账号 onboarding 获取 project_id
- loadProjectIDWithRetry 增加 onboard 回退:LoadCodeAssist 未返回 project_id 时自动触发 onboarding
- GetAccessToken 中 project_id 补齐改用轻量 FillProjectID 替代全量 RefreshAccountToken
- 补齐逻辑增加 5 分钟冷却机制,防止频繁重试
- OnboardUser 轮询等待改为 context 感知,支持提前取消
- 提取 mergeCredentials 辅助方法消除重复代码
- 新增 extractProjectIDFromOnboardResponse 和 resolveDefaultTierID 单元测试
2026-02-11 13:41:55 +08:00
liuxiongfeng
92745f7534
chore: bump version to 0.1.79.6
2026-02-11 13:08:49 +08:00
liuxiongfeng
f2917aeaf8
fix: use safe type assertion for errcheck lint compliance
2026-02-11 13:06:41 +08:00
liuxiongfeng
a1e2ffd586
refactor: optimize project_id fill to lightweight approach
...
- Replace heavy RefreshAccountToken with lightweight tryFillProjectID
(loadCodeAssist → onboardUser → fallback), consistent with
Antigravity-Manager's behavior
- Add sync.Map cooldown/dedup (60s) to prevent repeated fill attempts
- Add fallback project_id "bamboo-precept-lgxtn" matching AM
- Extract mergeCredentials helper to eliminate duplication
- Use slog structured logging instead of log.Printf
- Fix time.Sleep in OnboardUser to context-aware select
- Fix strings.NewReader(string(bodyBytes)) → bytes.NewReader(bodyBytes)
- Remove redundant tc := tc in test (Go 1.22+)
- Add nil guard in persistProjectID for test safety
2026-02-11 13:00:31 +08:00
liuxiongfeng
78a9705fad
fix: resolve ineffassign lint error in onboard project_id logic
2026-02-11 12:45:52 +08:00
liuxiongfeng
4661c2f90f
chore: bump version to 0.1.79.5
2026-02-11 12:35:26 +08:00
liuxiongfeng
130112a84a
fix: 补齐 Antigravity OAuth 账号 project_id 获取逻辑
...
部分账号 loadCodeAssist 不会立即返回 cloudaicompanionProject,
导致转发时 project 字段为空,上游返回 400 "Invalid project resource name projects/"。
- 新增 OnboardUser API:当 loadCodeAssist 未返回 project_id 时,
通过 onboardUser 完成账号初始化并获取 project_id
- token 刷新时增加 onboard 兜底逻辑
- GetAccessToken 按需补齐:转发时发现 project_id 为空立即触发刷新
- 新增 resolveDefaultTierID 单元测试
2026-02-11 12:25:04 +08:00
SilentFlower
6ae82e04d5
[UPDATE] 优化思考预算逻辑与代码结构
...
🧠 refactor(antigravity): 完善 thinking 预算分配策略并重构工具构建逻辑
2026-02-11 10:39:54 +08:00
SilentFlower
19cca11e00
[UPDATE] 增强 Claude Thinking 模式支持与 Opus 4.6 动态预算适配
...
✨ feat(antigravity): 支持 thinking adaptive 类型并适配 Opus 4.6 动态预算
🧪 test(gateway): 增加 thinking 模式解析与签名块过滤的边界用例测试
2026-02-11 10:31:16 +08:00
liuxiongfeng
b368bb6ea1
chore: bump version to 0.1.79.4
2026-02-11 04:55:17 +08:00
liuxiongfeng
79fba9c8d3
refactor: consolidate failover logic into FailoverState
...
- Merge FailoverRetry/FailoverSwitch into single FailoverContinue action
- Extract HandleSelectionExhausted into FailoverState (was duplicated 3×)
- Move helper functions (needForceCacheBilling, sleepWithContext) into failover_loop.go
- Inline sleepFailoverDelay, replace sleepAntigravitySingleAccountBackoff with constant
- Delete gateway_handler_single_account_retry_test.go (tested removed function)
- Add 6 test cases for HandleSelectionExhausted
2026-02-11 04:54:05 +08:00
liuxiongfeng
37c76a93ab
chore: bump version to 0.1.79.3
2026-02-11 01:56:52 +08:00
liuxiongfeng
86e600aa52
fix: 并发/排队面板支持 platform/group 过滤
...
- 添加 platformFilter/groupIdFilter props 变化监听器,过滤条件变化时
立即重新加载数据(修复选择平台后显示"暂无数据"的问题)
- 全栈为 getUserConcurrencyStats 添加 platform/group_id 过滤支持:
前端 API → Handler 解析 query params → Service 层过滤逻辑
- Service 层通过账号的 group 关联反查用户的 AllowedGroups,
与 GetConcurrencyStats 的过滤模式保持一致
2026-02-11 01:41:34 +08:00
Tian
c8f87a9c92
feat(antigravity): 支持 Refresh Token 批量导入创建 OAuth 账号
...
后端新增 ValidateRefreshToken service 方法和 POST /oauth/refresh-token 端点,
前端新增 API/Composable/UI 集成,OAuthAuthorizationFlow i18n 动态化,
支持在 Antigravity 创建账号时批量粘贴 Refresh Token 自动验证并创建账号。
2026-02-11 01:23:21 +08:00
liuxiongfeng
f176150c93
Merge branch 'release/custom-0.1.79'
...
# Conflicts:
# AGENTS.md
# CLAUDE.md
# backend/cmd/server/VERSION
# backend/internal/handler/gateway_handler.go
# backend/internal/handler/gemini_v1beta_handler.go
# backend/internal/service/antigravity_gateway_service.go
# backend/internal/service/antigravity_rate_limit_test.go
# backend/internal/service/antigravity_single_account_retry_test.go
# backend/internal/service/antigravity_smart_retry_test.go
2026-02-11 00:32:11 +08:00
liuxiongfeng
30d25084f0
chore: bump version to 0.1.79.2
2026-02-11 00:22:19 +08:00
liuxiongfeng
57a778dccf
chore: bump version to 0.1.79.1
2026-02-10 23:48:23 +08:00
liuxiongfeng
f702c66659
fix: resolve gofmt alignment issue in failover_loop_test.go
...
Move inline comments to separate lines to avoid gofmt
consecutive-line comment alignment requirements.
2026-02-10 23:40:37 +08:00
liuxiongfeng
a095468850
fix: correct import path in failover_loop.go and failover_loop_test.go
...
Use github.com/Wei-Shaw/sub2api/internal/service instead of
sub2api/internal/service to match the module path in go.mod.
2026-02-10 23:35:21 +08:00
liuxiongfeng
f9b6a20995
Merge tag 'v0.1.79' into develop
...
增强错误处理与重试机制,新增 MODEL_CAPACITY_EXHAUSTED 同账号固定间隔重试、瞬态错误同账号重试优先于故障转移,并大幅优化错误匹配性能。
- MODEL_CAPACITY_EXHAUSTED (503) 使用固定 1s 间隔重试最多 60 次,不切换账号
- 瞬态错误(Google 400、空流响应)同账号重试 2 次后再触发故障转移
- 空流响应触发 failover 自动换号重试,不再直接返回 502
- Google "Invalid project resource name" 400 错误触发 failover 并临时封禁账号 1 小时
- 错误透传规则新增 skip_monitoring 选项,匹配的错误不记录到运维监控日志
- Antigravity 转发支持 daily/prod 单 URL 切换
- 错误匹配性能优化:延迟/限制 body ToLower,预计算规则关键词和平台集合
- MODEL_CAPACITY_EXHAUSTED 全局去重,避免并发请求重复重试
- 503 重试 body 读取限制从 2MB 降至 8KB
- time.After 替换为 time.NewTimer,防止 context 取消时 timer 泄漏
- 临时封禁冷却时间从 30 分钟缩短至 1 分钟(同账号重试耗尽后)
- 修复错误透传规则 skip_monitoring 未生效的问题
- 修复 CI 检查失败(gofmt、errcheck、staticcheck)
# Conflicts:
# backend/internal/service/error_passthrough_runtime_test.go
2026-02-10 23:25:51 +08:00
liuxiongfeng
f2770da880
refactor: extract failover error handling into shared HandleFailoverError
...
- Extract duplicated failover error handling from gateway_handler.go (Gemini-compat & Claude paths) and gemini_v1beta_handler.go into shared failover_loop.go
- Introduce TempUnscheduler interface for testability (GatewayService implicitly satisfies it)
- Add comprehensive unit tests for HandleFailoverError (32 test cases covering all paths)
- Fix golangci-lint issues: errcheck in test type assertion, staticcheck QF1003 if/else→switch
2026-02-10 23:13:37 +08:00
Edric Li
378e476e48
fix: 修复 CI 检查失败
...
- gofmt: 修复 error_passthrough_service.go 格式问题
- errcheck: 修复 error_passthrough_runtime_test.go 类型断言未检查
- staticcheck: if-else 改为 switch (gateway_service.go)
- test: 修复两个测试用例错误使用 MODEL_CAPACITY_EXHAUSTED 导致走错路径
2026-02-10 22:08:49 +08:00
Edric Li
2a1067c82b
Merge remote-tracking branch 'upstream/main'
2026-02-10 21:52:33 +08:00