cmux-next sidebar: remove leading status circles and stale session rows

Merged
TE
14d ago
+198-28

What changed

Leo corrected the sidebar direction: “no, we dont want the left circles tho? we already have the dots on the right so idk”. This PR removes the leading task-status glyph from every workspace row, preserves user-provided icons, and filters a local workspace row after its acpmux session is purged. The right-side status indicators remain the source of attention state; idle rows have no extra left status ring.

The left circle was SidebarTaskStatus.glyph, the leading row icon fallback. It meant the pinned task lane/status presentation, while the trailing status dots carry current lane attention. Closed sessions are removed only after the live lane page confirms the session is gone; a disconnected watch keeps rows until the next complete page. Mixed workspaces and unbound agent tabs remain visible.

Risk

Low and contained: presentation and live sidebar projection only; no new model or persistence format. The main risk is filtering a workspace whose stale local agent tab shares a row with other live content. The filter explicitly keeps mixed, remote, non-agent, and unbound tabs, and observes session presence separately from fast-changing lane state so normal lane updates remain row-local.

Verification

  • Independent Codex review at final head 6f52e46eaf3a129e97192b01d21c3ca424cfc4e6: SHIP.
  • Managed compile check: 968916b9360731c4d0b279aa, exact head, CmuxNext --app: passed.
  • Static prepush gate and Swift syntax checks: passed.
  • Tests cover no leading status glyph, purged-session removal, mixed/unbound workspace retention, and the before/after gallery fixture.
  • GUI gallery job: 842041cb366bc8f9e7baa5e5, exact head, artifact sidebar-status-cleanup-gallery.tar (queued at PR creation; URL will be added when the managed worker returns it).

Reference matched: Chrome-style chat list with no idle leading status ring; the PR gallery renders the before/after sidebar side by side without using Leo's private screenshot.

agent-identity footer
Agent session: cmux16


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Removes the leading status circle from cmux-next sidebar rows and drops rows whose local acpmux session has been purged. This is a purely presentational change; no model or persistence format changes.

Behavior

  • Workspace rows no longer draw a left status glyph; the trailing status dots already carry attention state, and user-assigned icons are unchanged.
  • A row disappears once its local acpmux session is purged, so a lingering conversation tab doesn't keep a stale workspace visible.
  • Mixed workspaces with other tabs, unbound agent refs, and non-local tabs remain visible.
  • Session presence is observed separately from lane state so row-level lane updates don't cause the whole sidebar to rebuild.