Add macOS icon selector in Settings + custom dark icon#690
Add macOS icon selector in Settings + custom dark icon#690rogierx wants to merge 1 commit intomanaflow-ai:mainfrom
Conversation
- add macOS Icon setting under Theme with visual Default/Dark preview buttons - persist selection via appIconThemeMode and apply icon immediately in Dock/Cmd+Tab - include a custom dark macOS icon provided by @rogierx (DockIconDark.imageset) - add DockIconDefaultPreview.imageset for side-by-side icon previews in settings - fix extra spacing around Sidebar Branch Layout picker row - remove duplicate blue focus ring on icon option buttons - fix debug crash path in FileDropOverlayView hit-test logging
|
@rogierx is attempting to deploy a commit to the Manaflow Team on Vercel. A member of the Team first needs to authorize it. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review infoConfiguration used: defaults Review profile: CHILL Plan: Pro ⛔ Files ignored due to path filters (4)
📒 Files selected for processing (5)
💤 Files with no reviewable changes (1)
📝 WalkthroughWalkthroughThis PR introduces application icon theming support, allowing users to switch between default and dark dock icons. It adds new asset catalogs for dark icon variants, implements AppIconThemeMode settings with migration from legacy AppearanceMode, integrates UI controls in Settings, and wires icon refresh logic into AppDelegate to apply theme changes at runtime. Changes
Sequence Diagram(s)sequenceDiagram
actor User
participant Settings as SettingsView
participant Store as UserDefaults
participant AppDel as AppDelegate
participant NSApp as NSApplication
User->>Settings: Select Dark Icon Theme
Settings->>Store: Update appIconThemeMode
activate Store
Store->>AppDel: Notify via shortcut observer
deactivate Store
AppDel->>AppDel: applyApplicationIconTheme()
AppDel->>AppDel: Load dark icon asset
AppDel->>NSApp: NSApplication.shared.applicationIconImage
NSApp->>NSApp: Update Dock icon display
Note over NSApp: Dark icon now visible in Dock
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Greptile SummaryAdds a dedicated macOS icon selector in Settings, decoupling icon theme from appearance mode. Users can now choose between Default and Dark icons independently of their light/dark theme preference. Key changes:
Confidence Score: 4/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant User
participant SettingsView
participant AppStorage
participant AppDelegate
participant NSApplication
User->>SettingsView: Select icon (Default/Dark)
SettingsView->>AppStorage: Update appIconThemeMode
Note over AppStorage,AppDelegate: Multiple refresh paths trigger icon update
AppStorage->>SettingsView: .onChange fires
SettingsView->>AppDelegate: refreshApplicationIconTheme()
AppStorage->>AppDelegate: UserDefaults.didChangeNotification
AppDelegate->>AppDelegate: applyApplicationIconTheme()
Note over SettingsView,AppDelegate: Also called when appearance changes
AppDelegate->>AppStorage: Read appIconThemeMode
AppDelegate->>AppDelegate: Determine icon (default/dark)
AppDelegate->>NSApplication: Update applicationIconImage
NSApplication-->>User: Icon updates in Dock/Cmd+Tab
Last reviewed commit: 4577c87 |
This PR introduces a dedicated macOS app icon selector in Settings and includes a custom dark icon.
What changed
macOS Iconsetting directly underTheme.DefaultandDark.appIconThemeMode.DockIconDark.imagesetDockIconDefaultPreview.imagesetSidebar Branch Layoutrow.FileDropOverlayViewhit-test diagnostics.Credit
Design credit: custom dark icon by @rogierx.
Validation
xcodebuild -project GhosttyTabs.xcodeproj -scheme cmux -configuration Debug -destination "platform=macOS" -derivedDataPath /tmp/cmux-darkicon-test build✅cmux DEVinstance alongside existing/Applications/cmux.app✅default/dark) does not terminate app ✅Summary by CodeRabbit
Release Notes