1. 24 Feb, 2026 19 commits
    • erio's avatar
      ca3e9336
    • erio's avatar
      fix: add gemini-3.1-pro-preview to default Antigravity model mapping · f92ab481
      erio authored
      Add missing gemini-3.1-pro-preview -> gemini-3.1-pro-high mapping to
      DefaultAntigravityModelMapping for consistency with migration 059.
      f92ab481
    • erio's avatar
      feat: add migrations for sonnet-4-6 and gemini-3.1-pro model mappings · 29c406dd
      erio authored
      Add migration 058 to update existing Antigravity accounts with
      claude-sonnet-4-6 in model_mapping. Add migration 059 to add
      gemini-3.1-pro-high/low/preview mappings.
      29c406dd
    • erio's avatar
      chore: update default Antigravity UserAgent version to 1.18.4 · 483c8f24
      erio authored
      Update the default ANTIGRAVITY_USER_AGENT_VERSION from 1.84.2 to
      1.18.4 to match the current Antigravity-Manager desktop client.
      483c8f24
    • erio's avatar
      feat: add claude-sonnet-4-6 and gemini-3.1-pro model support · 645f2831
      erio authored
      Add claude-sonnet-4-6 to identity injection modelInfoMap and
      Antigravity model selector. Add gemini-3.1-pro-high/low to
      Antigravity model list and Sonnet 4.6 preset mapping.
      645f2831
    • erio's avatar
      chore: add sonnet-4-6 mapping, config defaults, and CI improvements · da6fd450
      erio authored
      - Add claude-sonnet-4-6 to default Antigravity model mapping
      - Add antigravity_extra_retries default value in config
      - Add cache-dependency-path to CI setup-go for faster builds
      - Simplify vitest config to avoid vite plugin compatibility issues
      da6fd450
    • erio's avatar
      test: add warmup request interception unit tests · 86bc76e3
      erio authored
      Add comprehensive tests for warmup request interception behavior
      covering Antigravity accounts with various credential configurations.
      86bc76e3
    • erio's avatar
      fix(gemini): enable model_mapping filtering for Gemini API Key accounts · 64405817
      erio authored
      Remove the special case that bypassed model-supported checks for Gemini
      API Key accounts, allowing model_mapping to filter requests properly.
      Add tests for multiplatform model filtering behavior.
      64405817
    • erio's avatar
      fix(antigravity): bill with mapped model and use final model key for rate limiting · 4573868c
      erio authored
      - Use mapped model (billingModel) instead of original request model for billing
      - Use resolveFinalAntigravityModelKey for 429 rate limit model key,
        ensuring rate limit records match the actual upstream model
      - Add regression tests for both fixes
      4573868c
    • erio's avatar
      refactor: extract failover error handling into FailoverState · 09166a52
      erio authored
      - Extract duplicated failover logic from gateway_handler.go (3 places)
        and gemini_v1beta_handler.go into shared failover_loop.go
      - Introduce FailoverState with HandleFailoverError and HandleSelectionExhausted
      - Move helper functions (needForceCacheBilling, sleepWithContext) into failover_loop.go
      - Add comprehensive unit tests (32+ test cases)
      - Delete redundant gateway_handler_single_account_retry_test.go
      09166a52
    • erio's avatar
      feat: add mixed-channel precheck API for account-group binding · aaac1aac
      erio authored
      Add a dedicated CheckMixedChannel endpoint that allows the frontend
      to pre-validate mixed channel risk before submitting create/update
      requests. This improves UX by showing warnings earlier in the flow
      instead of only after form submission.
      
      Backend changes:
      - Add CheckMixedChannelRequest struct and CheckMixedChannel handler
      - Register POST /check-mixed-channel route
      - Expose CheckMixedChannelRisk as public method on AdminService
      - Simplify Create/Update 409 responses (remove details/require_confirmation)
      - Add comprehensive handler tests and stub methods
      
      Frontend changes:
      - Add checkMixedChannelRisk API function and TypeScript types
      - Refactor CreateAccountModal to precheck before step transition and submission
      - Refactor EditAccountModal to precheck before update submission
      - Replace pendingPayload pattern with action-based dialog flow
      aaac1aac
    • erio's avatar
      fix: fix intercept_warmup_requests config not being saved · 59898c16
      erio authored
      Extract applyInterceptWarmup utility to unify all credential building
      call sites:
      - Fix upstream account creation missing intercept_warmup_requests write
      - Fix apikey edit mode missing else-branch to clear the setting
      - Add backend unit test for IsInterceptWarmupEnabled
      - Add frontend unit test for credentialsBuilder
      59898c16
    • erio's avatar
      fix: distinguish client disconnection from upstream retry failure · 0dacdf48
      erio authored
      Before this change, when a client disconnected mid-request, the error
      message was "Upstream request failed after retries", which is misleading
      and pollutes error logs. Now we check context.Err() to return a more
      accurate "Client disconnected" message for both Claude and Gemini
      forward paths.
      0dacdf48
    • shaw's avatar
      fix: 修复 CI 集成测试因 context deadline exceeded 未被跳过而失败 · 7be5e173
      shaw authored
      skipIfExternalServiceUnavailable 检查了 "timeout" 但 Go 的
      context.DeadlineExceeded 错误信息是 "context deadline exceeded",
      不包含 "timeout" 子串,导致外部服务不可达时测试直接失败而非跳过。
      7be5e173
    • shaw's avatar
      chore: update version · bfe41467
      shaw authored
      bfe41467
    • shaw's avatar
      fix: 修复 antigravity UserAgent 重构遗留的编译错误和测试不匹配 · e435a46d
      shaw authored
      - oauth.go: GetUserAgent() 缺少闭合大括号导致语法错误
      - client_test.go/oauth_test.go: UserAgent 变量已重构为 GetUserAgent(),更新测试引用
      - model_rate_limit_test.go: gemini-3-pro-preview 映射目标已更新为 gemini-3.1-pro-high,同步测试
      e435a46d
    • shaw's avatar
      fix: 幂等测试使用哈希值避免超出 VARCHAR(64) 限制 · 492b852a
      shaw authored
      idempotency_key_hash 和 request_fingerprint 列为 VARCHAR(64),
      而 uniqueTestValue 生成的字符串含完整测试名可能超过 64 字符。
      新增 hashedTestValue 辅助函数对测试值做 SHA-256 哈希,
      与生产逻辑一致且严格符合列宽限制。
      492b852a
    • shaw's avatar
      fix: 移除重复的 ptrTime 函数声明修复编译错误 · 8a137405
      shaw authored
      idempotency_repo_integration_test.go 中的 ptrTime 与
      scheduler_cache.go 中的声明冲突,导致 repository 包测试构建失败。
      8a137405
    • shaw's avatar
      fix: 修复日志重复输出及清理冗余迁移逻辑 · 980fc960
      shaw authored
      - logger: sinkCore 包装 tee core 时绕过了子 core 的 Check 级别过滤,
        导致每条日志同时写入 stdout 和 stderr,表现为启动日志重复显示。
        修复为正确委托 Check 给内部 tee core,sinkCore.Write 仅负责 sink 转发。
      - migration 054: 移除冗余的遗留列回填逻辑,migration 009 已完成数据迁移,
        直接删除遗留列即可。
      980fc960
  2. 23 Feb, 2026 6 commits
  3. 22 Feb, 2026 8 commits
  4. 21 Feb, 2026 5 commits
  5. 20 Feb, 2026 2 commits