Skip to content

feat(ui): 49 themes with matched syntax highlighting + preview mode#664

Merged
backnotprop merged 4 commits intomainfrom
feat/everforest
May 5, 2026
Merged

feat(ui): 49 themes with matched syntax highlighting + preview mode#664
backnotprop merged 4 commits intomainfrom
feat/everforest

Conversation

@backnotprop
Copy link
Copy Markdown
Owner

Summary

  • 25 new themes sourced from shiki's bundled TextMate themes, expanding from 24 to 49 total. Each audited against shiki source JSON for color accuracy.
  • Matched syntax highlighting in diffs — pierre/diffs now uses the corresponding shiki syntax theme when the user selects a matching UI theme (35 of 49 covered via SHIKI_THEME_MAP).
  • Theme preview mode — compact bottom-docked picker lets users browse themes while seeing the page update live behind it. Activated via "Launch Preview Mode" badge in settings.
  • Settings panel enhancements — syntax highlighting badge indicator, mode unavailability dimming, Plannotator pinned first.

New themes: Everforest (3 variants), Nord, Solarized, GitHub, One Dark Pro, Night Owl, Material, Vitesse (+ Black), Vesper, Poimandres, Ayu Dark, Houston, Laserwave, Andromeeda, Aurora X, Dark+/Light+, Min, One Light, Plastic, Red, Slack, Snazzy Light.

Test plan

  • Open settings → Theme tab in both plan review and code review apps
  • Verify themes render correctly (no invisible borders, no green muted text, proper elevation)
  • Toggle dark/light mode — dark-only themes should dim in light mode
  • Click "Launch Preview Mode" — panel docks to bottom, page is visible and updates live
  • Select a syntax-matched theme (e.g., Nord, Solarized) then open code review — verify diff syntax colors match
  • Verify Plannotator appears first in the grid, rest alphabetical

…ghting

Add 25 new themes sourced from shiki's bundled TextMate themes (Everforest,
Nord, Solarized, GitHub, One Dark Pro, Night Owl, Material, Vitesse, Vesper,
Poimandres, Ayu Dark, Houston, Laserwave, Andromeeda, Aurora X, Dark+/Light+,
Min, One Light, Plastic, Red, Slack, Snazzy Light, Vitesse Black). Each theme
was audited against the shiki source JSON to ensure correct color mapping.

Wire pierre/diffs syntax highlighting to match the active UI theme via a
SHIKI_THEME_MAP (35 of 49 themes get matched syntax token colors in diffs).

Add theme preview mode — a compact bottom-docked picker that lets users
browse themes while seeing the page update live behind it.

Settings panel enhancements:
- Syntax highlighting badge on themes with diff color matching
- Mode unavailability dimming (dark-only themes dim in light mode)
- Plannotator pinned first, rest alphabetical
…de safety

1. Material light: foreground #90A4AE → #546E7A (Blue Grey 600) for readable
   UI text (~7:1 contrast on white). Primary-foreground #FAFAFA → #263238
   for contrast on teal buttons.

2. DiffHunkPreview: add colorTheme to useEffect deps so unsafeCSS (bg/gutter
   injection) recomputes when themes change, preventing stale mixed-theme
   state in mounted tooltips during preview mode.

3. SHIKI_THEME_MAP: make mode-aware with null entries for modes lacking a
   shiki counterpart. resolveSyntaxTheme() returns undefined when the current
   mode has no match, so pierre falls back to its defaults rather than
   applying dark token colors on a light background (fixes Tokyo Night light).
- DiffHunkPreview: extract resolveSyntaxTheme to a variable instead of
  calling it twice in the spread expression
- PierreDiffContent memo: compare syntaxTheme by dark/light string values
  instead of reference equality (resolver returns new objects each call)
- Preview mode: add Escape key handler to return to full settings
@backnotprop backnotprop merged commit 308e272 into main May 5, 2026
10 checks passed
@backnotprop backnotprop deleted the feat/everforest branch May 5, 2026 06:25
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.

1 participant