Deferred from the UI refresh (spec §14.1). v1 ships dark-mode tokens only; light backgrounds fall back to plain-ANSI without our palette.
What
Ship a paired light-mode palette so users on light terminal backgrounds get a polished surface instead of plain ANSI fallback. Tokens already defined in design-system + landing CSS — reuse them.
Why deferred
The dev population is overwhelmingly dark-mode. Shipping light without a real signal would burn cycles testing chip-color contrast across the curated brand table (~50 entries × different bg = real work).
Tokens to use (already defined in @distrotv/design-system)
- bg `#f7f6f3`
- fg `#0e0e11`
- muted `#5c5c66`
- rule `#ddddd8`
- indigo `#4f46e5`
- positive `#098551`
- negative `#cf202f`
- warning `#cf470e`
Acceptance
- `detectTheme()` reads terminal bg via OSC 11 or env var `COLORFGBG`; falls back to dark if undetectable
- Brand chip foreground re-validated for contrast on light bg (some chips need fg flip — e.g., `#76b900` NVDA green needs black fg on light too, but `#ff6f00` BBG amber may need white)
- Same slot structure, only tokens swap
- Smoke check on iTerm2 (Light theme), Terminal.app (Basic), Alacritty (alacritty-light), Warp
References
- Spec: `docs/superpowers/specs/2026-05-20-distro-tv-ui-refresh-design.md` §14.1
Deferred from the UI refresh (spec §14.1). v1 ships dark-mode tokens only; light backgrounds fall back to plain-ANSI without our palette.
What
Ship a paired light-mode palette so users on light terminal backgrounds get a polished surface instead of plain ANSI fallback. Tokens already defined in design-system + landing CSS — reuse them.
Why deferred
The dev population is overwhelmingly dark-mode. Shipping light without a real signal would burn cycles testing chip-color contrast across the curated brand table (~50 entries × different bg = real work).
Tokens to use (already defined in @distrotv/design-system)
Acceptance
References