1. 24 Feb, 2026 5 commits
    • 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 5 commits
  11. 13 Feb, 2026 1 commit
    • shaw's avatar
      fix: Anthropic 429 限流使用精确的窗口重置时间而非聚合最大值 · e6814314
      shaw authored
      当账号仅触发 5h 窗口限流时,旧逻辑从聚合头
      anthropic-ratelimit-unified-reset 读取重置时间,该值为所有窗口的
      最大值(即 7d 重置时间),导致账号被标记为不可调度约 6 天。
      
      新增 calculateAnthropic429ResetTime 函数,解析 Anthropic 的
      per-window 头(5h-utilization/reset、7d-utilization/reset、
      surpassed-threshold),判断实际触发的窗口并使用对应的重置时间:
      - 仅 5h 超标 → 使用 5h-reset(约 5 小时)
      - 仅 7d 超标 → 使用 7d-reset
      - 两者均超标 → 使用 7d-reset(较长冷却)
      - per-window 头不存在 → 回退到聚合头(向后兼容)
      e6814314