-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Summary
The Atacama light theme is inspired by the Atacama Desert — arid, mineral, high-altitude neutral grey. The surface palette is intentionally stark and minimal, but this makes it the flattest-looking of all the light themes. Without enough visual hierarchy, the interface looks like a low-contrast grey document rather than a purposeful IDE.
Problem Statement
Atacama uses #F4F4F2 (canvas) and #EBEAE6 (sidebar) — near-white neutral greys with the faintest warm undertone. The problem is that neutrality in a light theme requires more careful tuning than a dark theme:
surface-canvas: #F4F4F2andsurface-panel: #FAFAF8are extremely close — panels barely float above the canvas. The elevated panel (#FFFFFF) is brighter but only by a small step.surface-grid: #E3E2DEandsurface-sidebar: #EBEAE6are nearly identical, meaning the panel grid (which should frame and separate panels) is almost indistinguishable from the sidebar and other surfaces.border-default: #D5D3CEis a barely-there warm grey that's almost invisible againstsurface-panel: #FAFAF8. With the derivedborder-subtleandborder-dividerbeing even fainter, the entire border system essentially disappears.- The Canopy green accent
#3F9366pops strongly against these neutral surfaces — there's no supporting palette to bridge between the neutral surfaces and the vivid green, making it feel like a foreign color injection. activity-active: #1D9B5Eis a slightly muted green — better adapted than the raw#22c55e, but still the only saturated element in an otherwise deliberately unsaturated theme.status-info: #1447A4is a very saturated cobalt blue — the most vivid token in the theme. On the pale neutral canvas it's usable but feels over-injected.- The overall theme looks like an unfinished "default system light mode" rather than a considered theme with personality.
Relevant code:
shared/theme/themes.ts#L748-L810— current Atacama token definitionse2e/core/core-light-theme-smoke.spec.ts— smoke test with contrast checks- Issue Improve theme token coverage to fix washed-out light themes #3346 — token coverage improvements (foundation)
Desired Behavior
Atacama should feel like the high-altitude desert: mineral-white and pale stone with dry, cracked earth mid-tones and the faint blue of altitude. The theme can be clean and minimal — but it needs enough contrast in its surface stack and border system to give the interface structure. Specifically:
- The surface hierarchy should be legible: canvas → sidebar → panel → elevated panel should be clearly distinguishable steps.
- Borders should visibly separate components without being heavy or dark.
- The accent and status colors should feel intentional — like tools designed for a light neutral IDE, not transplanted from a dark theme.
- Status indicators and activity dots should be adapted for light mode: muted enough to not jump off the surface, vivid enough to communicate state.
Verification Workflow
- Apply:
await setAppTheme(window, "atacama"). - Run
getThemeChromeMetrics— verify smoke test checks pass. - Screenshot: full page plus close-ups of the sidebar, worktree dashboard, and a settings dialog.
- AI evaluation: does the theme feel designed? Is there enough surface differentiation? Does it look washed out?
- Iterate;
npm run check.
Acceptance Criteria
- E2E smoke test passes for Atacama.
- Canvas, sidebar, panel, and grid are visually distinct — a user can identify the structural regions without looking at the code.
-
border-defaultis visible against both panel and canvas backgrounds. - The overall palette has a coherent identity (mineral/desert neutral) that is distinct from Svalbard (arctic blue) and Hokkaido (cool blue-grey).
- All E2E tests pass.
Dependencies
Depends on #3346 for improved border and overlay token overridability.
Edge Cases & Risks
- Terminal scheme pairing from PR feat(terminal): match terminal color scheme to app theme automatically #3345 — verify after changes.
- Atacama's
syntax-operatorandsyntax-keywordare both set to#293D71(same value) — this is likely a copy-paste error. The redesign should address this.