Repository navigation
Conversation
This was referenced Oct 4, 2026
Closed
…only Add a top-level `theme` setting that cycles a POWERLINE_THEMES segment palette across widgets as foreground colors when powerline is disabled. The theme's bg[] array is the vivid palette (fg[] holds the dark text-on-segment colors); ansi16-level bg* names are converted with the existing bgToFg() helper. Semantics: explicit per-widget colors win over the theme, theme beats widget defaults; explicit colors keep their palette slot so the rhythm of the surrounding widgets is stable. Separators and flex separators are neither themed nor consume slots; merged widgets share one slot; preserves-colors widgets keep their intrinsic ANSI output and still advance the slot - both mirroring the powerline renderer. Unset, 'custom', or unknown names disable theming. Additive optional schema key - configs written before it parse unchanged (no version bump); `ccstatusline set theme <name>` works through the existing generic `set` allowlist with zero CLI changes. Closes the feature half of sirmalloc#604. Co-Authored-By: Claude Code <[email protected]>
…CLI warnings Follow-up to the regular-mode theme feature: - Parametrized tests: every POWERLINE_THEMES entry (custom excluded) cycles its bg[] palette identically at color levels 1/2/3, plus a guard that every theme ships a non-empty palette at every level. - TUI: the theme selector now also serves regular (non-powerline) mode via a new mode prop - the main menu gains a Theme entry (hidden while powerline is enabled, which has its own picker); None clears the setting; the powerline-only "copy theme to widget colors" flow stays powerline-only. - CLI: validate reports unknown theme names as warnings (valid stays true, warnings array in --json output), set theme warns on unknown names while still writing them - a typo must not invalidate a config. Co-Authored-By: Claude Code <[email protected]>
axisrow
force-pushed
the
feat/regular-mode-themes
branch
from
October 11, 2026 14:56
4dcf3b6 to
e92aee3
Compare
Union: the regular-mode theme palette rides on upstream's background override helper; the fork Theme menu entry survives upstream's TerminalWidthMenu removal (width screen deleted upstream, Theme kept — it is this PR's feature); install state joins upstream's installationState memo with the fork's index-free mainMenuIndex back navigation; the merged upstream hooks-warning test learns the fork menu's Theme entry (one extra down on the way in, one extra up on the way out). Co-Authored-By: Claude Code <[email protected]>
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.
Addresses the feature half of #604 — applying the built-in theme catalog in regular (non-powerline) mode. The U+E0B0 separator-font fallback (the bug half) is deliberately left for a separate change, so the issue stays open.
The same diff is merged and live-verified in our fork: axisrow#12.
What
Makes the built-in theme catalog usable in regular (non-powerline) mode: a new top-level
themesetting cycles the chosen theme's segment palette across widgets as foreground colors.Semantics
theme: "dracula"(anyPOWERLINE_THEMESname) cyclestheme[level].bg[]as widget foregrounds —bg[]is the vivid segment palette, whilefg[]holds the dark text colors meant to sit on those segments. ansi16-levelbg*names are converted through the existingbgToFg()helper.'custom'/ unknown name → no theming. The level followscolorLevel, using the 16/256/truecolor calibrations already shipped with each theme.ccstatusline set theme <name>/getwork through the existing generic allowlist — zero CLI code changes.Rework: uniform coverage across all themes
POWERLINE_THEMESentry (customexcluded) at every color level 1/2/3 — each theme cycles itsbg[]palette through the identical slot rule — plus a guard that every theme ships a non-empty palette at all levels.modeprop): the main menu gains a "Theme" entry (hidden while powerline mode is enabled — powerline has its own picker), with aNoneentry that clears the setting. The powerline-only "copy theme to widget colors" flow remains powerline-only.validatereports unknown theme names as warnings (validstaystrue;warningsarray in the--jsonpayload);set theme <name>warns on unknown names while still writing them, so a typo never invalidates a config. No schema change — unknown names keep rendering as a silent no-op.Verification
bun test: all theme/menu/CLI tests green (see note below). Covers cycle order, explicit-wins + slot rhythm, separators unthemed, preserves-colors, merged widgets sharing a slot, unset/'custom'/unknown names, the all-themes × all-levels matrix, the regular-mode selector writes (settings.themeset/clear), and the CLI warning paths.bun run lintclean;bun run buildOK.theme: "dracula",colorLevel: 3config: uncolored widgets emit exact truecolor codes (38;2;189;147;249,38;2;248;248;242, …), separators stay unthemed; atheme: "nord"config renders the Nord palette the same way.validatewith an unknown theme → exit 0,OK … (with warnings), machine-readablewarningsarray listing the known themes;set theme nord→get --jsonreports"theme":"nord".Note: the repo's ink-based TUI tests have pre-existing timing flakiness on a loaded machine — the same tests (ItemsEditor, TerminalWidthMenu, ImportPreviewDialog, UsageLocaleEditor) fail intermittently on a clean checkout too. All tests touched by this PR are deterministic and green.
🤖 Generated with Claude Code