Commit graph

151 commits

Author SHA1 Message Date
Lawrence Chen
dca8992901
Fix use-after-free in ghostty_surface_refresh after sleep/wake (#432) (#619)
Add nil guard in forceRefresh() to prevent dereferencing freed surface
pointer. Split else-if chains in Workspace.swift so
requestBackgroundSurfaceStartIfNeeded() runs if surface is freed during
the refresh call. Add regression test exercising the crash path.
2026-02-27 01:44:02 -08:00
Lawrence Chen
2202044af4
Fix drag-handle crash on launch from stale foreign-window events (#490) (#620)
Add window-identity check to windowDragHandleShouldCaptureHit so stale
leftMouseDown events from other apps (Finder, Dock) during launch don't
trigger the SwiftUI hierarchy walk while initial layout is mutating.
Add NSLock to breadcrumb limiter for thread safety. Update existing
tests to pass eventWindow for window-attached drag handles.
2026-02-27 01:42:17 -08:00
Lawrence Chen
e14c5a383f
Add Tower to command palette Open Directory targets (#627) 2026-02-27 00:42:42 -08:00
Austin Wang
0c5ffd7f5a
Merge pull request #567 from manaflow-ai/fix/issue-490-launch-crash-drag-handle
Fix crash on launch: exclusive access violation in drag handle hit test
2026-02-26 15:06:37 -08:00
Lawrence Chen
780f959a48
Fix equalize splits to recursively set all dividers to 0.5 (#575)
The equalize splits command was a no-op that always returned false.
Implement it by recursively walking the bonsplit tree and setting
every split divider position to 0.5. Also register the command in
the command palette with a "workspace has splits" precondition so
it only appears when there are multiple panes.

Adds a regression test that creates a nested split layout, skews
divider positions, equalizes, and verifies all dividers are at 0.5.

Fixes https://github.com/manaflow-ai/cmux/issues/571
2026-02-26 14:27:18 -08:00
austinpower1258
1217ba3295 Fix crash on launch: exclusive access violation in drag handle hit test (#490)
During app launch, mouseMoved events can trigger hitTest on the drag
handle while SwiftUI is still modifying view state in a layout pass.
The previous blacklist approach (only deferring mouseMoved, cursorUpdate,
nil) let unexpected event types slip through — e.g. activation events
where NSApp.currentEvent is not the mouseMoved being routed — causing
contentView.hitTest() to re-enter SwiftUI views and trigger an exclusive
access violation.

Switch to a whitelist: only leftMouseDown (the sole event the drag
handle actually handles) proceeds with the full view-hierarchy walk.
All other event types bail out immediately. The deferred-event check
runs after suppression recovery (which uses only ObjC associated-object
calls, safe from Swift exclusivity) so stale suppression is still
cleared on passive events, but before the view-hierarchy walk that
triggered the crash.

Fixes #490

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 14:04:46 -08:00
Lawrence Chen
fab2b8611d
Switch fullscreen shortcut to Cmd+Ctrl+F (#530) 2026-02-25 19:42:21 -08:00
Lawrence Chen
ede4e2fc99 Add Cmd+Enter shortcut to toggle fullscreen 2026-02-25 18:26:29 -08:00
Lawrence Chen
f38bc3b775
Move LaunchServices bundle registration off main thread (#513)
Fixes CMUXTERM-MACOS-DS
2026-02-25 18:02:00 -08:00
Lawrence Chen
930a6b5bc9
Use sheet modal for insecure HTTP warning prompt (#511)
Fixes CMUXTERM-MACOS-DD
2026-02-25 18:00:45 -08:00
Lawrence Chen
c3c89a80b9 Treat nil drag-handle hit-test events as passive
Refs CMUXTERM-MACOS-AF

Refs CMUXTERM-MACOS-A8
2026-02-25 17:13:56 -08:00
Lawrence Chen
f82dfa34e9 Avoid drag-handle key exclusivity conflicts
Fixes CMUXTERM-MACOS-CV
2026-02-25 16:56:54 -08:00
Lawrence Chen
4fe6006007 Cache sidebar drop UTTypes and hint width metrics
Fixes CMUXTERM-MACOS-GA

Fixes CMUXTERM-MACOS-JG
2026-02-25 16:39:09 -08:00
Lawrence Chen
0483526c39
Merge pull request #502 from manaflow-ai/cmux/crash-issues
Crash requests
2026-02-25 16:18:05 -08:00
Lawrence Chen
baee7c6e85 Harden Sentry crash guards and reduce noisy events 2026-02-25 16:13:31 -08:00
austinpower1258
e8d0fd68ba ok 2026-02-25 16:10:58 -08:00
Lawrence Chen
8956d1ee7e reuse portal installation target during anchor synchronizes 2026-02-25 16:06:41 -08:00
Lawrence Chen
9140371fcd guard devtools restore from unsafe first-responder churn 2026-02-25 15:59:49 -08:00
Lawrence Chen
7b7745caa0 avoid command palette overlay subview scans on each update 2026-02-25 15:49:25 -08:00
Lawrence Chen
877f862b4a Fix NotificationDockBadgeTests rebase merge syntax 2026-02-25 14:53:09 -08:00
Lawrence Chen
bda77f1673 Optimize notification lookups with indexed store paths 2026-02-25 14:51:43 -08:00
Lawrence Chen
564ba3ae2e Use non-blocking notification settings prompt 2026-02-25 14:04:29 -08:00
Lawrence Chen
575b53526c Restore safe webview resolution for field-editor responders 2026-02-25 13:39:22 -08:00
Lawrence Chen
0164c870f1 Harden Sentry guards for 0.61.0 issue burst 2026-02-25 13:24:20 -08:00
Lawrence Chen
ea57786e18 Fix drag-handle top-hit reentrancy guard scoping 2026-02-25 13:10:28 -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
b84c0539c9 browser: reuse top-right pane for sidebar PR opens 2026-02-24 21:36:10 -08:00
Lawrence Chen
84d07931a5 sidebar: dedupe PR rows by normalized URL identity 2026-02-24 21:24:49 -08:00
Lawrence Chen
afeec2d324 sidebar: open PR links in right split for target workspace 2026-02-24 21:14:57 -08:00
Lawrence Chen
109ce43c70 settings: control sidebar PR link open target 2026-02-24 20:59:06 -08:00
Lawrence Chen
023d7759ac sidebar: render pull requests as per-line rows 2026-02-24 20:55:44 -08:00
austinpower1258
7610e586b7 Browser download: keep logs debug-only and harden menu fallback 2026-02-24 20:53:12 -08:00
Lawrence Chen
7ee3831eb5
Merge pull request #317 from manaflow-ai/issue-143-session-persistence
Implement session persistence pass 1 (windows/workspaces/scrollback)
2026-02-24 15:25:46 -08:00
Lawrence Chen
e8477131c1 Merge origin/main into issue-143-session-persistence 2026-02-24 14:41:27 -08:00
austinpower1258
d255942f92 wip 2026-02-24 14:36:13 -08:00
austinpower1258
ab1368828b Fix browser Return/Enter routing and add enter trace logs 2026-02-24 14:36:13 -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
afbfb5a117 Use native WebKit middle-click handling for browser links (#416)
* Add middle-click debug logging for browser links

* Handle browser middle-click via native WebKit actions

* Fix flaky middle-click new-tab detection in browser
2026-02-24 14:35:10 -08:00
Lawrence Chen
bcd024d8f8 Keep focus on destination after cross-window surface move 2026-02-24 14:35:09 -08:00
Lawrence Chen
b0b73e8878 Prevent stale host visibility thrash after tab move 2026-02-24 14:35:09 -08:00
Lawrence Chen
58376c3fbc Handle moving the last surface out of a window 2026-02-24 14:35:09 -08:00
Lawrence Chen
e0e66a69cc Fix light-mode typing indicator contrast in active sidebar 2026-02-24 14:35:09 -08:00
Lawrence Chen
9953fa58d9 Fix light-mode sidebar typing indicator contrast 2026-02-24 14:35:09 -08:00
Lawrence Chen
92d558cb95 Refine command palette focus restore and shortcut gating 2026-02-24 14:35:09 -08:00
Lawrence Chen
b892d15d58 Fix omnibar focus thrash when another text field takes focus 2026-02-24 14:35:09 -08:00
Lawrence Chen
06cd25ed52 Fix session restore routing and browser history persistence 2026-02-24 14:34:55 -08:00
Lawrence Chen
aa222dbc0d Sidebar double-click appends workspace to end 2026-02-24 14:32:56 -08:00
Lawrence Chen
aeda5f827d Adopt custom blue accent across active UI states 2026-02-24 14:22:58 -08:00
Lawrence Chen
2338760186 Set selected sidebar workspace colors and white text 2026-02-24 14:12:15 -08:00
austinpower1258
5dc2d8d800 wip 2026-02-24 13:54:52 -08:00