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

Merged
TE
16d ago
+400-38

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 (#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