1. 04 Feb, 2026 2 commits
  2. 03 Feb, 2026 18 commits
    • liuxiongfeng's avatar
      fix(gemini): 导出 DummyThoughtSignature 常量并修复跨账号签名验证 · 6baf8108
      liuxiongfeng authored
      - 将 dummyThoughtSignature 改为导出的 DummyThoughtSignature 常量,供跨包使用
      - 修改 gemini_native_signature_cleaner.go 将删除签名改为替换为 dummy 签名
        这样可以跳过 Gemini 3 的签名验证,解决粘性会话切换账号时的验证失败问题
      - 更新相关测试文件
      
      Fixes: 粘性会话切换账号时 thoughtSignature 验证失败导致 400 错误
      6baf8108
    • liuxiongfeng's avatar
      fix(openai): 统一 OAuth instructions 处理逻辑,修复 Codex CLI 400 错误 · 9a48b2e9
      liuxiongfeng authored
      - 修改 applyCodexOAuthTransform 函数签名,增加 isCodexCLI 参数
      - 移除 && !isCodexCLI 条件,对所有 OAuth 请求统一处理
      - 新增 applyInstructions/applyCodexCLIInstructions/applyOpenCodeInstructions 辅助函数
      - 新增 isInstructionsEmpty 函数检查 instructions 字段是否为空
      - 添加 Codex CLI 和非 Codex CLI 场景的测试用例
      
      逻辑说明:
      - Codex CLI + 有 instructions: 保持不变
      - Codex CLI + 无 instructions: 补充 opencode 指令
      - 非 Codex CLI: 使用 opencode 指令覆盖
      9a48b2e9
    • bayma888's avatar
      fix(lint): format gateway_service.go with gofmt · 3fed478e
      bayma888 authored
      3fed478e
    • bayma888's avatar
      fix(test): add IncrementQuotaUsed to all APIKeyRepository test stubs · be7bc658
      bayma888 authored
      - Add missing IncrementQuotaUsed method to stubApiKeyRepo in api_contract_test.go
      - Fix gofmt formatting issues in api_key_service.go, dto/types.go, api_key_handler.go
      be7bc658
    • bayma888's avatar
      fix(test): add IncrementQuotaUsed to all APIKeyRepository test stubs · e59e3a9f
      bayma888 authored
      Add the missing IncrementQuotaUsed method to:
      - fakeAPIKeyRepo (api_key_auth_google_test.go)
      - stubApiKeyRepo (api_key_auth_test.go)
      - apiKeyRepoStub (api_key_service_delete_test.go)
      - authRepoStub (api_key_service_cache_test.go)
      e59e3a9f
    • bayma888's avatar
      feat(api-key): add independent quota and expiration support · 6146be14
      bayma888 authored
      This feature allows API Keys to have their own quota limits and expiration
      times, independent of the user's balance.
      
      Backend:
      - Add quota, quota_used, expires_at fields to api_key schema
      - Implement IsExpired() and IsQuotaExhausted() checks in middleware
      - Add ResetQuota and ClearExpiration API endpoints
      - Integrate quota billing in gateway handlers (OpenAI, Anthropic, Gemini)
      - Include quota/expiration fields in auth cache for performance
      - Expiration check returns 403, quota exhausted returns 429
      
      Frontend:
      - Add quota and expiration inputs to key create/edit dialog
      - Add quick-select buttons for expiration (+7, +30, +90 days)
      - Add reset quota confirmation dialog
      - Add expires_at column to keys list
      - Add i18n translations for new features (en/zh)
      
      Migration:
      - Add 045_add_api_key_quota.sql for new columns
      6146be14
    • bayma888's avatar
      fix(test): add missing stub methods for RedeemCodeRepository and AdminService · d008941c
      bayma888 authored
      Add ListByUserPaginated and SumPositiveBalanceByUser to redeemRepoStub
      Add GetUserBalanceHistory to stubAdminService
      
      Fixes CI test compilation errors
      d008941c
    • song's avatar
      chore: gofmt · 0707f3d9
      song authored
      0707f3d9
    • song's avatar
      chore: gofmt · f1aafbc0
      song authored
      f1aafbc0
    • song's avatar
      fix: update tests for group fallback · 7cb5444d
      song authored
      7cb5444d
    • JIA-ss's avatar
      fix(api): 修复 thinking 块被意外修改导致的 400 错误 · ad90bb46
      JIA-ss authored
      
      
      问题描述:
      使用扩展思考功能时,偶现以下错误:
      "thinking or redacted_thinking blocks in the latest assistant message cannot be modified"
      
      根因分析:
      当代理服务修改请求体中的某些字段时(如 metadata.user_id、model),
      使用 map[string]any 解析整个 JSON 后重新序列化,导致:
      1. 字段顺序改变(Go map 序列化按字母排序)
      2. 数字格式变化(如 1.0 → 1)
      3. Unicode 转义变化
      
      Claude API 对 thinking 块进行字节级验证,任何变化都会触发错误。
      
      修复内容:
      1. identity_service.go - RewriteUserID/RewriteUserIDWithMasking
         使用 json.RawMessage 保留其他字段的原始字节
      
      2. gateway_service.go - replaceModelInBody
         使用 json.RawMessage 保留其他字段的原始字节
      
      3. gateway_service.go - normalizeClaudeOAuthRequestBody
         保留 messages 的原始字节,跳过包含 thinking 块的消息修改
      
      4. gateway_service.go - isThinkingBlockSignatureError
         添加 "cannot be modified" 错误检测,触发自动重试
      
      5. antigravity_gateway_service.go - isSignatureRelatedError
         添加 "cannot be modified" 错误检测
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      ad90bb46
    • ducky's avatar
      feat(usage): add reasoning effort column · 53ee6383
      ducky authored
      53ee6383
    • liuxiongfeng's avatar
      feat(ops): 运维界面展示 Antigravity 账号 scope 级别限流统计 · 6e8eff9b
      liuxiongfeng authored
      在运维监控的并发/排队卡片中,为 Antigravity 平台账号显示各 scope
      (claude/gemini_text/gemini_image) 的限流数量统计,便于管理员了解
      哪些 scope 正在被限流。
      
      Cherry-picked from slovx2/sub2api: 08d6dc52
      6e8eff9b
    • liuxiongfeng's avatar
      feat(antigravity): 默认开启按配额域限流,避免整个账号被锁定 · 56949a58
      liuxiongfeng authored
      将 GATEWAY_ANTIGRAVITY_429_SCOPE_LIMIT 的默认值从关闭改为开启。
      当 Gemini 模型触发 429 限流时,只会限制对应的配额域(gemini_text),
      而 Claude 和 gemini_image 仍可继续使用,提高账号利用率。
      56949a58
    • liuxiongfeng's avatar
      feat(antigravity): map all gemini-2.5 to gemini-3 series · 7d256879
      liuxiongfeng authored
      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
      7d256879
    • liuxiongfeng's avatar
      test: update gemini-2.5-pro mapping test case · f9512fda
      liuxiongfeng authored
      Update test expectation to reflect new mapping:
      gemini-2.5-pro -> gemini-3-pro-high
      f9512fda
    • liuxiongfeng's avatar
      feat(antigravity): map gemini-2.5-pro to gemini-3-pro-high · beb63cb1
      liuxiongfeng authored
      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
      beb63cb1
    • shuike's avatar
      feat: 增加邀请码注册功能 · 6c86501d
      shuike authored
      6c86501d
  3. 02 Feb, 2026 12 commits
  4. 30 Jan, 2026 5 commits
  5. 29 Jan, 2026 3 commits