1. 25 Mar, 2026 1 commit
    • QTom's avatar
      feat(antigravity): 从 LoadCodeAssist 复用 TierInfo 提取 plan_type · f6fd7c83
      QTom authored
      复用已有 GetTier() 返回的 tier ID(free-tier / g1-pro-tier /
      g1-ultra-tier),通过 TierIDToPlanType 映射为 Free / Pro / Ultra,
      在 loadProjectIDWithRetry 中顺带提取并写入 credentials.plan_type;
      前端增加 Abnormal 异常套餐红色标记。
      
      Made-with: Cursor
      f6fd7c83
  2. 19 Mar, 2026 1 commit
    • erio's avatar
      fix(antigravity): fast-fail on proxy unavailable, temp-unschedule account · 528ff5d2
      erio authored
      ## Problem
      
      When a proxy is unreachable, token refresh retries up to 4 times with
      30s timeout each, causing requests to hang for ~2 minutes before
      failing with a generic 502 error. The failed account is not marked,
      so subsequent requests keep hitting it.
      
      ## Changes
      
      ### Proxy connection fast-fail
      - Set TCP dial timeout to 5s and TLS handshake timeout to 5s on
        antigravity client, so proxy connectivity issues fail within 5s
        instead of 30s
      - Reduce overall HTTP client timeout from 30s to 10s
      - Export `IsConnectionError` for service-layer use
      - Detect proxy connection errors in `RefreshToken` and return
        immediately with "proxy unavailable" error (no retries)
      
      ### Token refresh temp-unschedulable
      - Add 8s context timeout for token refresh on request path
      - Mark account as temp-unschedulable for 10min when refresh fails
        (both background `TokenRefreshService` and request-path
        `GetAccessToken`)
      - Sync temp-unschedulable state to Redis cache for immediate
        scheduler effect
      - Inject `TempUnschedCache` into `AntigravityTokenProvider`
      
      ### Account failover
      - Return `UpstreamFailoverError` on `GetAccessToken` failure in
        `Forward`/`ForwardGemini` to trigger handler-level account switch
        instead of returning 502 directly
      
      ### Proxy probe alignment
      - Apply same 5s dial/TLS timeout to shared `httpclient` pool
      - Reduce proxy probe timeout from 30s to 10s
      528ff5d2
  3. 02 Mar, 2026 1 commit
    • QTom's avatar
      feat(proxy): 集中代理 URL 验证并实现全局 fail-fast · fdcbf7aa
      QTom authored
      提取 proxyurl.Parse() 公共包,将分散在 6 处的代理 URL 验证逻辑
      统一收敛,确保无效代理配置在创建时立即失败,永不静默回退直连。
      
      主要变更:
      - 新增 proxyurl 包:统一 TrimSpace → url.Parse → Host 校验 → Scheme 白名单
      - socks5:// 自动升级为 socks5h://,防止 DNS 泄漏(大小写不敏感)
      - antigravity: http.ProxyURL → proxyutil.ConfigureTransportProxy 支持 SOCKS5
      - openai_oauth: 删除 newOpenAIOAuthHTTPClient,收编至 httpclient.GetClient
      - 移除未使用的 ProxyStrict 字段(fail-fast 已是全局默认行为)
      - 补充 15 个 proxyurl 测试 + pricing/usage fail-fast 测试
      fdcbf7aa
  4. 11 Feb, 2026 1 commit
    • Edric Li's avatar
      feat(antigravity): 添加 onboardUser 支持并修复 project_id 补齐逻辑 · a4a46a86
      Edric Li authored
      - 新增 OnboardUser API 客户端方法,支持账号 onboarding 获取 project_id
      - loadProjectIDWithRetry 增加 onboard 回退:LoadCodeAssist 未返回 project_id 时自动触发 onboarding
      - GetAccessToken 中 project_id 补齐改用轻量 FillProjectID 替代全量 RefreshAccountToken
      - 补齐逻辑增加 5 分钟冷却机制,防止频繁重试
      - OnboardUser 轮询等待改为 context 感知,支持提前取消
      - 提取 mergeCredentials 辅助方法消除重复代码
      - 新增 extractProjectIDFromOnboardResponse 和 resolveDefaultTierID 单元测试
      a4a46a86
  5. 10 Feb, 2026 1 commit
    • Tian's avatar
      feat(antigravity): 支持 Refresh Token 批量导入创建 OAuth 账号 · c8f87a9c
      Tian authored
      后端新增 ValidateRefreshToken service 方法和 POST /oauth/refresh-token 端点,
      前端新增 API/Composable/UI 集成,OAuthAuthorizationFlow i18n 动态化,
      支持在 Antigravity 创建账号时批量粘贴 Refresh Token 自动验证并创建账号。
      c8f87a9c
  6. 02 Feb, 2026 1 commit
  7. 24 Jan, 2026 2 commits
    • Ubuntu's avatar
      fix(oauth): 为初始 OAuth 授权添加 LoadCodeAssist 重试机制 · 4ded9e7d
      Ubuntu authored
      
      
      问题:
      - 初始授权时 LoadCodeAssist 没有重试机制,失败后直接跳过
      - 导致账号创建时就可能缺失 project_id
      - 之后每次刷新都因为 missing_project_id 报错
      
      修复:
      - 统一使用 loadProjectIDWithRetry 方法(最多4次尝试)
      - 初始授权和token刷新使用相同的重试策略
      - 保留原注释说明部分账户可能没有 project_id
      Co-Authored-By: default avatarClaude Sonnet 4.5 <noreply@anthropic.com>
      4ded9e7d
    • Ubuntu's avatar
      fix(oauth): 修复 OAuth 令牌刷新时 missing_project_id 误报问题 · ffaa6c4a
      Ubuntu authored
      
      
      问题描述:
      在网络波动环境下,LoadCodeAssist 临时失败会被错误地标记为
      "missing_project_id" 不可重试错误,导致账户被禁用。但实际上
      账户配置正确,手动刷新后即可恢复。
      
      解决方案:
      1. 为 LoadCodeAssist 增加重试机制(最多4次,指数退避)
      2. 区分真正的配置缺失和临时网络故障:
         - 如果之前有 project_id,本次获取失败只保留旧值,不报错
         - 只有从未获取过 project_id 且本次也失败时,才标记为缺失
      3. 优化错误判断逻辑,避免误报
      
      改进效果:
      - 提高在复杂网络环境(如家宽代理)下的鲁棒性
      - 减少因临时网络波动导致的服务中断
      - 保持真正配置错误的检测能力
      Co-Authored-By: default avatarClaude Sonnet 4.5 <noreply@anthropic.com>
      ffaa6c4a
  8. 16 Jan, 2026 2 commits
    • song's avatar
      fix: Antigravity 刷新 token 时检测 project_id 缺失 · 95fe1e81
      song authored
      - 刷新 token 后调用 LoadCodeAssist 获取 project_id
      - 如果获取失败,保留原有 project_id,标记账户为 error
      - token 仍会正常更新,不影响凭证刷新
      - 错误信息:账户缺少project id,可能无法使用Antigravity
      95fe1e81
    • song's avatar
      fix: Antigravity project_id 获取优化 · a61042bc
      song authored
      - API URL 改为只使用 prod 端点
      - 刷新 token 时每次调用 LoadCodeAssist 更新 project_id
      - 移除随机生成 project_id 的兜底逻辑
      a61042bc
  9. 31 Dec, 2025 1 commit
  10. 30 Dec, 2025 3 commits
  11. 29 Dec, 2025 1 commit
    • song's avatar
      fix: 修复 golangci-lint 检查错误 · 21a04332
      song authored
      - SA1029: 创建 ctxkey 包定义类型安全的 context key
      - ST1005: 错误字符串首字母改小写
      - errcheck: 显式忽略 bytes.Buffer.Write 返回值
      - 修复单元测试中 GatewayService 缺少 cfg 字段的问题
      21a04332
  12. 28 Dec, 2025 1 commit