What
Design and implement consistent empty states, error states, and offline/stale states for every major screen:
- Dashboard: no subscriptions yet, no providers configured, no Docker containers detected
- Spend tracking: provider stale (API failure), provider auth error, no key configured
- Docker: Docker not running, no containers, no AI containers detected
- Visual map: empty map with call-to-action
Offline handling: when a provider API is unreachable, show last-known data with a "last updated X ago" badge rather than clearing the screen.
Why
Empty states and error states are the difference between an app that feels broken and one that guides the user forward. They are also what new users see first.
Acceptance criteria
- Every screen has a designed empty state (not a blank white rectangle)
- Every network-dependent feature shows a stale indicator rather than hiding data
- Error messages are actionable ("Your Anthropic Admin key may have expired — check the Console") not generic ("Error")
- App launch succeeds with no network access and no Docker
References
MVP.md §5 Phase 7, §6 (Acceptance criteria #6)
What
Design and implement consistent empty states, error states, and offline/stale states for every major screen:
Offline handling: when a provider API is unreachable, show last-known data with a "last updated X ago" badge rather than clearing the screen.
Why
Empty states and error states are the difference between an app that feels broken and one that guides the user forward. They are also what new users see first.
Acceptance criteria
References
MVP.md §5 Phase 7, §6 (Acceptance criteria #6)