Skip to content

Redesign Serengeti theme — fix washed-out warm-earth light surfaces #3356

@gregpriday

Description

@gregpriday

Summary

The Serengeti light theme is inspired by the East African savanna — warm golden earth, amber grasses, and acacia silhouettes. The warm-tone direction is stronger than Atacama's neutrality, but the theme still reads as washed out: surfaces don't have enough contrast between layers, and the activity/status palette uses defaults from dark themes that look out of place on warm ochre backgrounds.

Problem Statement

Serengeti uses #F4EDE0 (canvas) and #EBE1D0 (sidebar) — warm sandy cream. The palette has potential but several choices pull it toward mediocrity:

  • The difference between surface-canvas: #F4EDE0 and surface-sidebar: #EBE1D0 is small. The sidebar and canvas blend together, especially when the panels are #FAF7F2 (barely whiter than canvas). The panel grid #E4D9CA is only slightly darker — these four surfaces are all within a narrow warm-tan band.
  • border-default: #D5C8B8 disappears against surface-panel: #FAF7F2 — they're both warm near-white. Component boundaries are invisible.
  • activity-active: #22c55e and activity-working: #22c55e are the dark-theme neon greens. Against a warm golden canvas, they're extremely jarring — they read like wrong-colored pixels rather than UI elements.
  • activity-idle: #8b95a1 and activity-waiting: #d97706 are borrowed from Daintree defaults. The amber for waiting (#d97706) clashes with the warm surface tones — they're the same color family, making waiting states nearly invisible.
  • terminal-black: #4A3F35 and terminal-white: #9B8D7A are custom-set — good — but terminal-bright-black: #A89A8A and terminal-bright-white: #4A3F35 invert the black/white relationship in a way that may produce confusing output.
  • text-muted: #9B8D7A has very low contrast against surface-panel: #FAF7F2 (approximately 2.5:1) — below WCAG AA for normal text.

Relevant code:

Desired Behavior

Serengeti should feel like the savanna at golden hour: warm amber and cream surfaces with richer mid-tone contrast. There should be clear differentiation between the canvas, sidebar, panels, and grid. Activity colors should feel like they belong in a warm-earth palette — earth greens and deep ambers rather than neon. Specifically:

  • Surface layers should have clear stepped contrast: canvas brighter than sidebar, panels floating above canvas.
  • Borders should visibly separate UI regions.
  • Agent state colors should be adapted to the warm palette — muted earthy greens and ambers instead of neons.
  • text-muted should meet a minimum contrast ratio for readability.

Verification Workflow

  1. Apply: await setAppTheme(window, "serengeti").
  2. Run getThemeChromeMetrics — verify smoke test checks pass.
  3. Screenshot: full page plus sidebar, worktree cards, and a panel with activity indicators.
  4. Measure text-muted contrast against surface-panel.
  5. AI evaluation: does the theme evoke warm savanna? Are surfaces differentiated? Are the agent state colors coherent?
  6. Iterate; npm run check.

Acceptance Criteria

  • E2E smoke test passes for Serengeti.
  • text-muted has ≥ 3:1 contrast against surface-panel.
  • Surface layers are clearly stepped — canvas, sidebar, panel, and grid are visually distinct.
  • Agent state indicators are adapted for the warm palette and don't appear as jarring neon intrusions.
  • The theme reads as warm savanna — distinct from Bondi (coastal) and Atacama (mineral desert) in screenshot evaluation.
  • All E2E tests pass.

Dependencies

Depends on #3346 for improved border token overridability.

Edge Cases & Risks

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