Repository navigation
Theme files: choose a light and a dark theme with their colors and fonts - #254
Merged
MHohlios merged 7 commits intoNov 2, 2026
Merged
Conversation
added 7 commits
November 2, 2026 16:07
…arning Open themes folder clears an earlier failure; theme resolution stays private to themes.rs.
MHohlios
force-pushed
the
wiffletree/theme-files-light-and-dark-themes-with-colors-an
branch
from
November 2, 2026 21:10
651722b to
b5c7fd7
Compare
MHohlios
deleted the
wiffletree/theme-files-light-and-dark-themes-with-colors-an
branch
November 2, 2026 21:22
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Wiffletree reads themes from JSON files in
<data dir>/themes/. Settings › Appearance now has a Light theme and a Dark theme menu below Mode; System shows the light theme when macOS is light and the dark theme when it is dark, and Light and Dark hold one. Tidal stays built in and is the default on both sides. The approved study isopenspec/changes/archive/2026-11-02-theme-files/ui/mockups.html.A theme file has Tidal's shape: a
name, alightvariant, adarkvariant or both, with Tidal's 14 color names, and an optionalfontsblock (ui,mono,sizefrom 11 to 20). A theme is listed in each menu whose variant it has. A color a variant leaves out comes from Tidal's same variant, and unknown keys are ignored, so Tidal's own file is a valid theme. The Celadon port (celadon-theme/celadon-theme#16) ships its four variants in this format.themes.rsparses files over Tidal, reporting a bad value with its line, lists each side, resolves each choice with Tidal fallback per key and per side, and re-reads the chosen files when a theme is picked and when a window becomes active. It also writes Open themes folder and New theme from Tidal.palette.rsholds both looks at runtime;palette(dark)keeps its signature, so its callers did not change.ui_font()andmono_font()replace every hard-coded system font name, including the Space rows' count added in List projects by Space, then by group #253, andapply_themesets gpui-component's font, mono font and size from the theme on show. Tidal's mono font is Menlo, as gpui-component's default was, so code no longer falls back to Helvetica at the app's own mono call sites.preferences.rsaddslight_themeanddark_theme; a missing or unknown value reads as Tidal and keeps the rest of the file.openspec/specs/native-workspace;design/README.mdanddocs/PRD.mddescribe the study and themes.The sidebar's Appearance menu keeps only System, Light and Dark.
Tests: 16
themes::testscover complete, light-only, dark-only and partial files, a bad color's line, neither variant, size limits, unknown keys, Tidal itself, per-side listing, a deleted chosen file, a one-sided mismatch, shared and separate font warnings and a new theme's name;theme_choices_survive_a_relaunch_and_unknown_ones_read_as_tidalcovers preferences.cargo fmt --check,cargo clippy -p workspace-desktop --all-targets -- -D warnings,cargo test -p workspace-desktop(442 passed) andopenspec validate --specs --strictare clean. Driven on a scratch data folder, a dark-only and a light-only theme switched live with Mode, and a broken accent showed its banner with Tidal on that side. Clicking the Settings menus and a real macOS appearance flip were not driven, since automation reaches only the main window.Reviewed with Wiffletree: 1 full review and 2 re-checks, 4 rounds (Tests, Claude, Codex, Style)