Commit graph

90 commits

Author SHA1 Message Date
Lawrence Chen
1fa0f2bcb6
Add Open Folder command (Cmd+O) (#656)
* 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>
2026-02-27 16:28:18 -08:00
Lawrence Chen
5a763a8b5e
Rename 'tab color' to 'workspace color' in user-facing strings (#637)
Closes https://github.com/manaflow-ai/cmux/issues/635
2026-02-27 02:43:08 -08:00
Lawrence Chen
e20d692094
Remove duplicate telemetry assignment in resetAllSettings (#611) 2026-02-26 22:14:17 -08:00
Lawrence Chen
fa6a18c753
Add telemetry opt-out setting (#610)
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.
2026-02-26 22:02:29 -08:00
Lawrence Chen
163f8572e4
Replace keychain password storage with file-based storage (#576)
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
2026-02-26 14:29:12 -08:00
Lawrence Chen
62fffc7221 Use command palette flow for workspace rename shortcut 2026-02-25 05:12:49 -08:00
Lawrence Chen
eaabaad3d3
Add Cmd+Option+W to close other pane tabs with confirmation (#475)
* Add Cmd+Option+W close-other-tabs confirmation

* Match close-other-tabs shortcut to Cmd+Option+T
2026-02-25 03:54:51 -08:00
Lawrence Chen
7201dabdfd
Merge pull request #337 from adinvadim/feature/sidebar-pr-metadata
feat: show linked pull request metadata in sidebar
2026-02-24 21:44:27 -08:00
Lawrence Chen
b891a86047 Log settings window show events to debug log 2026-02-24 21:16:06 -08:00
Lawrence Chen
d0ce351856 Route palette settings through Cmd+, add debug logs 2026-02-24 21:15:01 -08:00
Lawrence Chen
cc06fb84e3 Fix command palette Open Settings action routing 2026-02-24 21:07:37 -08:00
Lawrence Chen
109ce43c70 settings: control sidebar PR link open target 2026-02-24 20:59:06 -08:00
Lawrence Chen
f28eb00b31 Merge remote-tracking branch 'origin/main' into feature/sidebar-pr-metadata
# Conflicts:
#	Sources/ContentView.swift
#	Sources/Workspace.swift
2026-02-24 20:49:29 -08:00
Lawrence Chen
f617032ad5 Require launch tag for cmux DEV 2026-02-24 20:39:55 -08:00
Lawrence Chen
513e9aa607 feat(sidebar): add markdown blocks, provider labels, and fine-grained toggles 2026-02-24 20:38:07 -08:00
Lawrence Chen
f2ecb4877b feat(sidebar): add generic metadata rows and commands 2026-02-24 20:19:38 -08:00
Lawrence Chen
6eeca9c5da Merge remote-tracking branch 'origin/main' into pr-317-session-persistence
# Conflicts:
#	Sources/AppDelegate.swift
#	Sources/cmuxApp.swift
2026-02-23 14:58:16 -08:00
Lawrence Chen
2426590e91
Fix terminal focus when window loses key (#359)
* Fix terminal blur when window loses key

* Fix shortcut routing across multiple windows

* Fix shortcut window detection when identifiers change
2026-02-23 05:50:10 -08:00
Lawrence Chen
5d63c5f035
Add command palette (Cmd+Shift+P) (#358)
Implements a VS Code-style command palette with fuzzy search,
workspace/surface switching, rename mode, and keyboard navigation.

Closes https://github.com/manaflow-ai/cmux/issues/133
2026-02-23 03:26:36 -08:00
Lawrence Chen
cd570dbab2 Unify runtime theme reload path and prioritize surface background updates 2026-02-23 01:03:16 -08:00
Lawrence Chen
6f44f17f33 Fix follow-up PR331 settings and split focus regressions 2026-02-22 19:55:06 -08:00
Vadim Kostin
2d454df50f feat(sidebar): show linked pull request metadata 2026-02-23 10:45:36 +08:00
Lawrence Chen
0046b674aa Split open-wrapper interception into its own setting 2026-02-22 18:26:07 -08:00
Lawrence Chen
923c62820f
Move workspace indicator setting into workspace colors (#329) 2026-02-22 17:45:11 -08:00
Lawrence Chen
d496a07a84
Hide new-tab toggles and align dark-mode button styling (#322)
* 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
2026-02-22 17:41:10 -08:00
Lawrence Chen
0105b6256a
Add workspace tab color schemes and debug scheme toggle (#324)
* 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>
2026-02-22 17:30:30 -08:00
Lawrence Chen
07796232d7 Sync customizable shortcuts across menus and tooltips 2026-02-22 16:24:43 -08:00
Lawrence Chen
927b0eb2d1 Implement session persistence pass 1 with multi-window restore 2026-02-22 15:39:59 -08:00
Brian Le
1824d1a8f1
feat(shortcuts): add rename-workspace keybind 2026-02-22 18:38:34 -05:00
Lawrence Chen
18550e5d1f Add expanded socket access modes with password auth
Implements https://github.com/manaflow-ai/cmux/issues/296 with new modes: off, cmuxOnly, automation, password, and allowAll.

Adds keychain-backed password storage, connection-level auth gates (v1 auth + v2 auth.login), settings UX with warning confirmation, CLI --password support, and regression tests.
2026-02-22 00:55:14 -08:00
Lawrence Chen
4c733d4e8e
Add Cmd+Q quit warning with suppression toggle (#295) 2026-02-21 21:53:39 -08:00
Austin Wang
fb2ae855db
Light mode (#258) 2026-02-21 15:39:25 -08:00
Lawrence Chen
ff11ba0309
Enable Claude Code integration by default (#247) 2026-02-21 04:31:00 -08:00
Lawrence Chen
a2c39802d1 Merge origin/main into feat-sidebar-branch-refresh-on-close 2026-02-20 23:36:11 -08:00
Lawrence Chen
12374c4a76
Add Cmd+Shift+T reopen for closed browser panels (#253)
Implements browser-only recently-closed restore stack with capped LIFO behavior and split-placement fallback.

Issue: https://github.com/manaflow-ai/cmux/issues/244
2026-02-20 23:06:49 -08:00
Lawrence Chen
5ca1616bd2 Add vertical sidebar branch layout setting 2026-02-20 22:26:10 -08:00
Lawrence Chen
3603db7547 Gate socket path override by update channel 2026-02-20 22:13:57 -08:00
Lawrence Chen
01313b6c9a Expand default HTTP host allowlist for local dev 2026-02-20 19:55:59 -08:00
Lawrence Chen
c6675c1a88 Clarify optional 0.0.0.0 allowlist usage 2026-02-20 19:49:02 -08:00
Lawrence Chen
3a24c20764 Merge remote-tracking branch 'origin/main' into pr-203-browser-whitelist 2026-02-20 19:46:39 -08:00
Lawrence Chen
a210d77f7f Clarify embedded browser allowlist wording and docs 2026-02-20 19:45:57 -08:00
Lawrence Chen
745c89fba9
Merge pull request #212 from manaflow-ai/issue-171-homebrew-claude-socket-errors
Default Claude Code integration to off
2026-02-20 19:32:30 -08:00
Lawrence Chen
64f6e34e7b Merge origin/main into pr-203-browser-whitelist 2026-02-20 19:10:59 -08:00
Lawrence Chen
a7363a5702 Merge remote-tracking branch 'origin/main' into fix/browser-devtools-shortcuts-pr
# Conflicts:
#	cmuxTests/CmuxWebViewKeyEquivalentTests.swift
2026-02-20 16:41:08 -08:00
Austin Wang
1f3f366294
Fix #205: Add setting to disable workspace auto-reorder on notification (#215)
* 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>
2026-02-20 15:55:31 -08:00
Lawrence Chen
438b7a6a41 Merge remote-tracking branch 'origin/main' into fix/browser-devtools-shortcuts-pr
# Conflicts:
#	Sources/Panels/BrowserPanel.swift
#	Sources/cmuxApp.swift
#	cmuxTests/CmuxWebViewKeyEquivalentTests.swift
#	vendor/bonsplit
2026-02-20 15:48:27 -08:00
Lawrence Chen
c9cafc0806 Merge origin/main into issue-180-http-nonsecure-hosts 2026-02-20 15:27:59 -08:00
Lawrence Chen
834e156556 Make HTTP allowlist helper and save row responsive 2026-02-20 15:20:44 -08:00
Lawrence Chen
df9ba6dcd9
Fix #155: remap-aware bonsplit tooltips + browser split shortcuts (#200)
* Issue #155: remap bonsplit tooltips and add browser split shortcuts

* Fix split button mousedown feedback regression

* Match split button sizing with main
2026-02-20 15:17:00 -08:00
Lawrence Chen
eb6caa5ce5 Default Claude Code integration to off 2026-02-20 15:10:48 -08:00