Skip to content

Add new providers, fix menubar tabs, accent color picker#167

Merged
iamtoruk merged 4 commits intomainfrom
fix/menubar-provider-tabs
Apr 28, 2026
Merged

Add new providers, fix menubar tabs, accent color picker#167
iamtoruk merged 4 commits intomainfrom
fix/menubar-provider-tabs

Conversation

@iamtoruk
Copy link
Copy Markdown
Member

Summary

  • Copilot provider: reads VS Code workspace transcripts (.jsonl) for accurate session tracking
  • Kiro provider: new provider parsing .chat JSON files with token estimation and auto-model naming
  • Auto-model naming: Cursor, Copilot, and Kiro store transparent model names (cursor-auto, copilot-auto, kiro-auto) instead of guessing; costed via BUILTIN_ALIASES at sonnet-4-5 rates
  • Menubar tabs: added Kiro, Copilot, OMP tabs; merged Cursor + Cursor Agent into single Cursor tab; tab costs now reflect selected period instead of always showing today
  • Accent color picker: 9 Apple-style system presets in menubar header, persisted via UserDefaults, "Burn" text always stays ember orange
  • Review hardening: case-insensitive provider key matching for tab costs, Kiro timestamp validation, daily cache version bump (v3->v4), cursor cache versioning to invalidate stale model names

Test plan

  • TypeScript type check clean
  • 374 tests pass (27 suites)
  • Swift package builds clean
  • Adversarial review (TS + Swift) completed, findings addressed

- Add Kiro IDE provider: parses .chat JSON files, estimates tokens,
  normalizes dot-versioned model IDs for cost lookup
- Show "Cursor (auto)", "Copilot (auto)", "Kiro (auto)" in CLI
  dashboard instead of pretending to know which model was used
- Route auto model names through BUILTIN_ALIASES for cost estimation
- Add Kiro, OMP to ProviderFilter enum so installed providers appear as tabs
- Merge Cursor + Cursor Agent into single Cursor tab
- Tab costs now reflect the selected period (7d/30d/month/all) instead
  of always showing today
- Tab visibility still uses today's provider list so tabs don't
  disappear when switching to periods with no data
- 9 presets using Apple's exact macOS dark-mode accent colors
  (Ember, Blue, Purple, Pink, Red, Orange, Yellow, Green, Graphite)
- Color picker in header, persisted via UserDefaults
- "Burn" text stays fixed ember regardless of accent
- ThemeState is MainActor-isolated for thread safety
- Picker state lifted to AppStore so it survives .id() tree rebuild
- Accessibility labels on all color swatches
- Renamed brandAccentDark/brandEmberDeep/brandEmberGlow to match
  their actual light/deep/glow semantics
…, cache versioning

- Normalize provider dictionary keys to lowercase in tab cost lookup
  so "Cursor Agent" (title-case from CLI) matches providerKeys
- Guard against missing/invalid/epoch startTime in Kiro parser to
  prevent RangeError crash or 1970-01-01 ghost entries
- Bump DAILY_CACHE_VERSION to 4 so upgraded users get a clean
  recompute with the new auto-model naming (cursor-auto vs default)
- Add version field to cursor-results.json cache to invalidate stale
  entries that still use the old 'default' model name
@iamtoruk iamtoruk force-pushed the fix/menubar-provider-tabs branch from 4a5db14 to 71f3aa4 Compare April 28, 2026 02:46
@iamtoruk iamtoruk merged commit f7f64a0 into main Apr 28, 2026
3 checks passed
@iamtoruk iamtoruk deleted the fix/menubar-provider-tabs branch April 28, 2026 02:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant