cmux NEXT iOS: menu rows from the Mac (close tabs left/right, group and all closes, move to top/bottom and sort, remove all colors, collapse groups, retry with another model, diff hunks and search, open address in new tab)
Batch 6 of the iOS parity rule (#25834): small menu rows from slices A, B and C. Everything is phone-side and uses commands already on the lane. There are no mobile-host, relay or acpmux policy changes, and CmuxTabsKit and CmuxConversation are untouched.
Rows
- Close Tabs to the Left / to the Right: in the card and page menus. These are the unpinned tabs before or after the tab in its own pane, as
TabStripModel.closedByCloseToLeftpicks them.close-surfacecloses each one. The phone asks once if one of them is running a program. - Close Other Workspaces in Group, Close All Workspaces: in the row menu's Close folder. Close All in Group and Close Other Groups are in the group header menu. The phone asks first, as the existing bulk closes do. As in the Mac's
closeGroup, a pinned group stays folded and empty and any other group goes (workspace_group.update/.delete), then its workspaces close. Home never closes. - Move Workspace to Top / to Bottom (in a group: Move to Top / Bottom of Group) and Sort Workspaces by Name / Last Used / Directory: these use
set-personal-workspace {index}, one row at a time, as the Mac's sort places rows. Pinned rows keep their order, as on the Mac. - Remove All Workspace Colors: sends
set-workspace-metadata {color: null}for each colored workspace. - Collapse Others, Collapse All Groups, Expand All Groups: in the group menu's Options folder.
- Retry with another model: under the answer's More menu, and beside Retry on a failed turn. It sends
session/set_model, then the prompt again. A Claude chat started on the Mac refuses the change (acpmux D13). The chat then shows acpmux's own words and nothing is sent. - Diff viewer: Next / Previous Hunk and Search in File: a find bar with "N of M" and highlighted matches. Folded context unfolds to show a match.
- Open Address in New Tab: a "New Tab" row while you type in a browser address bar, through TabsKit's existing
editingBackgroundhook. It sendsnew-browser-tab {url, pane}beside the edited tab.
Differences from the Mac, on purpose:
- Remove All Workspace Colors leaves group colors as they are. The lane takes only the nine palette colors for a group, not
none; changing that would need a #13742 decision. - Sort by Last Used sorts by activity time, then by the daemon's focus order. A phone can't see a Mac window's own recency.
Evidence
Real link: the phone app in one headless simulator on mini-cmux11s, connected to the tagged Mac app feat-cmux-next-ios-menu-rows-parity. After each action, the Mac's state was read back from its own daemon and acpmux sockets (cmux-next-ios/verify/parity/pq_rows.py). Each row has a before (base f9c1f4d2) and after (this branch) recording. The HTML report is local to the team.
- Tabs: t1 closed, then t3 and t4.
- Closes: a2 closed, then B's two workspaces, then a1, then every workspace but Home.
- Order: b moved to the top, c to the bottom, then the order became a, b, c, d.
- Colors: none left.
- Collapse: all folded, all opened, then only Y folded.
- Retry: the D13 refusal; the Mac's model and turn count are unchanged.
- Diff: hunk 1, hunk 2, back to hunk 1; "thirty" shows 1 of 1.
- Address: a second browser tab at iana.org.
Tests
- Fleet
cmux-next-ios-sim.sh testat a14e7614: 1417 passed, 0 failed (step 2a7b5c30). The later commits change onlyverify/. - New tests: WorkspaceArrangementTests (group and all closes, Home's closes, personal index next to an anchor, edges, sort keys and steps, move to top/bottom, sort, remove all colors), WorkspaceGroupTests (collapse others/all, closing groups, pinned flag), RetryWithModelTests, DiffNavigationTests, WorkspacesTests (close to the side).
- Not run: XCUITests (none added).
Changelog
Added: cmux NEXT for iPhone: Close Tabs to the Left/Right, more workspace closes, Move to Top/Bottom and Sort, Remove All Workspace Colors, Collapse All/Others, Retry with another model, diff hunk navigation and search, and Open Address in New Tab.
No capture: iOS simulator recordings over the real link are in the batch's proof report (cmux-ci capture covers Mac UI).
š¤ Generated with Claude Code
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Adds the next batch of Mac menu rows to cmux NEXT for iPhone: closing tabs left/right, workspace group and bulk closes, moving and sorting workspaces, removing all workspace colors, collapsing groups, retrying with another model, diff hunk navigation and search, and opening a typed address in a new browser tab.
Everything is phone-side and uses commands already on the lane; no mobile-host, relay, or acpmux policy changes, and CmuxTabsKit and CmuxConversation are untouched.
Behavior notes
- Close Tabs to the Left/Right closes unpinned tabs in the same pane, asking once if one runs a program.
- Retry with another model sends
session/set_modelthen the prompt again; a Claude chat started on the Mac refuses and shows acpmux's reason. - Two deliberate differences from the Mac: Remove All Workspace Colors leaves group colors as they are, and Sort by Last Used uses activity time then daemon focus order.