Repository navigation
cmux NEXT Needs you: a jump opens the waiting chat in its own tab, never replacing the chat on screen - #23849
Conversation
…n place (red) Leo hit it live: a Needs you jump switched the coordinator's pane to another chat with chat.select, replacing the coordinator's chat in its own tab. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd2-60d2-70e1-8179-d3aa717c8828&host=cosmic-gray
|
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)
Passes: CI passes on CI passes on Written by web and size checks: green Gallery before/after for
States
Pick other states with a |
|
Found 2 test failures on Blacksmith runners: Failures
|
|
Bead |
|
Owned by summary-panel on cosmic-gray · session |
…he chat on screen A Needs you jump, answer or side question for another chat switched this pane to that chat in place (chat.select), so Leo's coordinator chat left its own tab while the sidebar still named it. They now ask the app to show that chat's tab, or open one after this tab (chat.asks.open, AgentPaneAskOpen), scoped to chats on the pane's own acpmux on this Mac, which the page could already show in place. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bd2-60d2-70e1-8179-d3aa717c8828&host=cosmic-gray
|
Review (subagent, correctness first): SHIP at c3a7c78 First pass blocked on two exhaustive switches missing the new case (AgentPaneModel.swift header routing, AgentPaneRequest+SafeDescription.swift); both fixed in this head. Second pass: registration, scope check (local acpmux only, never the chat itself, no peer/remote/New Tab), webview timing, held items, this chat's asks and the pill all correct. Known non-blocking gaps: the opened tab does not scroll to the ask; an ask on another machine's chat now does nothing (it used to replace the chat in place). |
|
|
|
Shipped in:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Summary
Leo hit this live, and it froze his coordinator. A Needs you jump (the list, the Needs your input pill, or a row's answer or side question) for another chat switched the pane to that chat in place with
chat.select. huge-blue/directional-motion opened inside the coordinator's pane and replaced that chat, while the sidebar row still said "GUI push · coordinator (this chat)".The rule now: a jump opens the waiting chat in its own tab, or focuses the tab that already shows it. It never replaces the chat on screen.
needsYou/useNeedsYou.ts): for another chat's ask, the jump, the answer and the side question call the new host requestchat.asks.open {sessionId}. None of them callschat.select. An answer or side question for another chat is not sent from this pane, because the relay only answers the chat the pane shows. The row stays in the list, and the person answers in the tab that opens.AgentPaneAskOpen): if a tab already shows that chat, it is shown and focused (showSession, aschat.offer.opendoes). Otherwise the chat opens in a new tab after this one and gets focus (openTab(.tab)).local/id). The page's own client can already show any of those in place, so a tab of one grants nothing more. The request refuses the chat itself, a peer's chat, a pane on another machine, and a New Tab page. A refusal opens nothing and leaves the chat on screen as it is.The sidebar row not following an in-place switch is a separate cause and gets its own PR.
Testing
bun test test/agent-pane-needs-you.test.tsxinwebviews/.web / react-apps-check (1)failed onlytest/agent-pane-needs-you.test.tsx > another chat's ask opens in that chat's own tab; the chat on screen is never replaced(job 119547801106); the jump, answer and side question for another chat calledchat.select:other.chat.asks.open:otherand neverchat.select.AgentPaneAskOpenTestsin CmuxNextAgentPaneTests. It checks:Observed / Not run
No capture: the visible change is that a click opens or focuses a tab instead of swapping the chat in place, and the behavior tests above cover it.
Changelog
🤖 Generated with Claude Code
Agent session: cosmic-gray
Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Fixes the Needs you jump so a jump to another chat opens it in its own tab (or focuses the tab already showing it) instead of swapping the chat in place with
chat.select, which had replaced the coordinator's chat on screen. An answer or side question for another chat is no longer sent from this pane; the row stays and the person answers in the tab that opens.Testing
chat.asks.openand neverchat.select.Written for commit c3a7c78. Summary will update on new commits.