Commit graph

118 commits

Author SHA1 Message Date
Lawrence Chen
8caa5e9c91
Bump version to 0.61.0 (#470) 2026-02-25 02:18:51 -08:00
Lawrence Chen
915c01f9d0 Add ../../Frameworks rpath for bundled cmux cli 2026-02-24 20:47:01 -08:00
Lawrence Chen
93c167ff02 Add Sentry breadcrumbs for claude-hook socket failures 2026-02-24 20:22:38 -08:00
Lawrence Chen
6505f0c504 Fix tab drag blank state and preserve non-custom titles across window drops 2026-02-24 14:36:12 -08:00
Lawrence Chen
78d1a43733 Persist workspace tab colors across session restore 2026-02-23 19:27:32 -08:00
Lawrence Chen
ea33e3adbd Merge remote-tracking branch 'origin/main' into pr-317-session-persistence
# Conflicts:
#	Sources/AppDelegate.swift
2026-02-23 19:20:56 -08:00
Lawrence Chen
53ef6a5f7d
Upgrade Sentry: tracing, breadcrumbs, dSYM upload (#366)
* Upgrade Sentry: tracing, breadcrumbs, dSYM upload

- Enhanced Sentry SDK init with performance tracing (10% sample),
  explicit app hang timeout, stack trace attachment, and HTTP
  failure capture
- Added breadcrumbs for key user actions: workspace switch/create/close,
  split creation, command palette open/close, app focus — these give
  context to hang/crash reports
- Added dSYM upload step to nightly and release CI workflows so hang
  stacks are fully symbolicated (requires SENTRY_AUTH_TOKEN secret)
- Created SentryHelper.swift with lightweight breadcrumb helper

Closes https://github.com/manaflow-ai/cmux/issues/365

* Remove command palette breadcrumbs

Not useful for hang diagnosis — keep only workspace/tab/split/focus
breadcrumbs that correlate with heavy operations.
2026-02-23 17:11:01 -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
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
927b0eb2d1 Implement session persistence pass 1 with multi-window restore 2026-02-22 15:39:59 -08:00
Lawrence Chen
71d087db73
Prepare release v0.60.0 (#283)
Bump version to 0.60.0 (build 72) and add changelog entry
covering all changes since v0.59.0.
2026-02-21 15:09:19 -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
7b2675cd1e
Fix theme initialization to respect configured/system appearance (#161)
* Respect configured appearance before Ghostty initialization

* Apply Ghostty theme colors to cmux titlebar and tab chrome

* Fix builtin theme resolution and tab strip icon contrast

* Alias builtin Solarized names to current Ghostty themes

* Sync tab chrome with active Ghostty theme

* Fix system appearance theme switching for surfaces

* Refresh titlebar on background theme updates

* Refresh split overlay config on appearance change

* Update bonsplit for chrome color review fixes
2026-02-20 04:51:01 -08:00
Lawrence Chen
db66fc4bb0 Stabilize browser portal bounds and log inspector height metrics 2026-02-19 23:19:00 -08:00
Lawrence Chen
463c6baabb
Fix CJK IME input (Korean, Chinese, Japanese) (#125)
* Fix CJK IME input not working (#118)

CJK (Korean, Japanese, Chinese) IME input was completely broken because
cmux never forwarded preedit/composition state to Ghostty's libghostty.

Root causes and fixes:

1. Missing preedit sync: Added syncPreedit() that calls
   ghostty_surface_preedit() to notify Ghostty about IME composition
   text. Called from setMarkedText, unmarkText, and after
   interpretKeyEvents in keyDown.

2. Wrong composing flag: The composing flag on key events now correctly
   accounts for when composition just ended (markedTextBefore was true
   but markedText is now empty), preventing spurious deletions when
   canceling composition.

3. Event interception during IME: Added early exits in
   performKeyEquivalent, the NSWindow swizzle, and the local event
   monitor (handleCustomShortcut) to avoid stealing key events while
   IME has active marked text.

4. IME popup positioning: firstRect(forCharacterRange:) now uses
   ghostty_surface_ime_point() for accurate cursor-relative positioning
   of the IME candidate window.

* Add regression tests for CJK IME composition (#118)

31 tests covering Korean, Japanese, and Chinese IME input scenarios:

- Korean jamo combining: ㅎ -> 하 -> 한 composition lifecycle
- Chinese pinyin: multi-letter marked text and candidate selection
- Japanese hiragana-to-kanji: romaji -> hiragana -> kanji conversion
- insertText correctly commits composed text and clears marked state
- unmarkText properly clears composition state (idempotent)
- performKeyEquivalent returns false during active composition for
  all key types (plain, shift, space, return, escape)
- Shortcut bypass: hasMarkedText gates the handleCustomShortcut bypass
- Multi-syllable sequences, backspace correction, and rapid transitions
- keyTextAccumulator lifecycle tests

Also adds #if DEBUG test accessors for keyTextAccumulator on
GhosttyNSView to enable unit testing the accumulator path.
2026-02-19 22:37:41 -08:00
Lawrence Chen
3972f39e49 Bump version to 0.59.0 2026-02-19 21:29:27 -08:00
Lawrence Chen
9a8e5f9d13 Bump version to 0.58.0 2026-02-19 17:24:10 -08:00
Lawrence Chen
b624c580a7 Bump version to 0.57.0 2026-02-19 16:53:21 -08:00
Lawrence Chen
b2415020ec Bump version to 0.56.0 2026-02-19 04:36:36 -08:00
Lawrence Chen
4f84166e5b Bump version to 0.55.0 2026-02-19 04:25:35 -08:00
Lawrence Chen
9642bb59fc
Move port scanning from shell to app-side with batching (#100)
* Move port scanning from shell to app-side with batching

Replace per-shell `ps -axo + lsof` scanning with a centralized
PortScanner singleton in the app. Each shell now sends lightweight
`report_tty` (once per session) and `ports_kick` (on preexec/precmd)
socket messages. The app coalesces kicks across all panels and runs a
single `ps -t <ttys> + lsof -p <pids>` covering every active panel.

Also fixes a macOS 26 Tahoe regression where `getsockopt(LOCAL_PEERPID)`
returns ENOTCONN on accepted sockets when the peer disconnects before
the handler thread starts. This was silently breaking ALL socket
commands sent via ncat --send-only. The fix captures the peer PID in
the accept loop immediately after accept(), and falls back to
LOCAL_PEERCRED (uid check) when the PID lookup fails.

* Fix PR review feedback: burst timing and auth comment clarity

- P2: burstDelays were accumulating (0.5+1.5+3+... = ~22.5s) instead of
  firing at absolute offsets from burst start. Now uses burstStart anchor
  so scans fire at 0.5s, 1.5s, 3s, 5s, 7.5s, 10s as intended.

- P1: Clarify LOCAL_PEERCRED fallback rationale — same security boundary
  as socket file permissions (0600), does not widen attack surface.
  Long-lived connections still get full descendant check via LOCAL_PEERPID.
2026-02-19 01:04:47 -08:00
Lawrence Chen
e818aa21d7
Bump version to 0.54.0 (#98) 2026-02-18 23:26:56 -08:00
Lawrence Chen
2b026215ca
Bump version to 0.53.0 (#96) 2026-02-18 22:54:26 -08:00
Lawrence Chen
7ac7c37de2
Bump version to 0.52.0 (#95) 2026-02-18 22:34:24 -08:00
Lawrence Chen
d08f28d770
Merge pull request #83 from manaflow-ai/perf/portal-hosting-selected-mount
Reduce terminal input latency via portal hosting + selected-only workspace mounting
2026-02-18 22:31:45 -08:00
Lawrence Chen
75b25217b5
Bump version to 0.51.0 (#94) 2026-02-18 22:11:58 -08:00
Lawrence Chen
442eb1f01d Rename test targets to cmuxTests and cmuxUITests 2026-02-18 21:19:56 -08:00
Austin Wang
0851cff378
Bump version to 0.50.0 (#91)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 21:10:34 -08:00
Lawrence Chen
ed7f6301d0 Improve terminal hosting depth and workspace mount policy 2026-02-18 19:55:41 -08:00
Lawrence Chen
9e3f5830a8
Bump version to 0.49.0 (#84) 2026-02-18 19:54:58 -08:00
Lawrence Chen
fe082cd213
Bump version to 0.48.0 (#80) 2026-02-18 17:56:22 -08:00
Lawrence Chen
2dd4a3c6b2
Bump version to 0.47.0 (#77) 2026-02-18 17:22:46 -08:00
Lawrence Chen
cf0f08f0e2
Bump version to 0.46.0 (#75) 2026-02-18 16:49:22 -08:00
Lawrence Chen
9105ecbf03 Bump version to 0.45.0 2026-02-18 16:27:15 -08:00
Austin Wang
adac50c5b9
Bump version to 0.44.0 (#70)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 14:41:20 -08:00
Lawrence Chen
fdd8029c00 Bump version to 0.43.0 2026-02-18 02:19:30 -08:00
Lawrence Chen
fb93a9f5ef Bump version to 0.42.0 2026-02-18 01:11:18 -08:00
Lawrence Chen
4d6a3f81bf Bump version to 0.41.0 2026-02-17 22:23:12 -08:00
Lawrence Chen
5f314cd6a7 Bump version to 0.40.0 2026-02-17 22:00:47 -08:00
Lawrence Chen
55437871d7 Bump version to 0.39.0 2026-02-17 18:43:23 -08:00
Lawrence Chen
6d6efb6b60 Reversion all 1.x.x to 0.x.x for pre-launch versioning 2026-02-17 18:31:05 -08:00
Lawrence Chen
ee5902de0e Bump version to 1.38.1 2026-02-17 17:14:36 -08:00
austinpower1258
0df1988126 Release v1.38.0 2026-02-17 16:36:15 -08:00
Lawrence Chen
4bf968fd68
Bump version to 1.37.0 (#49) 2026-02-17 15:17:18 -08:00
Lawrence Chen
c2fdd48290
Release v1.36.0 (#47)
* Fix multi-workspace drag/drop, WebView click focus, and add regression tests

- Wire bonsplit isInteractive to workspace active state so inactive
  workspace NSViews are hidden from AppKit event routing
- Add CmuxWebView.mouseDown notification for browser panel focus
  tracking (AppKit delivers clicks to WKWebView, not SwiftUI overlays)
- Add multi-workspace focus regression test covering isHidden fix,
  rapid workspace switching, and browser panel focus routing

* Bump version to 1.36.0
2026-02-17 04:04:29 -08:00
Lawrence Chen
100575a63e Release v1.35.0 (#45) 2026-02-17 03:21:49 -08:00
Austin Wang
0a2ef499b5
Release v1.34.0 (#43)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 16:39:34 -08:00
Lawrence Chen
c876a7689e
Release v1.33.0 (#41)
* Fix menubar lag in production builds caused by hardened runtime

Hardened runtime's library validation was verifying every dylib on load,
causing noticeable UI lag. Add entitlements file with
disable-library-validation to fix while keeping notarization support.

* Bump version to 1.33.0
2026-02-16 03:30:17 -08:00
Lawrence Chen
9067089e61
Bump version to 1.32.0 (#40) 2026-02-16 02:49:10 -08:00
Lawrence Chen
b41331b43d
Release v1.31.0 (#39)
* Bump version to 1.31.0

* remove sidebar-hidden pill test (pill is now sidebar-only)
2026-02-15 21:56:41 -08:00