Skip to content

Redesign Namib theme — too red, needs a more relaxed identity #3347

@gregpriday

Description

@gregpriday

Summary

The Namib theme is a dark theme built around deep red-brown surfaces (#1C0F0B canvas, #150B08 sidebar). The overall impression is overwhelmingly red and heavy. It needs a redesign that relaxes the hue intensity while preserving the arid, warm desert character its name implies.

Problem Statement

Namib is the only dark theme that draws immediate negative attention. The problems compound across multiple token groups:

  • The surface stack — canvas #1C0F0B, sidebar #150B08, panel #201410 — is deeply saturated toward red. Even minor UI chrome like dividers and borders inherits this reddish cast, making the whole interface feel tinted and fatiguing.
  • The border-default (#352018) is a warm burnt-sienna that stands out rather than receding into the background, adding visual noise.
  • status-danger (#C86858) and terminal-red (#D95E4E) compete with the background hue rather than contrasting from it, reducing the communicative value of danger/error signals.
  • activity-waiting (#D4913E) and terminal-yellow (#C8922A) share a warm amber that blends with the reddish surfaces rather than providing clear visual separation.
  • The overall theme lacks a clear identity anchor beyond "red background" — unlike Daintree (deep forest green) or Arashiyama (warm bamboo amber), Namib has no strong secondary hue or motif.

The Namib desert is characterized by ochre sand dunes, cool morning fog, and pale desert sky. The theme should evoke those tones: muted sandy ochre, dry terracotta, and cool blue-grey distance — not deep red interiors.

Relevant code:

Desired Behavior

Namib should read as a calm, warm-neutral dark theme with sandy/ochre mid-tones and cool-grey accents in the distance. Surfaces should be dark without being red-tinted. The theme should:

  • Have surfaces and borders that feel dark grey with a warm (not red) undertone — muted ochre/sand cast rather than burnt-sienna.
  • Use status and activity indicators that clearly differentiate from the surface hue.
  • Maintain the Canopy green accent (#3F9366) but ensure it doesn't conflict with a warmer surface background.
  • Feel distinctly different from both Daintree (cool neutral dark) and Redwoods (deep auburn wood), occupying the "arid warm desert" niche clearly.

Verification Workflow

  1. Apply the theme in E2E: await setAppTheme(window, "namib") (see e2e/helpers/theme.ts).
  2. Capture a full-page screenshot (window.screenshot({ fullPage: true })).
  3. Measure contrast: toolbar text vs. toolbar background, sidebar vs. canvas, panel vs. grid, agent state dot vs. surrounding surface.
  4. Run AI visual evaluation on the screenshot: ask whether the theme reads as warm/desert without being red-heavy; whether borders recede; whether status indicators are clearly distinct.
  5. Iterate on token values until the screenshots pass both the contrast checks and the AI visual review.
  6. Run npm run check — zero new errors.

Acceptance Criteria

  • The surface stack (canvas, sidebar, panel, grid) reads as dark neutral with a warm sandy undertone, not as a deep red or burgundy.
  • border-default and border-subtle are visually subordinate — they separate surfaces without drawing the eye.
  • status-danger and terminal-red clearly differentiate from the warm surface hue (sufficient contrast, not competing with the background tint).
  • Agent state colors (activity-active, activity-idle, activity-working, activity-waiting) are clearly legible and distinct from each other and from the surface.
  • Screenshot evaluation confirms the theme has a coherent desert/arid character that is distinct from Daintree, Highlands, Redwoods, and other dark themes.
  • All E2E tests pass; no regressions in existing dark theme contrast checks.

Edge Cases & Risks

  • The paired terminal scheme set in PR feat(terminal): match terminal color scheme to app theme automatically #3345 maps Namib to a specific terminal palette. If surface or accent tokens change significantly, verify the terminal-to-app visual pairing still looks cohesive.
  • Category label colors (category-*) use static oklch values shared across most dark themes — leave those unchanged unless the redesign exposes a conflict.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions