-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Summary
The Svalbard light theme is inspired by the Arctic archipelago — cool blue-grey surfaces, ice white panels, and cold northern light. The color direction is correct but the theme is visually flat: the cool blue-grey surfaces lack sufficient contrast between levels, borders disappear into the background, and it looks washed out in practice.
Problem Statement
Svalbard uses #E8EEF2 (canvas) and #D9E2E8 (sidebar) — cool blue-grey. The concept is clear but execution falls short:
surface-panel: #F2F6F8andsurface-panel-elevated: #FFFFFFare very close together — the elevated state barely reads as distinct from the base panel.border-default: #BCC8D2is a light blue-grey that provides minimal separation against the similarly-toned canvas and sidebar surfaces. The worktree sidebar sections become visually undifferentiated.surface-grid: #CDD7DFis only slightly darker thansurface-canvas— the grid separator (the space between panels) doesn't clearly demarcate panel boundaries.- The derived
border-subtle,border-strong, andborder-dividertokens fromcreateCanopyTokensare opacity-layered over a cool greytext-primary(#253545). On Svalbard's pale surfaces these produce borders that are close to invisible (see issue Improve theme token coverage to fix washed-out light themes #3346). activity-active: #22c55eandactivity-working: #22c55eare the dark-theme neon greens, which look incongruous against the cool arctic palette — a cold bright cyan or arctic blue would better fit the identity.activity-waiting: #B86000is a warm amber. On cool arctic surfaces, this reads as correctly contrasting but thematically inconsistent — Svalbard has no warm tones anywhere else.- The overall result is an interface that looks like it's been washed with cold water until the colors faded out.
Relevant code:
shared/theme/themes.ts#L569-L631— current Svalbard 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
Svalbard should feel like the arctic coast in clear weather: brilliant white ice, cold blue-grey fjord water, and the occasional flash of cold cobalt sky. Surfaces should have clear hierarchy — the sidebar should feel like blue-grey weathered rock, panels like ice-white, and the canvas like pale arctic sky. Specifically:
- Sidebar should clearly separate from canvas using surface values with enough lightness difference.
- Borders should be visible against their adjacent surfaces — they should guide the eye, not disappear.
- Activity indicators should use an arctic-appropriate cold palette rather than the warm Canopy defaults.
- Worktree sections should be clearly differentiated.
Verification Workflow
- Apply:
await setAppTheme(window, "svalbard"). - Run
getThemeChromeMetrics— verify smoke test checks pass. - Capture full-page and targeted screenshots (sidebar, worktree card, settings dialog).
- AI visual evaluation: does the theme read as cold arctic? Are surfaces clearly differentiated? Does it look washed out?
- Iterate;
npm run check.
Acceptance Criteria
- E2E smoke test passes for Svalbard (
worktreeSectionContrast ≥ 1.08,quickRunFieldBorderContrast ≥ 1.2). - Canvas, sidebar, panel, and grid surfaces are visually distinct from each other.
-
border-defaultis clearly visible against both the canvas and panel backgrounds. - Screenshot evaluation confirms the theme reads as cold, clean, and arctic — not washed out.
- All E2E tests pass.
Dependencies
Depends on #3346 for improved border token overridability.
Edge Cases & Risks
- Terminal scheme pairing from PR feat(terminal): match terminal color scheme to app theme automatically #3345 — verify after changes.
- Svalbard uses
#1B2838asterminal-bright-white— a very dark blue, not a white. This is intentional for a light theme terminal but may need review in the context of the redesign.