Commit graph

1075 commits

Author SHA1 Message Date
Lawrence Chen
c37ace5deb
Cache Swift packages across CI runs (#998)
* Cache Swift packages across CI runs

Add actions/cache for the SPM cloned source packages directory so
subsequent runs skip fetching Sparkle, sentry-cocoa, swift-markdown-ui,
posthog-ios, and NetworkImage from GitHub each time.

- nightly/release: replace the no-op SwiftPM cache step with
  actions/cache + -clonedSourcePackagesDirPath on xcodebuild
- ci/ci-macos-compat/test-e2e: add actions/cache before the existing
  resolve step, stop deleting the cache dir each run

* Include runner in test-e2e cache key

Consistent with ci-macos-compat.yml which uses matrix.os in the key.
2026-03-05 23:26:05 -08:00
Austin Wang
380fc081f5
Merge pull request #987 from manaflow-ai/issue-915-terminal-not-loaded
Refresh background workspace git metadata after external checkout
2026-03-05 23:14:12 -08:00
austinpower1258
0285cd1f51 Address PR review feedback 2026-03-05 23:09:45 -08:00
Lawrence Chen
5041796eb2
Polish feedback help menu copy (#1003) 2026-03-05 22:58:49 -08:00
Lawrence Chen
43f42b730c
Merge pull request #972 from manaflow-ai/task-browser-open-trailing-json-flags
Support trailing browser output flags
2026-03-05 22:39:14 -08:00
Lawrence Chen
ff428a7386
Merge pull request #973 from manaflow-ai/task-browser-goto-snapshot-after-parsing
Fix browser goto snapshot-after parsing
2026-03-05 22:39:10 -08:00
Lawrence Chen
3abec0552e
Merge pull request #986 from manaflow-ai/task-remove-doc-text-tests
Remove invalid docs text inspection tests
2026-03-05 22:39:05 -08:00
Lawrence Chen
e04787789e
Fix markdown panel text click focus (#991)
* Add markdown click regression test

* Fix markdown panel click focus

* Preserve markdown text selection

* Make markdown observer tests deterministic
2026-03-05 22:38:10 -08:00
Lawrence Chen
46e810fef2
Move rectApproximatelyEqual out of #if DEBUG in HostContainerView (#1000)
The function was defined inside a #if DEBUG block but called from
non-DEBUG code, breaking Release builds (nightly CI).
2026-03-05 22:18:48 -08:00
Austin Wang
138ed0e2f0
Merge pull request #990 from manaflow-ai/issue-983-browser-unfocusable-after-cmdr
Fix browser focus after dismissing the command palette by click
2026-03-05 22:17:06 -08:00
Austin Wang
a7cef78725
Revert "Fix notification unread persistence when workspaces regain focus (#971)" (#992)
This reverts commit 5f43a3fc32.
2026-03-05 21:31:13 -08:00
austinpower1258
44910d03e8 fix: preserve browser target lookup on palette dismiss 2026-03-05 21:29:58 -08:00
Austin Wang
15c7c0cc3c
Fix side-docked dev tools resize (#712)
* wip

* Fix side-docked dev tools resize
2026-03-05 21:28:31 -08:00
austinpower1258
ab1ca8130a test: wait for command palette rename field to dismiss 2026-03-05 21:28:25 -08:00
austinpower1258
82d6086d69 fix: restore browser focus on command palette backdrop click 2026-03-05 21:22:22 -08:00
austinpower1258
d1f042c346 test: cover command palette browser click focus restore 2026-03-05 21:22:19 -08:00
Lawrence Chen
dd2eeae503
Stop reload scripts from stealing window focus (#988)
Use `open -g` (background) and remove `osascript activate` calls across
reload.sh, reloadp.sh, and reloads.sh so rebuilds no longer yank focus
away from the active window.
2026-03-05 21:19:08 -08:00
austinpower1258
1291776597 Refresh background workspace git metadata after external checkout 2026-03-05 21:18:04 -08:00
austinpower1258
33af2cd6a4 Add regression test for background workspace git refresh 2026-03-05 21:17:58 -08:00
Lawrence Chen
29054dc709
Add sidebar help menu to footer (#958)
* Add sidebar help menu

* Fix help menu test wiring

* Fix help menu accessibility

* Use native popup for help menu

* Use icon button for sidebar help

* Add feedback composer and feedback API

* Allow preview builds without feedback env

* Tighten feedback upload limits

* Adjust sidebar footer padding

* Tighten sidebar footer spacing

* Add link affordances to help menu

* Polish sidebar feedback composer

* Move feedback icon to trailing edge

* Normalize help menu trailing icon sizes

* Enlarge help menu trailing icons

* Reduce help menu link icon size

* Shrink help menu link arrow

* Reduce help menu link arrow again

* Fix feedback message editor focus

* Add send feedback keyboard shortcut

* Polish feedback launch and delivery
2026-03-05 21:00:42 -08:00
austinpower1258
7af383c3d0 Merge branch 'main' of https://github.com/manaflow-ai/cmux into issue-915-terminal-not-loaded 2026-03-05 20:58:49 -08:00
Lawrence Chen
bb052198e5
Document browser navigation verification loop (#974)
* Document browser navigation verification loop

* Add docs regression test for browser navigation guidance

* Remove invalid docs text inspection test
2026-03-05 20:57:18 -08:00
Lawrence Chen
c58ad84ea0 Remove invalid docs text inspection tests 2026-03-05 20:54:46 -08:00
austinpower1258
990b6ba12a ok 2026-03-05 20:51:51 -08:00
Lawrence Chen
d4e16ae8c8
Add browser js_error recovery guidance (#975)
* Add browser js_error recovery guidance

* Add docs regression test for browser js_error guidance
2026-03-05 20:51:47 -08:00
Lawrence Chen
f3f17cfc38
Fix browser get selector examples (#976)
* Fix browser get selector examples

* Add docs regression test for browser get selector examples
2026-03-05 20:51:30 -08:00
Austin Wang
b848d60b0d
Merge pull request #925 from jleechanorg/fix-split-cwd-inheritance
Fix split CWD inheritance and bash job notification spam
2026-03-05 20:34:25 -08:00
Lawrence Chen
d2ba5eefde
Add regression test commit policy to CLAUDE.md (#982)
Two-commit structure for bug fix PRs: first commit adds the failing
test (CI red), second commit adds the fix (CI green). Proves in the
GitHub PR UI that the test genuinely catches the bug.
2026-03-05 20:09:57 -08:00
Lawrence Chen
0e7daae4a6 Merge remote-tracking branch 'origin/main' into task-browser-open-trailing-json-flags
# Conflicts:
#	CLI/cmux.swift
2026-03-05 20:03:19 -08:00
Lawrence Chen
085e192bca
Add diagnostics for empty browser snapshots (#977) 2026-03-05 20:01:05 -08:00
jleechan
24a8056b49 tests: fix split CWD e2e assertion signal and early aborts 2026-03-05 19:54:30 -08:00
Austin Wang
c5577dd495
Fix flaky CLI socket listener recovery (#952) (#954)
* Harden socket listener health checks and path handling

* Make socket health probe non-blocking

* Address PR feedback for issue 952 recovery guard

* Run issue 952 regression guard without pytest dependency

* Harden socket probe timing and health telemetry

* Handle missing git in issue 952 regression guard

* Address remaining PR 954 review fixes
2026-03-05 19:52:59 -08:00
Lawrence Chen
d99fa96c09
Fix browser screenshot to return image URL (#936)
* Return browser screenshot image URL

* Make screenshot path/url best effort

* cli: omit screenshot png_base64 from json output

* browser wait: fail fast on js errors and include screenshot in help

* browser wait: avoid main-actor default world warning

* tests: scope contentWorld regression check to function signature

* browser screenshot: clean up output handling and tests

* browser wait: resolve snapshot refs in selector waits
2026-03-05 19:09:29 -08:00
Austin Wang
5f43a3fc32
Fix notification unread persistence when workspaces regain focus (#971)
* Fix notification unread persistence on focus

* Address review feedback on notification unread fix
2026-03-05 18:56:03 -08:00
Lawrence Chen
a08ad56244
Prevent agents from building/launching untagged cmux DEV (#979)
Agents were following CLAUDE.md instructions to run bare xcodebuild
without -derivedDataPath, producing untagged cmux DEV.app that shares
the default debug socket and steals window focus.

Replace bare xcodebuild instruction with reload.sh --tag. Replace
E2E/Basic tests sections with a unified testing policy that forbids
local test runs and requires tagged builds.
2026-03-05 18:41:22 -08:00
Lawrence Chen
6347571b7c
Fix Dvorak Cmd+C colliding with notifications shortcut (#762)
* Fix layout-safe command shortcut matching

* Fix unshifted symbol shortcut coercion

* Fix layout handling for hardcoded Cmd shortcuts

* Support Cmd/Ctrl modifier hold shortcut hints

* Address PR shortcut review feedback

* Handle Caps Lock in command shortcut matching

* Address remaining PR shortcut review comments

* Handle Cmd+Ctrl+F control-character fallback

* Tighten shortcut hint hold-delay test

* Expose shortcut hint visibility in settings

* Restore Cmd+digit fallback on symbol-first layouts

* Stabilize shortcut regression coverage

* Align shortcut hint toggle with Cmd/Ctrl behavior

* Restore Claude workflow file

* Match Claude workflow file to main

* Keep shortcut hint hold behavior command-only

* Restore command shortcut fallback when layout data is unavailable

* Preserve command-aware shortcut translation
2026-03-05 18:32:42 -08:00
Lawrence Chen
61792c3caf Fix browser goto snapshot-after parsing 2026-03-05 17:57:05 -08:00
Lawrence Chen
103f80fac2 Support trailing browser output flags 2026-03-05 17:56:37 -08:00
Lawrence Chen
0fb2b414b0
"Claude PR Assistant workflow" (#965) 2026-03-05 17:19:02 -08:00
Lawrence Chen
e49e572505
Fix browser Cmd+F overlay clipping in portal mode (#916)
* Fix browser Cmd+F overlay clipping in portal mode

* Fix browser Cmd+F panel update regression

* Fix browser find overlay lifecycle and focus

* Extract regression test helpers for browser find guards

* Restore new-tab Cmd+F overlay and harden test helper

* Fix browser Cmd+F focus handoff race

* Fix browser Cmd+F focus loss across page load

* Address review feedback on browser find focus guards

* Add Cmd+F pane-switch regression UI tests

* Run Cmd+F pane-switch regressions from existing UI suite

* Restore browser find focus on pane refocus

* Stabilize Cmd+F pane-switch regressions with focus-state recorder

* Make autofocus race UI test wait on deterministic page signal

* Fix cmuxTests WebViewRepresentable init after browser search state param
2026-03-05 15:36:47 -08:00
Austin Wang
9b215eddab
Fix browser portal pane drag routing and uploads (#961) 2026-03-05 15:27:17 -08:00
Austin Wang
6d0c90c8c8
Fix sidebar branch refresh after checkout (issue #666) (#905)
* Fix sidebar branch refresh after checkout

* Fix bash PR probe not refreshing on checkout (PR review feedback)

When HEAD changes (e.g. git checkout), the bash integration now resets
_CMUX_PR_LAST_RUN=0 so the PR probe is forced to re-run immediately.
This matches the zsh integration which already sets _CMUX_PR_FORCE=1
on HEAD change.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 12:45:04 -08:00
Lawrence Chen
1408cbb68c
Flush PostHog hourly active events immediately (#934)
* PostHog: flush hourly active captures immediately

* PostHog: move focus-triggered active tracking off main queue

* Lighten PostHog app focus hot path

* Address review: dedupe PostHog event names
2026-03-05 04:00:04 -08:00
Lawrence Chen
3d6645cb18
Add PR template section for demo videos (#933)
* Add PR template section for demo videos

* Remove PR template author exemption note

* Refine PR template with review trigger checklist
2026-03-05 03:05:35 -08:00
Yuki Yamashina
11197a49c4
Fix startup SIGSEGV: pre-warm locale before SentrySDK.start (#927)
Locale initialization on the main thread (os.locale.ensureLocale /
NSLocale._preferredLanguages) can race with Sentry's background
init thread calling posix.getenv, causing a SIGSEGV and leaving
the SDK disabled.

Related to #836
2026-03-05 03:03:32 -08:00
atani
3a5bd8494c
fix: avoid NSTextView tracking loop in omnibar mouseDown (#928)
* fix: avoid NSTextView tracking loop in omnibar mouseDown (#917)

Replace the synthetic mouseUp timeout workaround with direct cursor
positioning via NSTextView.characterIndexForInsertion(at:). The previous
approach posted a fake mouseUp event via NSApp.postEvent after 3 seconds,
but the NSTextView tracking loop does not always dequeue events from the
application event queue when stuck in an infinite
NSTextLayoutManager.enumerateTextLayoutFragments cycle, so the hang
persisted.

The new approach bypasses super.mouseDown entirely when the field editor
is already active, positioning the cursor (or extending the selection
with Shift+click) without entering the tracking loop. Drag-to-select is
not supported in this code path, but for a single-line omnibar this is
an acceptable trade-off.

* fix: handle double-click, UTF-16 length, and shift-click anchor

Address review feedback:

- Forward double/triple-click events to editor.mouseDown(with:) to
  preserve word and line selection without entering NSTextField's
  tracking loop
- Use (editor.string as NSString).length instead of String.count for
  NSRange clamping (NSRange uses UTF-16 indices)
- Track shift-click anchor independently via shiftClickAnchor property
  to correctly handle bidirectional selection extension

* fix: reset shiftClickAnchor on keyDown to prevent stale anchor

Clear the shift-click selection anchor whenever a key is pressed, so
that keyboard navigation (arrow keys, Shift+arrow, Home/End, etc.)
properly invalidates the mouse-originated anchor. A subsequent
Shift+click will then use the current selection position as anchor
instead of a stale value from a prior mouse interaction.

* fix: reset shiftClickAnchor in performKeyEquivalent and on re-focus

Key equivalents (Cmd+A, Cmd+V, etc.) bypass keyDown and go through
performKeyEquivalent, so the anchor must also be cleared there.
Similarly, re-focusing the field (currentEditor() == nil path) should
reset the anchor since selectAll changes the selection state.
2026-03-05 02:31:23 -08:00
Lawrence Chen
017f4416d0
Prompt bug reporters to test NIGHTLY (#930) 2026-03-05 01:48:09 -08:00
sminamot
bf28f5df4b
Skip Ctrl fast path during IME composition (#790)
During IME composition (e.g. Japanese input), Ctrl+H should delete
composing characters via the IME, not bypass it and send a backspace
directly to the terminal. Add a hasMarkedText() check so the fast path
is only taken when no IME composition is active, letting
interpretKeyEvents() handle the key instead.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 00:24:40 -08:00
jleechan
00b7357fdc Add split CWD inheritance demo GIF
Visual proof of fix: split panes inherit CWD from the source panel.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 22:33:55 -08:00
jleechan
00451417c2 Fix test false positives: verify new pane/tab identity before checking CWD
Address PR review comments:
- Test1: record original panel ID, wait for a *different* panel to report
  the expected CWD — prevents false pass when focus stays on source pane
- Test2: record original tab ID, wait for a *different* tab with the
  expected CWD — prevents false pass when checking the old workspace
- Remove unused `as e` exception bindings (Ruff F841)
- Shell race (set -m) was already fixed in 4402a5b0 via disown

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 22:09:11 -08:00