Repository navigation
feat(settings): expose the interactive terminal theme picker - #13036
teamleaderleo wants to merge 2 commits into
Conversation
|
All contributors have signed the CLA ✍️ ✅ |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: manaflow-ai/cmux/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (3)
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughThe settings UI adds a Terminal Theme row. The host action contract and implementation open ChangesTerminal Theme Picker
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~10 minutes Change: Feature Suggested reviewers: Sequence Diagram(s)sequenceDiagram
participant Settings
participant HostSettingsActions
participant TerminalPane
participant CmuxCLI
Settings->>HostSettingsActions: openTerminalThemePicker()
HostSettingsActions->>TerminalPane: Create focused pane
TerminalPane->>CmuxCLI: Run cmux themes then exit
CmuxCLI-->>Settings: Display theme picker
Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (3 errors, 2 warnings)
✅ Passed checks (20 passed)
Full details: Cmux Swift LoggingExplanation The PR adds two production diagnostics in Resolution Declare the logger as Full details: Cmux User-Facing Error PrivacyExplanation The new Settings action creates a terminal pane with Resolution Use cmux-level, generic error copy for the Settings-launched picker. Do not forward Ghostty/helper names, environment or config paths, raw helper stderr, raw upstream errors, errno text, or exit details to the terminal. Keep detailed diagnostics only in sanitized internal logs. Replace the new subtitle with vendor-neutral wording such as Full details: Cmux Full InternationalizationExplanation The PR adds three user-facing Settings strings with localization APIs: Resolution Add all three keys to Full details: Description checkExplanation The description explains the feature and implementation, but it does not follow the required template. It lacks the Demo Video section, Review Trigger block, and Checklist, and the Testing section does not state how the change was tested or what was verified manually.
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
5a77edc to
482ec50
Compare
|
Review follow-up in 620a7c4:
Direct |
Local UI verification — September 19, 2026Tested
Apply/persistence was not exercised in this pass. Built as an isolated tagged Debug app. The only local overlay was the two build-script files from #12973 to enable ScreenshotsSettings entry point Filtered theme preview |
|
Replaced by #13224: same commits, head branch moved into the org. |


Reviewer summary
Adds an interactive terminal theme picker in Settings, with preview, search, and the existing theme storage path.
What changed
cmux themespicker in a temporary terminal tabThis revives the user-facing idea from #699 against the current theme implementation. The picker itself now already exists in cmux/Ghostty, so this PR only exposes that existing path instead of carrying a second SwiftUI theme catalog and persistence flow.
Implementation
Settings calls a new
SettingsHostActions.openTerminalThemePicker()host action. The host opens a focused terminal tab in the current workspace and runs the app-bundled CLI as:That keeps
cmux themesas the single entry point and lets the current Ghostty picker own all theme behavior.Testing
The change is intentionally narrow and relies on the existing
cmux themespicker and terminal-surface creation paths. The new Settings button has a stable accessibility identifier:SettingsTerminalThemePickerButton.Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Adds a Terminal Theme row to Settings that opens the existing interactive
cmux themespicker in a temporary, focused terminal tab, so users no longer need to run the CLI by hand. The tab closes automatically when the picker exits.The picker reuses the bundled
cmuxCLI and Ghostty theme picker, so search, filtering, live preview, light/dark targeting, apply, cancel, and persistence all match the CLI experience. Hosts without the bundled CLI fall back to a no-op instead of surfacing a broken action.Written for commit 620a7c4. Summary will update on new commits.
Summary by CodeRabbit