Skip to content

Redesign Svalbard theme — fix washed-out arctic light surfaces #3354

@gregpriday

Description

@gregpriday

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: #F2F6F8 and surface-panel-elevated: #FFFFFF are very close together — the elevated state barely reads as distinct from the base panel.
  • border-default: #BCC8D2 is 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: #CDD7DF is only slightly darker than surface-canvas — the grid separator (the space between panels) doesn't clearly demarcate panel boundaries.
  • The derived border-subtle, border-strong, and border-divider tokens from createCanopyTokens are opacity-layered over a cool grey text-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: #22c55e and activity-working: #22c55e are 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: #B86000 is 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:

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

  1. Apply: await setAppTheme(window, "svalbard").
  2. Run getThemeChromeMetrics — verify smoke test checks pass.
  3. Capture full-page and targeted screenshots (sidebar, worktree card, settings dialog).
  4. AI visual evaluation: does the theme read as cold arctic? Are surfaces clearly differentiated? Does it look washed out?
  5. 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-default is 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

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