-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Summary
The Bondi light theme is inspired by Bondi Beach, Sydney — warm sand, ocean blue, and coastal green. The canvas and sidebar colors are in the right territory but the theme is visually flat: surfaces blend together, there isn't enough contrast between UI layers, and the light theme derivation system under-generates the border and overlay contrasts needed to separate components clearly.
Problem Statement
Bondi uses #F6F0E4 (canvas) and #E5DDCF (sidebar) — warm sandy tones. The concept works thematically but falls short visually:
border-default: #CFC4B3is derived as a slightly darker warm tone. On light sandy backgrounds, this border is faint and provides insufficient visual separation between the sidebar, panels, and worktree cards. The worktree section headers blend into the card body.surface-grid: #E8E2D6is only a few tones away fromsurface-canvas— the grid background (which separates panels) barely reads as a structural element.- The
border-subtleandborder-dividertokens are derived via thecreateCanopyTokenshelper using opacity-based formulas that were calibrated for dark themes. On Bondi's warm light surfaces, these produce borders that are nearly invisible (see issue Improve theme token coverage to fix washed-out light themes #3346). text-muted: #6E746Dis a cool grey-green against warm sandy surfaces — slightly off-character for the warm beach palette and potentially lower contrast than needed for secondary text.activity-active: #22c55eandactivity-working: #22c55euse the dark-theme neon green. On a light warm surface, this green is very vivid and feels jarring compared to the muted coastal palette.- The terminal palette uses deep high-contrast colors (e.g.
terminal-blue: #2B5573) that look fine but could be more specifically tuned to the Bondi beach palette (ocean blue, coral red) for a more cohesive feel. - The E2E light theme smoke test (
core-light-theme-smoke.spec.ts) currently flags Bondi forworktreeSectionContrast— the contrast between the worktree card sections is too low, confirming the visual flatness.
Relevant code:
shared/theme/themes.ts#L253-L317— current Bondi token definitionse2e/core/core-light-theme-smoke.spec.ts— existing smoke test withworktreeSectionContrast≥ 1.08 checke2e/helpers/theme.ts—setAppThemeand contrast metric helpers- Issue Improve theme token coverage to fix washed-out light themes #3346 — theme token coverage improvements (foundation issue — may add overridable border tokens)
Desired Behavior
Bondi should read as a bright coastal day: warm sun-bleached sand surfaces with clear blue ocean accents and lush coastal green. Surfaces should have unmistakable hierarchy — sidebar recedes, panels pop forward, borders are visible but not heavy. Specifically:
- Sidebar should be noticeably distinct from the canvas — a sand color while the canvas is closer to sun-bleached white, or vice versa.
- Worktree card sections, headers, and borders should be clearly separated.
- Agent state indicators should use activity colors appropriate for a light theme — not neon green on cream.
- The overall feel should be bright, airy, and Australian coastal — clearly distinct from the more European/neutral Svalbard theme.
Verification Workflow
- Apply the theme:
await setAppTheme(window, "bondi"). - Run
getThemeChromeMetrics— verifyworktreeSectionContrast ≥ 1.08andquickRunFieldBorderContrast ≥ 1.2pass. - Capture full-page screenshot.
- Take targeted screenshots of: sidebar, worktree dashboard, settings panel.
- AI visual evaluation: does the theme read as warm coastal? Are surfaces differentiated? Does it feel flat or washed out?
- Iterate;
npm run check.
Acceptance Criteria
- E2E smoke test passes:
worktreeSectionContrast ≥ 1.08andquickRunFieldBorderContrast ≥ 1.2for Bondi. - The sidebar is visually distinct from the canvas background at a glance.
- Worktree card sections (header, body, details) have visible separation.
- Agent state indicators (
activity-active,activity-waiting) read clearly without being jarring on the warm light surface. - Screenshot evaluation confirms the theme reads as bright, warm, and coastal — not washed-out or flat.
- All E2E tests pass.
Dependencies
Depends on #3346 for the improved token coverage that makes explicit border values respected per-theme.
Edge Cases & Risks
- The terminal scheme pairing from PR feat(terminal): match terminal color scheme to app theme automatically #3345 maps Bondi to a specific light terminal palette — verify cohesion after token changes.
text-inverse: #1B3626is set to the same value astext-primary— this is unusual and may cause issues with any UI that uses text-inverse for reversed-text scenarios.