Repository navigation
cmux-next: the Priority view jumps to the chat's own workspace instead of taking over this one - #23926
Conversation
…(failing) The sidebar's Priority view sends every pick through `DeepLink(.session(id))`, which opens the chat in the active window's focused pane. `AgentActivityLane.workspaceID` — the workspace acpmux bound the session to — is read nowhere in the app, so picking a lane that belongs elsewhere replaces what the person is looking at. This makes the choice a value, `AgentChatJump`, with today's behaviour, and adds the test for the case it gets wrong. `aChatBoundToAnotherWorkspaceOpensInThatWorkspace` fails here; the next commit makes it pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cad-cadc-7a92-8dc0-fb5d2028dd67&host=big-red
A pick now goes where the chat lives: the tab already showing it, else the workspace acpmux bound the session to (`AgentActivityLane.workspaceID`, read nowhere until now), else the focused pane as before. Showing that workspace first means the jump no longer drops the chat into the pane the person is looking at, and `locationTrail.noteJump()` makes the next settled location its own step, so Back leaves the chat again. Leo 2026-10-21: it "would softlock me bc it doesnt jump to another workspace it overrides this workspace". `AgentChatJumpTests.aChatBoundToAnotherWorkspaceOpensInThatWorkspace` passes here. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cad-cadc-7a92-8dc0-fb5d2028dd67&host=big-red
|
Owned by deeplink-message on cosmic-gray · session |
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on 04b4a4c to compare; do not merge until green; see lane-rules Tour of The path-selected recorder failed for core-after, core-before; see the run artifact and failed manifests. Path-selected interactions
Core UI (before): FAILED — 16 ok, 3 failed, 1 unavailable
Failed steps: 5. Split right Screenshots (12)1. Launch
Failed steps: 5. Split right Screenshots (12)1. Launch Tours are data in |
|
Found 11 test failures on Blacksmith runners: Failures
...and 1 more test failures. View all on Blacksmith
|
|
Bead |
… pane (failing) The window can show the chat's workspace before that workspace's panes mount; the jump then refused with "no pane" and the chat never opened (Codex review of #23926). AgentChatJump.PaneWait makes the next step a value; this stub keeps today's behaviour, so aWorkspaceWithNoPaneYetWaitsForOne and theWaitEndsWhenTheWindowLeavesTheWorkspace fail here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16162-34d8-7600-bebd-e4685dbb2aa6&host=cosmic-gray
…e's first pane mounts When the window showed the chat's workspace before that workspace's panes mounted, the jump refused with "no pane" and the chat never opened (Codex review of #23926). It now waits on PaneMounts (the Cmd-I pattern) and opens the chat in the first pane. The wait stops when a pane mounts, when the window closes or shows another workspace, or when the next pick cancels it; a workspace that mounts after a newer pick opens nothing. AgentChatJumpTests.aWorkspaceWithNoPaneYetWaitsForOne and theWaitEndsWhenTheWindowLeavesTheWorkspace pass here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16162-34d8-7600-bebd-e4685dbb2aa6&host=cosmic-gray
|
|
… closes or shows another workspace The wait read only PaneMounts, which neither closing the window nor switching to an already-mounted workspace changes, so it could outlive both and open the old chat later (Codex re-review of #23926). It now also reads the window's registry entry and its selected workspace, both observable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16162-34d8-7600-bebd-e4685dbb2aa6&host=cosmic-gray
|
|
A closed window stays in the registry with isOpen false, so the wait read it as still open and could open the abandoned chat when the window came back (Codex review of #23926 at a41661e). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16162-34d8-7600-bebd-e4685dbb2aa6&host=cosmic-gray
|
Review (codex gpt-6.1-sol): SHIP at 05fed35 Independent Codex review at xhigh (acpmux on cmux16), read-only. Three rounds: it blocked on a lost open when no pane had mounted yet (fixed in d33da03), a wait that outlived a window close or a switch to an already-mounted workspace (fixed in a41661e), and a closed window still counting as open (fixed in 05fed35). Final: "No blocking findings. AgentActivityPageService.swift:92 now checks isOpen, so closing a retained window produces .stop and ends the wait." No build or tests by the reviewer. Fleet |
|
|
|
|
|
|
|
|
|
|
Head
|
Review (Explore): SHIP at cc5e0e1An independent subagent reviewed this exact head, reading the real definitions rather than
Gates it ran on Linux: Follow-ups it raised, none blocking, for their own PR
Two notes on the gates themselves
🤖 Generated with Claude Code |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/39787368484 at 3b9c520 failed: cmux-next fast tier. |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/39788190928 at 0105692 failed: cmux-next fast tier. |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/39788910738 at e70f2c3 failed: cmux-next fast tier. |
|
Shipped in:
|
|
Shipped in:
|
































![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
The sidebar's Priority view sent every pick through
DeepLink(.session(id)), which opens the chatin the active window's focused pane.
AgentActivityLane.workspaceID— the workspace acpmuxbound that session to (
_meta.acpmux.workspaceId) — was assigned inAgentActivityLane.of(summary:)and read nowhere in the app. So picking a lane that belongs to another workspace took over the
workspace the person was looking at, and nothing recorded the jump, so Back did not bring them back.
A pick now goes where the chat lives:
(
windows.reveal(workspaceID:), the palette's own switcher path), then the chat opens in a panethere — waiting for that workspace's first pane to mount, and giving up if the window closes or
moves on;
locationTrail.noteJump()now runs for every pick, so the next settled location is its own trailstep even within one workspace and Back leaves the chat again — the softlock.
The choice itself is a value,
AgentChatJump(with a nestedPaneWait), so it is covered withoutthe app's services.
Leo-ask: ask-6d920c42d9
This PR is the first two complaints, which have one cause. The third ("the UI/UX is just bad all
around") is not specific enough to guess a redesign from; it is back with Leo for specifics rather
than reinterpreted here.
Proof
Red before green, each failing test committed before its fix:
529a0cca593fAgentChatJumpTestswith today's behaviour extracted verbatim —aChatBoundToAnotherWorkspaceOpensInThatWorkspacefails1461ef7f8d6bf5ea284acc64aWorkspaceWithNoPaneYetWaitsForOnefails (the jump gave up with "no pane")d33da039de6c,a41661eba13c,05fed352d857The red commits extract the shipped behaviour rather than stubbing it, so each failure is the real
bug.
The focused command could not be executed on the fleet.
scripts/ci/package-test-lane.sh suite Packages/macOS/CmuxNext AgentChatJumpTestscallsensure_web_bundlesunconditionally for thatpackage, and the web bundles do not build on base:
gen-strings.mjsfails on 48 missingtranslations for base's own
settings.sidebar.stylekeys. Both runs (at529a0cca593fand at thehead) stopped there with
error: the cmux-next web bundles did not build, onaws-m4pro-8, beforereaching a single test. That blocks every lane's CmuxNext Swift suite right now, not just this one;
it is written up with evidence in a comment below and wants its own PR.
What did execute on this head:
cmux-next app compile (build fleet)passes, andcmux-next fast tierpasses — that lane runsswift build --build-tests, so the new test file and the newsource both compile.
package-conventions-lintpasses here while it is red at base tip.Changelog
Fixed: Picking a chat in the sidebar's Priority view switches to that chat's own workspace instead
of taking over the one on screen, and Back returns to where you were.
Observed / Not run
Observed, on this head:
cmux-next app compile (build fleet)green;cmux-next fast tiergreen;scripts/cmux-next/prepush-gate.py— no new violations;./scripts/lint-ios-package-conventions.sh— the one ERROR it prints(
CmuxNextPages/AppsPageNativeOps.swift:3) reproduces identically in a clean worktree at base tip123a1ec9d794d, and that file is byte-identical to base here.Not run: no Swift compile or test locally — this is a Linux host and agents do not build the Mac app
on a person's Mac. The
AgentChatJumpTestssuite has not been executed anywhere, for the basereason above; the review of these three files rests on reading and hand-tracing plus the two green
compile lanes. All five CI reds on this head are base findings, each reproduced at base tip or red
on base tip's own run (see the comment below).
No capture: this changes which workspace a jump lands in, not how anything is drawn — there is no
visual difference to capture, and the
AgentChatJumpTestscases state the behaviour.🤖 Generated with Claude Code
Agent session: big-red