Skip to content

WIP: theme preset gallery and custom color editor#7276

Draft
aharvard wants to merge 1 commit intotheme-tokensfrom
theme-builder
Draft

WIP: theme preset gallery and custom color editor#7276
aharvard wants to merge 1 commit intotheme-tokensfrom
theme-builder

Conversation

@aharvard
Copy link
Collaborator

@aharvard aharvard commented Feb 17, 2026

⚠️ This PR is a work in progress. Not ready for review yet.

Summary

Adds a full theme builder experience — preset gallery and custom color editor — on top of the token infrastructure from #7275.

Author: This work is by @spencrmartin (from #7216), integrated here with authorship preserved.

What's included

  • 10 built-in theme presets: Goose Classic, Nord, Dracula, Solarized, Monokai, GitHub, Gruvbox, Tokyo Night, One Dark, High Contrast
  • PresetGallery — grid of preset cards with tag filtering, one-click apply, color preview swatches
  • ThemeColorEditor — full-screen dialog with two tabs (Presets / Custom Colors)
  • SimpleColorPicker — hue spectrum + saturation/lightness grid, no external deps
  • ColorPreview — live preview showing how each color variable appears in real UI components (sidebar, chat bubbles, cards, buttons, etc.)
  • Custom theme CRUD — save/edit/delete custom themes to localStorage
  • "Customize Colors" button in Settings → Appearance

Key decisions

  • Zero server endpoints — everything is client-side
  • No chroma-js dependency — the color picker is self-contained
  • No page reloads — theme changes apply instantly via style.setProperty()
  • Preset merge strategy — presets define partial color overrides (~18 keys), merged on top of goose-classic defaults (~60+ keys) at apply time
  • Persistence — active theme ID and custom themes stored in localStorage

Verification

  • cargo build -p goose-server
  • cargo fmt -- --check
  • cargo clippy --all-targets -- -D warnings
  • npx tsc --noEmit (zero errors)
  • eslint (zero new errors, 1 pre-existing warning in McpAppRenderer)

Related

@aharvard aharvard changed the title feat: theme preset gallery and custom color editor WIP: theme preset gallery and custom color editor Feb 17, 2026
@aharvard aharvard force-pushed the theme-builder branch 2 times, most recently from 9bdc029 to aee1458 Compare February 17, 2026 22:08
- Add 10 built-in theme presets: Goose Classic, Nord, Dracula, Solarized,
  Monokai, GitHub, Gruvbox, Tokyo Night, One Dark, High Contrast
- Add PresetGallery with tag filtering and one-click apply
- Add ThemeColorEditor with Presets and Custom Colors tabs
- Add SimpleColorPicker (hue spectrum + saturation/lightness grid)
- Add ColorPreview showing live preview across real UI components
- Add custom theme CRUD (save/edit/delete to localStorage)
- Add "Customize Colors" button in Settings → Appearance
- Presets define partial color overrides (~18 keys), merged on top of
  goose-classic defaults (~60+ keys) at apply time
- Zero server endpoints — everything is client-side
- No external dependencies for color picking
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments