Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: onllm-dev/onWatch
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v2.11.26
Choose a base ref
...
head repository: onllm-dev/onWatch
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v2.11.27
Choose a head ref
  • 2 commits
  • 16 files changed
  • 1 contributor

Commits on Mar 17, 2026

  1. feat: aggregate Gemini quotas by family (Pro, Flash, Flash Lite)

    Gemini models within the same family share quota pools, so displaying
    6 individual model cards with duplicate data was misleading. This change
    aggregates quotas into 3 families based on model ID classification:
    - Pro: models containing "pro"
    - Flash Lite: models containing "flash" and "lite"
    - Flash: models containing "flash" (but not pro/lite)
    
    Backend changes:
    - Add GeminiModelFamily() classifier and AggregateGeminiByFamily() in api
    - Tracker processes cycles per-family instead of per-model
    - All handlers (current, history, insights, logging-history, cycles)
      return family-aggregated data with consistent values across views
    - Cycle overview disabled for Gemini (returns empty)
    - Both-view history uses family IDs for chart series
    
    Frontend changes:
    - Display names, chart colors, renewal categories use family IDs
    - Cards show family name with member models as subtitle
    - Logging history uses percent rendering (not minimax value/limit)
    - Cycle overview section hidden for Gemini provider
    - Group-by bucket pills derived from poll interval (1x/3x/6x/12x)
    - Anthropic promo tag in All view shows dynamic label with countdown
    
    Closes #33
    prakersh committed Mar 17, 2026
    Configuration menu
    Copy the full SHA
    58dc6f0 View commit details
    Browse the repository at this point in the history
  2. feat: persist Gemini OAuth tokens in DB for Docker restart survival

    Previously, refreshed Gemini tokens were only saved to ~/.gemini/oauth_creds.json
    which is lost on Docker container restart. Now tokens are also persisted in the
    settings table of the SQLite DB (which lives on a mounted volume).
    
    Token detection priority: DB > env vars > file
    - On refresh: save to both DB and file
    - On startup: DB tokens take precedence (most recent refresh)
    - Env vars (GEMINI_REFRESH_TOKEN) serve as initial bootstrap only
    
    Changes:
    - store: add SaveGeminiTokens/LoadGeminiTokens using settings table
    - api: add GeminiTokenStore interface, DetectGeminiCredentials checks DB first
    - agent: saveTokensToDB on both proactive and error-triggered refresh
    - test: full mock-server integration test verifying refresh -> DB persist -> reload
    
    Closes #32
    prakersh committed Mar 17, 2026
    Configuration menu
    Copy the full SHA
    fcfcdb2 View commit details
    Browse the repository at this point in the history
Loading