1. 24 Feb, 2026 9 commits
    • erio's avatar
      5bd7408b
    • erio's avatar
      fix: 统一gemini-3默认映射为非强制3.1 · c671e8dd
      erio authored
      c671e8dd
    • 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
      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
      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: 修复 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
  2. 23 Feb, 2026 3 commits
  3. 22 Feb, 2026 7 commits
  4. 21 Feb, 2026 3 commits
  5. 20 Feb, 2026 2 commits
  6. 19 Feb, 2026 10 commits
  7. 18 Feb, 2026 1 commit
  8. 17 Feb, 2026 1 commit
  9. 16 Feb, 2026 2 commits
  10. 14 Feb, 2026 2 commits
    • shaw's avatar
      feat: 区分 Anthropic 5m/1h 缓存创建 token 的差异化计费 · a817cafe
      shaw authored
      Anthropic API 的 cache_creation 对象区分了 ephemeral_5m 和 ephemeral_1h
      两种缓存创建 token,1h 单价远高于 5m(如 claude-3-5-haiku: 5m=$1/MTok,
      1h=$6/MTok)。此前系统统一按 5m 单价计费,导致计费偏低。
      
      后端:
      - pricing_service: 加载 LiteLLM 的 cache_creation_input_token_cost_above_1hr
      - billing_service: GetModelPricing 启用分类计费(安全守卫 1h>5m),
        CalculateCost 按 5m/1h 分别计费,无明细时回退到 5m 单价
      - gateway_service: parseSSEUsage/handleNonStreamingResponse 用 gjson
        提取嵌套 cache_creation 对象的 ephemeral_5m/1h_input_tokens
      - antigravity_gateway_service: extractSSEUsage/extractClaudeUsage 同步提取
      - usage_log: 修复 GORM column tag 确保写入正确的数据库列
      - 新增迁移 054: 删除 GORM 自动生成的重复列
      
      前端:
      - 使用记录 tooltip 展示 5m/1h 缓存创建明细(带彩色 badge 区分)
      - 表格单元格缓存写入数值旁显示 1h 标识
      a817cafe
    • yangjianbo's avatar