Repository navigation
cmux-next: agent open --group joins the existing same-named group; a re-homed lane reuses its row - #24162
Conversation
…an hold the row, and a re-homed lane finds its predecessor's row (red) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c6d-a1d2-7fc2-9458-92b8dc48a5f1&host=huge-blue
…d the row; a re-homed lane reuses its predecessor's row Only the first personal group of that name was tried, so a row it could not hold (another organization or machine row) got a new same-named group each time: nine "GUI push · lanes" groups. Now every listed group of that name is tried, and one is made only when none can hold the row. A name that already has a row in that group gets the new session's chat as a tab of that row. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c6d-a1d2-7fc2-9458-92b8dc48a5f1&host=huge-blue
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
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 df74f47 to compare; do not merge until green; see lane-rules |
|
Found 17 test failures on Blacksmith runners: Failures
...and 7 more test failures. View all on Blacksmith: run 39722336930, run 39722337003
|
|
Bead |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c6d-a1d2-7fc2-9458-92b8dc48a5f1&host=huge-blue
…ndow's sidebar (review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c6d-a1d2-7fc2-9458-92b8dc48a5f1&host=huge-blue
|
Review (Codex reviewer): SHIP at 3ed9967 Cross-family review (Codex, high effort), read-only. Earlier rounds found two defects, both fixed:
The reviewer confirmed:
Title-based lane identity is the stated contract. |
|
Shipped in:
|
Conflicts: - MachineRegistry: keep this branch's remoteDaemon(named:)/machine(named:among:) and base's tabColorName(_:badge:) (#24159); both are additive. - AgentSessionWorkspace: base's #24162 group join (any same-named group that can hold the row) and predecessor-row reuse for the local open. The remote adopt now joins its group through base's AgentSessionWorkspace.join, so this branch's duplicate SidebarEdits.group(named:accepting:in:) and joinGroup are removed; AgentBypassBadgeTests checks AgentSessionWorkspace.group instead. - agent_update.rs: keep the shared agent_session_start::is_chief; it now reads tags through base's panic-free JsonFields::field, as base's copy did. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16040-fd0b-7dd0-9487-1a3a198d9f5c&host=cosmic-gray
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Summary
Leo, 2026-10-22: "you also just kept adding them to same-named groups...? this doenst seem rightr"
After the big-red lane re-home, Leo's sidebar had 9 extra "GUI push · lanes" groups, one lane each and some empty. Four lanes (prompt-queue-edit, pane-motion, pr-cards, deeplink-message) each had a second row next to the old one.
agent.openSessionWorkspace(cmux agent open --group, whichacpmux new --groupruns) only tried the first personal group with the requested name. When that group couldn't hold the new row (a different machine row's group, or a group that exists only on the sidebar document), it made a new group with the same name, and did that again for every lane.SidebarEdits.canMoveallows. It makes a new group only when none can hold the row.namealready has a row in that group (a lane re-homed to another machine gets a new session, so a new workspace key), the new session's chat opens as a tab of that row and is selected there. The launcher's key is the tab's creation key, so running the launcher again returns the same tab.Testing
AgentSessionGroupJoinTestsfirst (red: it doesn't compile, becausegroup(named:accepting:in:)andpredecessor(named:inGroup:in:)don't exist yet).cmux-ci compile-check --apppassed on that head. The fleetpackage-test-lanerun ofAgentSessionGroupJoinTestsandNewWorkspaceInGroupTestsis in the comments.Observed / Not run
No capture: the change is which existing group a new row joins; nothing on screen is drawn differently.
Changelog
cmux agent open --groupjoins the existing group of that name instead of making another, and a re-homed agent's chat opens in its existing sidebar row.🤖 Generated with Claude Code
Agent session: huge-blue
Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Fixes
cmux agent open --groupcreating duplicate same-named sidebar groups and duplicate rows for re-homed lanes.agent.openSessionWorkspaceonly tried the first personal group with the requested name. When that group couldn't hold the workspace (another machine's row, or a group existing only on the sidebar document), it created a new group of the same name — repeatedly, leaving nine "GUI push · lanes" groups. It now tries every listed group with that name, in any section and either organization, and joins the first thatSidebarEdits.canMoveallows. A new group is made only when none can hold the row.A re-homed lane's new session gets a new workspace key, so it used to appear as a second row next to its predecessor's. Now, when the requested name already has a row in the group, the chat opens as a tab of that row and is selected there. The predecessor row is looked up in every window's sidebar, since it can be in any of them. The launcher's key becomes the tab's creation key, so running the launcher again returns the same tab. Only this Mac's rows are candidate predecessors, since the chat opens on this Mac's daemon.
Testing
AgentSessionGroupJoinTests, covering group selection across sections and organizations, predecessor-row lookup, and that another machine's row is never a predecessor; the live app re-home path was not dogfooded.Written for commit 3ed9967. Summary will update on new commits.