* Add setting to hide Cmd-hold shortcut hints
* Bump bonsplit for Cmd-hold pane hint toggle
* Document tagged app link format in agent notes
* Disable Ctrl pane hints when hold-hints toggle is off
* Add dark mode app icon variant for macOS Sequoia
Adds dark appearance entries to the AppIcon asset catalog so macOS 15+
automatically shows a dark-background icon when the system is in dark
mode. The chevron gradient and glow are preserved by recompositing the
foreground over a dark background (#1C1C1E).
Includes a generation script (scripts/generate_dark_icon.py) that
derives the dark PNGs from the light originals.
* Add icon picker in Settings and fix dark icon quality
Use the Figma chevron layer (design/cmux-icon-chevron.png) composited
over a dark background for pixel-perfect results, no white halo or
darkened gradient. Falls back to mathematical recomposition if the Figma
layer is missing.
Add an "App Icon" picker to Settings (under Theme) with three visual
options: Automatic (follows system appearance via asset catalog dark
variants on macOS 15+), Light, and Dark. The selection persists via
UserDefaults and is applied on launch in AppDelegate.ensureApplicationIcon.
* Fix dark icon chevron scale to match light icon
The Figma export was ~25% larger than the repo icon. Scale the Figma
chevron layer by 0.80x before compositing so the chevron size matches
exactly between light and dark variants.
* Use enhanced glow for dark icon
Add a soft blue bloom around the chevron on the dark background using
two Gaussian blur passes (wide at r=25 and tight at r=12) composited
at reduced opacity beneath the sharp chevron. Makes the icon pop more
against the dark squircle.
* Honor Ghostty background-opacity across all cmux chrome
Parse background-opacity from Ghostty config and propagate it through
the entire chrome pipeline: bonsplit tab bar (via RRGGBBAA hex),
browser panel/omnibar, titlebar, empty panel, and window background.
Decouple glass effect from sidebar blend mode — bgGlassEnabled now
defaults to false so opacity works independently. Add
GhosttyBackgroundTheme helper for consistent color+opacity resolution
across all UI surfaces.
Fixes https://github.com/manaflow-ai/cmux/issues/263
* Titlebar and chrome opacity matches terminal background-opacity
Use CALayer-level opacity for the titlebar background instead of SwiftUI
Color alpha, matching the terminal's Metal compositing path. Account for
the double alpha stacking in the terminal area (Bonsplit container bg +
Ghostty renderer) so the titlebar visually matches.
Also fix opacity-only config changes not triggering titlebar refresh on
Cmd+Shift+, reload.
* Add "Open Folder…" command to open a workspace at a chosen directory
Adds a native folder picker (NSOpenPanel) accessible from:
- Command Palette (⌘⇧P → "Open Folder…")
- File menu with ⌘O shortcut
Selecting a folder opens a new workspace at that path.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Rename openRepository → openFolder, add customizable shortcut
- Rename command ID from palette.openRepository to palette.openFolder
- Register openFolder in KeyboardShortcutSettings (default: Cmd+O)
- Wire menu bar shortcut through settings instead of hardcoding
- Add commandPaletteShortcutAction mapping for shortcut hint display
* Dismiss command palette before showing Open Folder panel
The NSOpenPanel.runModal() call blocked the main thread, keeping the
command palette visible behind the file picker. Wrapping in
DispatchQueue.main.async lets the palette dismiss first.
* Trigger GitHub PR refresh
---------
Co-authored-by: michalstrnadel <michal.strnadel@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Adds a "Send anonymous telemetry" toggle in Settings that lets users
disable Sentry crash reporting and PostHog analytics. The setting is
frozen at launch so toggling mid-session shows a restart hint. The hint
correctly clears if the user toggles back to the launch-time value.
Moves socket control password from the macOS login keychain to a
plain file at ~/Library/Application Support/cmux/socket-control-password.
This eliminates the system keychain prompt that interrupts users on
first launch or after keychain changes.
- Directory created with 0700, file written with 0600 permissions
- One-time migration copies existing keychain password to the file,
deletes the keychain entry, and records a migration version in
UserDefaults so it runs only once
- CLI SocketPasswordResolver also reads from the file path
- Security framework import is now conditional (#if canImport)
- Adds SocketControlPasswordStoreTests covering round-trip, env
priority, path resolution, and migration behavior
Fixes https://github.com/manaflow-ai/cmux/issues/541
* Hide new-tab browser toggles and align dark-mode button style
* Switch forced dark mode from dimming overlay to dark theme
* Add tri-state browser theme mode for embedded web view
* Hide browser theme menu chevron in toolbar
* Use outline icons for browser theme toggle
* Align browser theme icon tint with DevTools button
* Force monochrome rendering for browser toolbar icons
* Reduce browser theme icon weight for visual parity
* Tune browser theme icon stroke for perceptual color match
* Force flat SF Symbol color rendering for toolbar icons
* Use button popover for browser theme selector
* Add tab color feature to sidebar workspaces
Lets users assign a custom background color to any sidebar workspace tab
via a right-click "Tab Color" submenu. The primary motivation is working
across multiple projects simultaneously — coloring tabs by project makes
it instant to visually locate the right workspace without reading the title.
- Workspace: adds `customColor: String?` (@Published hex string) and
`setCustomColor()` setter
- TabManager: adds `setTabColor(tabId:color:)` convenience method
- ContentView: 16-color dark palette (all luminance < 0.30, white text
always readable), `Color(hex:)` extension, `coloredCircleImage(hex:)`
helper to render bitmapped NSImage circles (needed because macOS menus
strip SwiftUI foregroundColor from SF Symbols), updated `backgroundColor`
to use custom color at full/70%/35% opacity for active/inactive/
multi-selected states, "Tab Color" submenu in context menu with
"Clear Color" option, and a 1.5pt `Color.primary` border overlay on
the active tab for clear selection indication when custom colors are set
* Add workspace tab color schemes with settings and debug toggles
* Remove Kelly scheme and keep only original tab color palette
* Preserve neutral grayscale when brightening tab colors
* Harden UpdatePill UI test polling timeouts
---------
Co-authored-by: Andreas Fruth <andreas.fruth@gmail.com>
* chore(claude-opus-4-6): From HN feedback: https://news.ycombinator.com/item?id=47...
* Centralize workspace auto-reorder into addNotification
Move moveTabToTop into TerminalNotificationStore.addNotification so all
notification paths (Ghostty actions, v2 API, control socket) respect the
reorder-on-notification setting, not just the two Ghostty action sites.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>