Skip to content

Dashboard TUI is unreadable on light-background terminals (no light theme) #186

@chrisands

Description

@chrisands

Problem

The dashboard currently ships only the Catppuccin Mocha (dark) theme, and theme.NewTheme is called with a hardcoded "catppuccin-mocha" at every call site in dashboard/main.go. On terminals with a light background the Mocha palette is largely unreadable:

  • Body text (#cdd0e6) is near-white on a white background → invisible.
  • Subtext (#a6adc8) similarly disappears.
  • Overlay border colors blend into the background.
  • The surface/base colors are dark blobs on an otherwise light terminal, so the header and footer look like black boxes.

Result: users on light-theme terminals can't meaningfully use the TUI.

Expected

The dashboard should detect the terminal's background color at startup and pick a palette that has sufficient contrast — Latte (light) for light terminals, Mocha (dark) for dark ones — with an explicit override for users who want to force one or the other.

Proposed fix

  1. Add a Catppuccin Latte palette (newCatppuccinLatte()).
  2. Extend theme.NewTheme to accept "catppuccin-latte", "catppuccin-mocha", and "auto" (default), where auto uses termenv.HasDarkBackground().
  3. Detect the theme once in main() before entering the alt-screen (termenv returns wrong results inside the alt-screen) and store it on appModel so subsequent screens reuse the same instance instead of re-detecting.

I have a patch ready and will open a PR shortly.

Environment

  • career-ops v1.3.0
  • Tested on Ghostty with the catppuccin-latte theme

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions