"frontend/vscode:/vscode.git/clone" did not exist on "acefa1da1283c57c133a7e9d25ee77b691ea751c"
  1. 08 Mar, 2026 1 commit
  2. 07 Mar, 2026 10 commits
  3. 06 Mar, 2026 19 commits
  4. 05 Mar, 2026 10 commits
    • erio's avatar
      fix: use real Concurrency instead of LoadFactor for metrics and monitoring · c87e6526
      erio authored
      LoadFactor should only affect scheduling weight, not load rate reporting.
      c87e6526
    • erio's avatar
      af3a5076
    • erio's avatar
      fix: address load_factor code review findings · 12b33f4e
      erio authored
      - Fix bulk edit: send 0 instead of null/NaN to clear load_factor
      - Fix edit modal: explicit NaN check instead of implicit falsy
      - Fix create modal: use ?? instead of || for load_factor
      - Add load_factor upper limit validation (max 10000)
      - Add //go:build unit tag and self-contained intPtrHelper in test
      - Add design intent comments on WaitPlan.MaxConcurrency
      12b33f4e
    • erio's avatar
    • erio's avatar
    • erio's avatar
      fix: use range assertion for time-sensitive ExpiresInDays test · 77701143
      erio authored
      The test could flake depending on exact execution time near midnight
      boundaries. Use a range check (29 or 30) instead of exact equality.
      77701143
    • erio's avatar
      refactor: unify post-usage billing logic and fix account quota calculation · 02dea7b0
      erio authored
      - Extract postUsageBilling() to consolidate billing logic across
        GatewayService.RecordUsage, RecordUsageWithLongContext, and
        OpenAIGatewayService.RecordUsage, eliminating ~120 lines of
        duplicated code
      - Fix account quota to use TotalCost × accountRateMultiplier
        (was using raw TotalCost, inconsistent with account cost stats)
      - Fix RecordUsageWithLongContext API Key quota only updating in
        balance mode (now updates regardless of billing type)
      - Fix WebSocket client disconnect detection on Windows by adding
        "an established connection was aborted" to known disconnect errors
      02dea7b0
    • erio's avatar
      fix: route antigravity apikey account test to native protocol · c26f93c4
      erio authored
      Antigravity APIKey accounts were incorrectly routed to
      testAntigravityAccountConnection which calls AntigravityTokenProvider,
      but the token provider only handles OAuth and Upstream types, causing
      "not an antigravity oauth account" error.
      
      Extract routeAntigravityTest to route APIKey accounts to native
      Claude/Gemini test paths based on model prefix, matching the
      gateway_handler routing logic for normal requests.
      c26f93c4
    • erio's avatar
      feat: add quota limit for API key accounts · 05527b13
      erio authored
      - Add configurable spending limit (quota_limit) for apikey-type accounts
      - Atomic quota accumulation via PostgreSQL JSONB operations on TotalCost
      - Scheduler filters out over-quota accounts with outbox-triggered snapshot refresh
      - Display quota usage ($used / $limit) in account capacity column
      - Add "Reset Quota" action in account menu to reset usage to zero
      - Editing account settings preserves quota_used (no accidental reset)
      - Covers all 3 billing paths: Anthropic, Gemini, OpenAI RecordUsage
      
      chore: bump version to 0.1.90.4
      05527b13
    • erio's avatar
      fix: include upstream error details in usage API error response · 9117c2a4
      erio authored
      When FetchUsageWithOptions receives a non-200 response from the
      Anthropic API (e.g. 429 Rate Limited, 401 Unauthorized), the error
      was wrapped with fmt.Errorf which infraerrors.FromError cannot
      recognize, causing a generic "internal error" message with no details.
      
      Replace fmt.Errorf with infraerrors.New(500, "UPSTREAM_ERROR", msg)
      so the upstream error details (status code + body) are included in
      the 500 response message. The HTTP status remains 500 to avoid
      interfering with frontend auth routing (e.g. 401 would trigger
      JWT expiry redirect).
      9117c2a4