You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The usage modal, header indicator, and exhaustion-driven switch suggestions are hardcoded to Claude + Codex (UsageProviderKind, usageService.ts), while five provider kinds are registered. Users who never use a provider (e.g. Grok) still see it everywhere; z.ai GLM Coding Plan usage (via OpenCode) has no surface at all.
New main-owned provider enablement state per agent kind, defaulting to PATH auto-detection; explicit user toggles pin the value; Reset restores detection.
New Providers settings category: toggle + detection hint per provider; OpenCode row gains a usage-source dropdown (none | zai, extensible).
A disabled provider disappears from new-agent pickers, single/bulk provider switch menus, fleet bulk actions, and the usage modal/header. Running sessions are untouched.
Generalize usage to a UsageSourceId registry (claude | codex | grok | opencode:zai) in src/main/usage/; usageService composes the active source list from settings, preserving per-source failure isolation, 30s TTL, in-flight coalescing.
Usage modal redesign: provider rail + detail pane, per-source loading skeleton from the known active-source list, dynamic subtitle, keyboard-navigable rail, empty state linking to Providers settings.
This issue covers Phase 1 only (Claude + Codex live). Grok and z.ai readers are separate issues; their sources ship dark until those land.
Acceptance criteria
Enablement state with detection defaults, user override pinning, reset — unit tested.
All listed surfaces filter on enablement (exhaustive vs AGENT_PROVIDER_KINDS consumers, contract-test enforced).
getUsageSnapshot returns composed active sources; disabled ⇒ absent, never an error row.
Modal renders N sections in rail+detail layout with real loading skeleton; keyboard nav; empty state.
Activity
fix(usage): address the Phase 1 review — three blockers, two should-f…
Juliusolsson05 commentedon Sep 22, 2026
Implementation complete in PR #1126 (enablement + both readers + review fixes from four orchestrated reviewers). CI running; will merge after green.
fix(usage): final review — terminal-kind splits, direction defaults, …
docs(usage): add phase 1 implementation plan for provider usage enabl…
fix(usage): address the Phase 1 review — three blockers, two should-f…
fix(usage): final review — terminal-kind splits, direction defaults, …