Commit graph

605 commits

Author SHA1 Message Date
Lawrence Chen
4e172abb66 Update bonsplit for selected-tab separator fix 2026-02-22 20:03:39 -08:00
Lawrence Chen
d31cbb7123 Use gray separator borders and drop active-tab bottom border 2026-02-22 20:01:37 -08:00
Lawrence Chen
283b898307 Match bonsplit border styling to Ghostty split divider color 2026-02-22 19:57:46 -08:00
Lawrence Chen
1d71303d18
Merge pull request #331 from manaflow-ai/task-307-configurable-open-wrapper
Respect open-wrapper browser settings and preserve PR 307 history
2026-02-22 19:38:17 -08:00
Lawrence Chen
4fd669d76e Guard NSWindow responder against unfocused webview descendants 2026-02-22 19:34:07 -08:00
Lawrence Chen
a369cf4419 Prevent background webview autofocus from stealing focus 2026-02-22 19:13:15 -08:00
Lawrence Chen
0dbe95b797 Reassert non-focus split focus after delayed callbacks 2026-02-22 19:04:57 -08:00
Lawrence Chen
4ee6640e35 Preserve terminal focus for non-focus split opens 2026-02-22 18:50:01 -08:00
Lawrence Chen
5697f71fc6
Merge pull request #335 from manaflow-ai/task-browser-omnibar-squircle
Ensure browser omnibar uses squircle styling
2026-02-22 18:39:03 -08:00
Lawrence Chen
3afa345f3a Harden open wrapper for Bash 3 and IDN host parity 2026-02-22 18:38:37 -08:00
Lawrence Chen
af2b276e98 Make browser omnibar squircle 2026-02-22 18:36:27 -08:00
Lawrence Chen
0046b674aa Split open-wrapper interception into its own setting 2026-02-22 18:26:07 -08:00
Lawrence Chen
8c149428c3
Set default workspace indicator style to left rail (#332) 2026-02-22 18:25:07 -08:00
Lawrence Chen
2428ae5dbd Respect browser link settings in open wrapper 2026-02-22 18:13:14 -08:00
sugakoji
f104dbc37f Fix double-open on partial failure with multiple URLs
When multiple URLs were passed and some succeeded but others failed,
the fallback re-opened all URLs via /usr/bin/open, causing duplicates.
Now only failed URLs are passed to the system open fallback.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 3790b0c0f0b98286b78f6f5aa8dbc9756cf756e8)
2026-02-22 18:05:43 -08:00
sugakoji
2c1fd1f801 Add open wrapper to route URLs to embedded browser
When running `open https://...` inside a cmux terminal, the URL now
opens in the built-in browser panel instead of the system default
browser. Non-URL arguments and explicit flags pass through to
/usr/bin/open unchanged.

Closes #306

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 174623776eb0baef04f5a9ab49b926427c149acd)
2026-02-22 18:05:43 -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
c5c27b678f
Merge pull request #328 from manaflow-ai/task-window-local-shortcut-hints
Fix pane shortcut hints leaking across windows
2026-02-22 17:28:33 -08:00
Lawrence Chen
b7d49228b7 Fix pane shortcut hints to active window 2026-02-22 17:19:38 -08:00
Lawrence Chen
018554cc47
Fix theme toggle using system preference instead of selected theme (#326)
Tailwind v4 defaults dark: utilities to @media (prefers-color-scheme)
strategy. Add @custom-variant to use class-based dark mode matching
the next-themes ThemeProvider attribute="class" configuration.

Fixes https://github.com/manaflow-ai/cmux/issues/325
2026-02-22 17:10:11 -08:00
Lawrence Chen
1bc3edf75f
Merge pull request #321 from manaflow-ai/pr-316-head
Follow-up: sync customizable workspace shortcuts across UI
2026-02-22 17:04:07 -08:00
Lawrence Chen
c51a5bf7cf
Merge pull request #316 from 0xble/feat/rename-workspace-keybind
Add keyboard shortcut to rename current workspace
2026-02-22 17:00:19 -08:00
Lawrence Chen
61e4ad9f94 Annotate jump-to-unread shortcut in notifications view 2026-02-22 16:58:24 -08:00
Lawrence Chen
ebc1422c55
Merge pull request #323 from manaflow-ai/feat-cmdf-overlay-retain-cycle-fix
Fix terminal find overlay retain cycle
2026-02-22 16:35:58 -08:00
Lawrence Chen
72791f32bc Break terminal find overlay retain cycle 2026-02-22 16:29:35 -08:00
Lawrence Chen
26d44e84da
Fix changelog page rendering markdown links as raw text (#320)
The InlineCode component only handled backtick code spans but ignored
markdown links, causing PR/issue references to display as raw
[#N](url) text instead of clickable links. Rename to InlineMarkdown
and add link parsing to the split regex.
2026-02-22 16:24:59 -08:00
Lawrence Chen
07796232d7 Sync customizable shortcuts across menus and tooltips 2026-02-22 16:24:43 -08:00
Lawrence Chen
146de6030e
Merge pull request #313 from manaflow-ai/feat-terminal-find-overlay-portal
Fix terminal Cmd+F overlay visibility regression and add layering guardrails
2026-02-22 16:22:36 -08:00
Lawrence Chen
716a97420c
Add contributor credits to release skills (#319)
Release changelogs now credit contributors inline (Bun-style):
- Per-entry "thanks @user!" for community code contributions
- Per-entry "thanks @user for the report!" for bug reporters
- "Thanks to N contributors!" summary section at bottom of each release
- Core team (lawrencecchen, austinywang) excluded from per-entry callouts
2026-02-22 16:18:44 -08:00
Lawrence Chen
8cbb7ea119 Remove terminal overlay static contract CI check 2026-02-22 16:18:03 -08:00
Lawrence Chen
f7457055f1
Add sidebar metadata CLI subcommands and API docs (#305)
* Add sidebar metadata CLI subcommands and API docs

Expose set-status, clear-status, list-status, set-progress,
clear-progress, log, clear-log, list-log, and sidebar-state as
proper CLI subcommands with --help support and usage() listing.
Previously these only existed as raw socket commands.

Also adds a "Sidebar metadata commands" section to the docs site
API reference page.

* Quote multi-word values in socket command strings

Fix set-progress --label and log message forwarding to properly
quote values before sending to the socket tokenizer. Without
quoting, multi-word labels like "Build step one" would be split
into separate tokens. Also quote --source values for consistency.

* Fix socket quoting: escape backslashes and quote status values

Add socketQuote() helper that escapes both backslashes and double
quotes before wrapping in quotes. Apply it to:
- set-status value (prevents --flags in values being parsed as options)
- set-status --icon and --color values
- set-progress --label
- log --source and message text

Fixes values like "pytest --maxfail=1" or "C:\new\build" being
mangled by the socket tokenizer.

* Escape newlines in socketQuote to prevent socket framing breakage

The socket protocol uses newline as message terminator, so embedded
newlines/carriage returns in values would truncate the command.

* Parse flags before positionals in set-status, clear-status, set-progress

Fixes flags-first invocation like `cmux set-status --workspace workspace:2
build compiling` which previously grabbed `--workspace` as the key.
Now all flags are extracted first, then positional args are validated.
2026-02-22 16:06:32 -08:00
Brian Le
1824d1a8f1
feat(shortcuts): add rename-workspace keybind 2026-02-22 18:38:34 -05:00
Lawrence Chen
6d64ca938e
Add Reddit testimonial from u/afruth to wall of love (#314) 2026-02-22 15:37:22 -08:00
Lawrence Chen
34b203db3c
Merge pull request #312 from manaflow-ai/issue-310-cmd-plus-minus-zoom
Fix Cmd +/- browser zoom shortcuts
2026-02-22 15:34:44 -08:00
Lawrence Chen
04073f1fd8 Route terminal Cmd zoom shortcuts to Ghostty 2026-02-22 15:32:43 -08:00
Lawrence Chen
f366fb0b00 Fix terminal Cmd+F overlay layering and add regression guardrails 2026-02-22 15:25:30 -08:00
Lawrence Chen
d69bd66588 Fix Cmd +/- browser zoom shortcut matching 2026-02-22 15:13:49 -08:00
Lawrence Chen
1809b06867
Add Nick Schrock testimonial and subtitles to wall of love (#297)
* Add Nick Schrock testimonial and subtitles to wall of love

- Add Nick Schrock (@schrockn, Dagster Labs founder, GraphQL co-creator) testimonial
- Add subtitle field for notable contributors (Mitchell Hashimoto, Nick Schrock)
- Render subtitle in TestimonialCard between name and handle

* Add Nick Schrock profile photo

* Download avatar images to repo instead of hotlinking

* Show subtitle after name in attribution lines
2026-02-22 01:48:29 -08:00
Lawrence Chen
4ca14ea028
Merge pull request #299 from manaflow-ai/issue-296-access-control-modes
Add socket access control modes including password + full open access
2026-02-22 01:42:54 -08:00
Lawrence Chen
c7f10a7c44 Merge remote-tracking branch 'origin/main' into issue-296-access-control-modes 2026-02-22 01:37:45 -08:00
Lawrence Chen
ea87076fe4 Fix CLI exit code on v1 auth errors 2026-02-22 01:37:42 -08:00
Lawrence Chen
61c0cd0165
Merge pull request #300 from manaflow-ai/task-browser-view-open-link-default-browser
Browser View: add right-click open link in default browser
2026-02-22 01:26:53 -08:00
Lawrence Chen
959b5a849f Browser view: add context menu action to open link in default browser 2026-02-22 01:15:58 -08:00
Lawrence Chen
a205028b2e Strengthen socket access integration coverage
Make tests/test_socket_access.py deterministic across environments and add password-mode auth integration checks (v1 and v2).
2026-02-22 01:08:25 -08:00
Lawrence Chen
a168182f54 Merge remote-tracking branch 'origin/main' into issue-296-access-control-modes
# Conflicts:
#	CLI/cmux.swift
2026-02-22 01:01:08 -08: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
57efdbd254
Merge pull request #298 from manaflow-ai/task-cmux-version-command
Add cmux --version command with regression test
2026-02-22 00:39:29 -08:00
Lawrence Chen
f184f882c0 Add CLI --version output and regression test 2026-02-22 00:16:01 -08:00