Repository navigation
feat(line-themes): per-status-line theme overrides - #40
Merged
Merged
Conversation
Each status line can now carry its own theme via the additive `lineThemes` setting (parallel to `lines`): an undefined entry (or a short/absent array) inherits the global theme (settings.theme in regular mode, powerline.theme in powerline mode) and 'none' disables theming for that line, so existing configs render byte-identically. - renderer: resolve the theme per line at both choke points (regular + powerline); an own-theme powerline line restarts its palette at slot 0 - render loop / StatusLinePreview: an own-theme line breaks the continueThemeAcrossLines chain — the next global line restarts at 0 - config load: normalizeLineThemes clamps the array to the line count - TUI: new "Line Themes" menu entry (LineSelector -> theme picker in per-line mode with Inherit/None options); line add/delete/move keeps lineThemes aligned with lines; LineSelector blocks color editing only when every line is theme-managed Co-Authored-By: Claude Code <[email protected]>
axisrow
added a commit
that referenced
this pull request
Oct 11, 2026
Merge upstream/main (sirmalloc/ccstatusline, v2.2.32) resolving 60
conflicting files. All fork features are preserved and ported onto the
upstream structure; nothing from the fork was removed.
Upstream infrastructure adopted:
- widget base classes (git-count, token-count, extra-usage-amount),
SearchableOptionEditor, label editing ('e' keybind), useTextCursor
- git security hardening (GIT_HARDENING_ARGS, resolveExecutable,
git-hardening.ts) - the daemon async git twin is hardened too
- sanitizeTerminalText on all render output paths
- NO_PROXY exclusion and closable proxy agents in usage/status fetches
Fork features kept on top: daemon (#14-#54), compact labels (#10/#21/#27,
routed through the upstream label override with preset priority),
line themes (#40), zero-hide states, maxWidth + lazy editors, fishStyle
abbreviation, env snapshots (#15/#18), lazy proxy-agent loading (sirmalloc#397),
keep-existing install, fork version suffix (2.2.32.fork1).
Known test failure kept as-is: git-hardening-exec "keeps Git LFS
installed into the repository config" also fails on a clean
upstream/main checkout under macOS (verified in a worktree); upstream CI
runs Linux.
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.
Summary
lineThemessetting: each line can use its own theme ("lineThemes": ["dracula", "nord-aurora"]), so status lines can be multicoloredsettings.themein regular mode,powerline.themein powerline mode);'none'disables theming for a line — configs without the key render byte-identicallycontinueThemeAcrossLineschain; the next global line restarts the global sequence at 0lineThemesaligned; LineSelector blocks color editing only when every line is theme-managedtheme)Testing
bun test: 2596 pass / 0 fail (11 new cases across renderer regular/powerline, powerline-theme-index, config, App, PowerlineThemeSelector, StatusLinePreview, and a new LineSelector test)bun run lint: cleanBD93F9/BF616A/88C0D0); the inherit line is byte-identical to output withoutlineThemescontinueThemeAcrossLines): after an own-theme line, the next global line restarts at slot 0🤖 Generated with Claude Code