Skip to content

cmux-next sidebar: the Chief's workspaces read like any workspace (no aN id, no Chief line) - #23391

Merged
teamleaderleo merged 3 commits into
feat-cmux-nextfrom
chief-sidebar-2/chief-rows-normal
Oct 21, 2026
Merged

teamleaderleo merged 3 commits into
feat-cmux-nextfrom
chief-sidebar-2/chief-rows-normal

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The workspaces the Chief opens for its subagents now look like any other workspace in the cmux NEXT sidebar. This is part 1 of Leo's ask from 2026-10-21. The row shows the task title on one line, with no a14 · id and no "Chief" second line. Who started it moves into the hover card.

Why

Leo's screenshot showed rows like "a14 · Native workflows runtime", with a second line reading "Chief" or "Chief · ~/Projects/cmux". He asked for:

  1. the title only, rendered like any row, with "Started by Chief" in the hover card and the context menu;
  2. one "Chief" group;
  3. the aN ids never shown in the UI.

Where those came from:

  • The id: optchat-chief named each workspace format!("{id} · {title}") (workspaces.rs).
  • The second line: it isn't Chief-specific. In the one-list sidebar, every non-local machine's rows name their machine on the second line (SidebarLayout.machineLabel). The Chief owner daemon is such a machine, named "Chief". With a machine label, the row also shows its folder, which is where "Chief · ~/Projects/cmux" came from.

What changes

  • optchat-chief: a subagent's workspace is named by its task's short title only (workspaces::title). The aN id stays the Chief's own: status lines and the agents list still print it, and the prompt no longer says the workspace is named aN · <title>.
  • Sidebar rows:
    • Rows on the local Chief machine (MachineID.isLocalChief, i.e. server-host_chief…) drop the a<digits> · prefix an older Chief wrote (ChiefWorkspaceName.taskTitle, which AgentChatTabTitle.taskName now shares).
    • The local Chief machine gets no one-list second line, so its rows match this Mac's rows.
  • Hover card: the machine line on those rows reads "Started by Chief", keeping the connection dot.
  • Chief sidebar item (cmux-next sidebar: an optional Chief item with its status and its subagents under it #22759): its subagent rows show the task title, or "Subagent" when the chat has none. They no longer show a3 / a10 · Inspector.
  • Strings: sidebar.hover.startedByChief and chief.subagent.untitled, in all 21 languages.

Not in this PR

  • One "Chief" group (point 2) and the "Started by Chief" context menu line: a follow-up.
    • The Chief's rows aren't in "Codex". They sit loose at the end of the Chief machine's own section, which has no header in one-list mode, so they draw right after the last local group (Codex in Leo's sidebar).
    • The follow-up gives that section one collapsible Chief group.
  • Other source-specific labels: I found no other source-specific text labels in row rendering. Codex and lanes only show their brand glyph.

Testing

No capture: every visible change applies only to rows on the local Chief owner daemon's machine (server-host_chief…) and to the Chief item's subagent rows. A capture slot runs the app with its own HOME and no Chief home, so neither exists there, and a capture would show an unchanged sidebar. ChiefWorkspaceRowsTests and ChiefSidebarItemTests cover the row title, the missing machine line, the hover card line and the subagent rows.

  • New ChiefWorkspaceRowsTests:
    • the machine-id rule matches ServerReach.localChief;
    • the prefix strip only touches a<digits> · ;
    • the mapped row title, the empty machine line, and the hover card's "Started by Chief".
  • ChiefSidebarItemTests updated to expect titles with no ids.
  • optchat-chief workspace_titles no longer asserts the prefixed name.
  • A fleet compile-check is running; PR CI runs the Swift and Rust tests.

Agent session: cosmic-gray

🤖 Generated with Claude Code

Leo 2026-10-21: a Chief subagent's workspace showed "a14 · Native workflows
runtime" with a "Chief" (or "Chief · ~/Projects/cmux") second line.

- optchat-chief names a subagent's workspace by its task title only; the aN
  id stays the Chief's (status lines, agents list).
- The sidebar drops an older Chief's aN prefix from the local Chief's rows
  (ChiefWorkspaceName.taskTitle, shared with AgentChatTabTitle), and the
  local Chief machine gets no one-list second line.
- The hover card's machine line on those rows reads "Started by Chief".
- The Chief item's subagent rows show the task title, else "Subagent",
  never the aN id.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d18-9c97-76c3-88d7-6d0422d2fadc&host=cosmic-gray
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by chief-sidebar-2 on cosmic-gray · session

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review 0d62701: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr23391 -f ref=chief-sidebar-2/chief-rows-normal -f platform=macos -f backend_mode=local

Not verified: macOS jobs did not run: compile and app tests were skipped on 0d627014d5; ci-status is green without them.

CI passes on 0d627014d5 (run 39613679900 attempt 1).
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped (the macos job needs both to succeed). Re-run CI once they pass, before merging.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

Tour of 0d627014d5 (run)

The path-selected recorder failed for hover-card-after, hover-card-before; see the run artifact and failed manifests.

Path-selected interactions

Interaction Changed paths
hover-card Packages/macOS/CmuxNext/Sources/CmuxNextSidebar/Logic/WorkspaceHoverCardContent.swift
core Packages/macOS/CmuxNext/Sources/CmuxNextAgentLanes/ChiefPaneTools.swift
Packages/macOS/CmuxNext/Sources/CmuxNextAgentLanes/Resources/Localizable.xcstrings
Packages/macOS/CmuxNext/Sources/CmuxNextAgentLanes/SidebarTransientItem\+Chief.swift
Packages/macOS/CmuxNext/Sources/CmuxNextApp/AgentChatTabTitle.swift
Packages/macOS/CmuxNext/Sources/CmuxNextBridge/SidebarMapping.swift
Packages/macOS/CmuxNext/Sources/CmuxNextSidebar/Model/ChiefWorkspaceName.swift
Packages/macOS/CmuxNext/Sources/CmuxNextSidebar/Resources/Localizable.xcstrings
Packages/macOS/CmuxNext/Sources/CmuxNextSidebar/Store/SidebarRowIndex.swift
Packages/macOS/CmuxNext/Sources/CmuxNextSidebar/Strings.swift
Packages/macOS/CmuxNext/Tests/CmuxNextAppTests/ChiefSidebarItemTests.swift
Packages/macOS/CmuxNext/Tests/CmuxNextAppTests/ChiefWorkspaceRowsTests.swift

Core UI (before): PASS — 19 ok

tour

Video (mp4)

# Step Result Command
1 Launch ok
2 New workspace ok cmux workspace new --name Tour
3 Type in the terminal ok cmux workspace name:Tour screen current pane current tab current terminal current write --text "echo hello from the cmux-next tour\r"
4 A command reports progress: tab loading spinner ok cmux workspace name:Tour screen current pane current tab current terminal current write --text "clear; printf '\\033]9;4;3\\007'; sleep 900\r"
5 Split right ok cmux action run splitRight
6 Split down ok cmux action run splitDown
7 New terminal tab ok cmux action run newSurface
8 Browser tab ok cmux tab new-browser --url https://example.com
9 Hide the sidebar ok cmux action run toggleSidebar
10 Show the sidebar ok cmux action run toggleSidebar
11 Notification ok cmux notify --title Tour --body "Hello from CI"
12 Notifications panel ok cmux action run showNotifications
13 Agent chat ok cmux agent new-chat
14 Agent workspace ok cmux workspace new --name Agent
15 Agent starts ok cmux workspace name:Agent screen current pane current tab current terminal current write --text "clear; printf '\\033]7501;state=working\\033\\\\'; sleep 8; printf '\\033]7501;state=done\\033\\\\'; sleep 900\r"
16 An agent works: row working spinner ok cmux workspace new --name Notes
17 The agent finishes: done mark in the spinner's place ok
18 Session tree: keycaps on the first rows ok cmux settings set sidebar.sessionTree true
19 Session tree back off for later tours ok cmux settings set sidebar.sessionTree false
Screenshots (15)

1. Launch
Launch

2. New workspace
New workspace

3. Type in the terminal
Type in the terminal

4. A command reports progress: tab loading spinner
A command reports progress: tab loading spinner

5. Split right
Split right

6. Split down
Split down

7. New terminal tab
New terminal tab

8. Browser tab
Browser tab

9. Hide the sidebar
Hide the sidebar

11. Notification
Notification

12. Notifications panel
Notifications panel

13. Agent chat
Agent chat

16. An agent works: row working spinner
An agent works: row working spinner

17. The agent finishes: done mark in the spinner's place
The agent finishes: done mark in the spinner's place

18. Session tree: keycaps on the first rows
Session tree: keycaps on the first rows

### Core UI \(after\): PASS — 19 ok

tour

Video (mp4)

# Step Result Command
1 Launch ok
2 New workspace ok cmux workspace new --name Tour
3 Type in the terminal ok cmux workspace name:Tour screen current pane current tab current terminal current write --text "echo hello from the cmux-next tour\r"
4 A command reports progress: tab loading spinner ok cmux workspace name:Tour screen current pane current tab current terminal current write --text "clear; printf '\\033]9;4;3\\007'; sleep 900\r"
5 Split right ok cmux action run splitRight
6 Split down ok cmux action run splitDown
7 New terminal tab ok cmux action run newSurface
8 Browser tab ok cmux tab new-browser --url https://example.com
9 Hide the sidebar ok cmux action run toggleSidebar
10 Show the sidebar ok cmux action run toggleSidebar
11 Notification ok cmux notify --title Tour --body "Hello from CI"
12 Notifications panel ok cmux action run showNotifications
13 Agent chat ok cmux agent new-chat
14 Agent workspace ok cmux workspace new --name Agent
15 Agent starts ok cmux workspace name:Agent screen current pane current tab current terminal current write --text "clear; printf '\\033]7501;state=working\\033\\\\'; sleep 8; printf '\\033]7501;state=done\\033\\\\'; sleep 900\r"
16 An agent works: row working spinner ok cmux workspace new --name Notes
17 The agent finishes: done mark in the spinner's place ok
18 Session tree: keycaps on the first rows ok cmux settings set sidebar.sessionTree true
19 Session tree back off for later tours ok cmux settings set sidebar.sessionTree false
Screenshots (15)

1. Launch
Launch

2. New workspace
New workspace

3. Type in the terminal
Type in the terminal

4. A command reports progress: tab loading spinner
A command reports progress: tab loading spinner

5. Split right
Split right

6. Split down
Split down

7. New terminal tab
New terminal tab

8. Browser tab
Browser tab

9. Hide the sidebar
Hide the sidebar

11. Notification
Notification

12. Notifications panel
Notifications panel

13. Agent chat
Agent chat

16. An agent works: row working spinner
An agent works: row working spinner

17. The agent finishes: done mark in the spinner's place
The agent finishes: done mark in the spinner's place

18. Session tree: keycaps on the first rows
Session tree: keycaps on the first rows

### Hover cards \(before\): FAILED — 11 ok, 1 failed

tour

Video (mp4)

# Step Result Command
1 Launch ok
2 Session cards, dark ok
3 Session cards, light ok cmux settings set appearance.theme "Soft Blue Light"
4 Session cards, light over art ok cmux settings set appearance.background hokusai-great-wave
5 Session cards, dark over art ok cmux settings set appearance.theme "Soft Blue"
6 Tab cards, dark over art ok
7 Tab cards, light over art ok cmux settings set appearance.theme "Soft Blue Light"
8 Tab cards, light ok cmux settings unset appearance.background
9 Tab cards, dark ok cmux settings set appearance.theme "Soft Blue"
10 Close the gallery ok
11 New workspace ok cmux workspace new --name "Make the hover cards look like Codex's"
12 A real workspace card, dark failed: exited 1 cmux action run workspace.showResources

Failed steps:

12. A real workspace card, dark
A real workspace card, dark

Screenshots (11)

1. Launch
Launch

2. Session cards, dark
Session cards, dark

3. Session cards, light
Session cards, light

4. Session cards, light over art
Session cards, light over art

5. Session cards, dark over art
Session cards, dark over art

6. Tab cards, dark over art
Tab cards, dark over art

7. Tab cards, light over art
Tab cards, light over art

8. Tab cards, light
Tab cards, light

9. Tab cards, dark
Tab cards, dark

10. Close the gallery
Close the gallery

11. New workspace
New workspace

### Hover cards \(after\): FAILED — 11 ok, 1 failed

tour

Video (mp4)

# Step Result Command
1 Launch ok
2 Session cards, dark ok
3 Session cards, light ok cmux settings set appearance.theme "Soft Blue Light"
4 Session cards, light over art ok cmux settings set appearance.background hokusai-great-wave
5 Session cards, dark over art ok cmux settings set appearance.theme "Soft Blue"
6 Tab cards, dark over art ok
7 Tab cards, light over art ok cmux settings set appearance.theme "Soft Blue Light"
8 Tab cards, light ok cmux settings unset appearance.background
9 Tab cards, dark ok cmux settings set appearance.theme "Soft Blue"
10 Close the gallery ok
11 New workspace ok cmux workspace new --name "Make the hover cards look like Codex's"
12 A real workspace card, dark failed: exited 1 cmux action run workspace.showResources

Failed steps:

12. A real workspace card, dark
A real workspace card, dark

Screenshots (11)

1. Launch
Launch

2. Session cards, dark
Session cards, dark

3. Session cards, light
Session cards, light

4. Session cards, light over art
Session cards, light over art

5. Session cards, dark over art
Session cards, dark over art

6. Tab cards, dark over art
Tab cards, dark over art

7. Tab cards, light over art
Tab cards, light over art

8. Tab cards, light
Tab cards, light

9. Tab cards, dark
Tab cards, dark

10. Close the gallery
Close the gallery

11. New workspace
New workspace

Tours are data in scripts/cmux-next/media/tours: add a step or a tour file to show your feature.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-wpsgf created for this PR by the cmux coordinator.

teamleaderleo and others added 2 commits October 21, 2026 05:25
…nts list strips only an aN id

Review of #23391: workspace_titles still expected "a1 · Sidebar group drag";
the test ServerReach id was too short (ServerReach.isID wants 8+); agents_list
cut any " · " title, now only its own id prefix from older records.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d18-9c97-76c3-88d7-6d0422d2fadc&host=cosmic-gray
@cursor

cursor Bot commented Oct 21, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

cmux-next guards / defaults-snapshot is red on 23 of 23 fresh feat-cmux-next PR heads in the last 2:00:00, so it is most likely a base red, not this PR's. The base-reds lane has it; a base merge picks up the fix once it lands.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent, correctness first): SHIP at 0d62701. The independent re-review gave SHIP at 8e2a7e8; the only change since then is a clean base merge. Red attribution:

  • swift test: the test helper exits early (848 tests unfinished). The failing tests (SidebarOneMorphingCard, HomeChiefSettingsWords, HomeMessageRequests, SidebarPinnedRowWidth, SidebarRenderCount) fail identically on another PR's run (job 119293410895).
  • defaults-snapshot: the FileExplorerSectionView inline menu row, red on every base push from 14:06Z to 14:53Z and fixed by cmux-next guards: baseline the Files tree's inline menu rows (base red defaults-snapshot) #23467.
  • Tour the app and generated files: runners out of disk (31 GiB free vs 40 needed; 24.8 vs 30).

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

teamleaderleo added a commit that referenced this pull request Oct 21, 2026
…roup (#23546)

* cmux-next sidebar: the Chief's workspaces read like any workspace

Leo 2026-10-21: a Chief subagent's workspace showed "a14 · Native workflows
runtime" with a "Chief" (or "Chief · ~/Projects/cmux") second line.

- optchat-chief names a subagent's workspace by its task title only; the aN
  id stays the Chief's (status lines, agents list).
- The sidebar drops an older Chief's aN prefix from the local Chief's rows
  (ChiefWorkspaceName.taskTitle, shared with AgentChatTabTitle), and the
  local Chief machine gets no one-list second line.
- The hover card's machine line on those rows reads "Started by Chief".
- The Chief item's subagent rows show the task title, else "Subagent",
  never the aN id.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d18-9c97-76c3-88d7-6d0422d2fadc&host=cosmic-gray

* Chief rows: fix the opened-name assertion and the test server id; agents list strips only an aN id

Review of #23391: workspace_titles still expected "a1 · Sidebar group drag";
the test ServerReach id was too short (ServerReach.isID wants 8+); agents_list
cut any " · " title, now only its own id prefix from older records.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d18-9c97-76c3-88d7-6d0422d2fadc&host=cosmic-gray

* cmux-next sidebar: the Chief's workspaces are one collapsible Chief group

Leo 2026-10-21: the Chief's subagent workspaces sat loose after the last local
group (Codex in his sidebar), because another computer's section has no header
in the one-list sidebar. The local Chief machine's section now keeps its header
and fold there, as a remote group does, through one rule
(SidebarLayout.keepsHeaderInOneList) the folds and Show more can build on.
Its rows' right-click menu ends with "Started by Chief".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d18-9c97-76c3-88d7-6d0422d2fadc&host=cosmic-gray

* Chief group: an empty Chief draws nothing, the next computer is set apart, no + on its header

Review of #23546: with a header, an empty Chief section drew a permanent empty
"Chief" group in every window; a headerless computer after it joined its rows
with no gap, the same misreading moved down a section. Also moves the new
function out from under nameSelection's doc comment.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d18-9c97-76c3-88d7-6d0422d2fadc&host=cosmic-gray

* Chief group: commit the layout fixes the last commit left unstaged

The empty-Chief skip and the spacing after a headed section (SidebarLayout),
and the doc comment move (SidebarContextMenus), which 4914913's message
describes but did not carry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d18-9c97-76c3-88d7-6d0422d2fadc&host=cosmic-gray

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
taskTitle trimmed trailing blanks before looking for the id, so "a3 · "
lost its " · " and came back as "a3 ·"; it now drops only the leading
blanks first. The deduped-session test still expected the internal a3 /
a10 ids as row titles; it now gives the lanes task titles and checks
their order.


Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d18-9c97-76c3-88d7-6d0422d2fadc&host=cosmic-gray

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Oct 22, 2026
…d) (#23678)

The conventions lint fails cmux-next checks on base: ChiefWorkspaceName
(#23391) was an all-static enum. Its two members move onto their
receivers: String.chiefTaskTitle, and MachineID.startedBy ("Started by
Chief" on the local Chief, nil elsewhere), which the row menu now asks
the row's machine for.


Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d18-9c97-76c3-88d7-6d0422d2fadc&host=cosmic-gray

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant