hermes-agent/apps/desktop/src/themes
Brooklyn Nicholson afd0270a64 fix(themes): repaint the desktop on an in-place edit of the active skin
Live theme authoring's core loop — Hermes recolors the skin file it just
activated — repainted the TUI but not the GUI. The event path was fine
(post-#69533 the WS broadcast lands and ingestBackendSkin refreshes the
$backendThemes registry); the same-name apply guard also no-ops correctly
(it's what protects a manual desktop theme pick). The repaint was supposed
to come from the registry: the active theme IS that skin, its palette just
changed. But ThemeProvider memoized deriveTheme on [themeName, resolvedMode]
only, while deriveTheme reads the registry non-reactively via resolveTheme —
so the store update re-rendered the provider and handed back the stale
palette. Name switches repainted (themeName moves); recolors never did.

Add the theme stores (user/backend/registry) to the memo's deps — they are
deriveTheme's actual reactivity, same as the availableThemes memo directly
above. applyTheme is idempotent, and $backendThemes only publishes on a
real palette change, so no spurious repaints.

Tests: render ThemeProvider for real — activation applies; a same-name
recolor repaints (fails without the fix); an inactive-skin seed doesn't
touch the painted theme.
2026-07-22 15:07:03 -05:00
..
backend-sync.test.ts fix(themes): re-affirming the active skin repaints surfaces that missed the activation 2026-07-22 13:29:56 -05:00
backend-sync.ts refactor(themes): DRY the event frame, type the transport registry, tighten comments 2026-07-22 14:07:18 -05:00
color.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
context.test.tsx fix(themes): repaint the desktop on an in-place edit of the active skin 2026-07-22 15:07:03 -05:00
context.tsx fix(themes): repaint the desktop on an in-place edit of the active skin 2026-07-22 15:07:03 -05:00
index.ts feat(themes): cross-surface theme SDK — one skin themes CLI, TUI, and desktop 2026-07-21 21:00:42 -05:00
install.test.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
install.ts feat(desktop): ts-ify everything 2026-07-08 16:24:16 -07:00
presets.test.ts test(desktop): assert every theme typography carries an emoji font (#40364) 2026-06-06 19:58:39 -07:00
presets.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
profile-theme.test.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
skin.test.ts feat(themes): cross-surface theme SDK — one skin themes CLI, TUI, and desktop 2026-07-21 21:00:42 -05:00
skin.ts fmt(js): npm run fix on merge (#69050) 2026-07-22 02:40:17 +00:00
types.ts Merge remote-tracking branch 'origin/main' into bb/vscode-marketplace-themes 2026-06-09 23:22:36 -05:00
use-skin-command.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
user-themes.test.ts feat(desktop): flag already-installed themes in the install pickers 2026-06-29 23:29:20 -05:00
user-themes.ts feat(themes): cross-surface theme SDK — one skin themes CLI, TUI, and desktop 2026-07-21 21:00:42 -05:00
vscode.test.ts feat(desktop): theme the terminal ANSI palette + restyle the Cmd-K / Ctrl-Tab HUDs 2026-06-09 23:37:50 -05:00
vscode.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00