Skip to content

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

Merged
teamleaderleo merged 6 commits into
feat-cmux-nextfrom
codex-sidebar-cleanup
Oct 23, 2026
Merged

teamleaderleo merged 6 commits into
feat-cmux-nextfrom
codex-sidebar-cleanup

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

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.

Written for commit 6f52e46. Summary will update on new commits.

View guided diff Turn on auto-fix

@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 6f52e46: 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=pr24651 -f ref=codex-sidebar-cleanup -f platform=macos -f backend_mode=local

red: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: red check: Companion workflows (+5 more) is not red on the base c4fbfd6; do not merge until green; see lane-rules

Tour of 6f52e46eaf (run): no media. The tour job failed before the tour ran (build or setup); the run log has the output.

@teamleaderleo teamleaderleo added the risk:low Risk tier (docs/ci/risk-tiers.md) label Oct 23, 2026
@github-actions github-actions Bot added risk:normal Risk tier (docs/ci/risk-tiers.md) and removed risk:low Risk tier (docs/ci/risk-tiers.md) labels Oct 23, 2026
@blacksmith-sh

blacksmith-sh Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Found 13 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmpsa7levar/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmpsydpgqs3/summary-missing.json (live):/summary-missing.json (live): View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs
convention violations found (ERROR lines above)./
convention violations found (ERROR lines above).
View Logs
test_a_pull_request_that_changes_the_shortcut_inputs_still_rewrites_them (main.Sett
ingsOnlyArtifactLeavesTheActionFollowers.test_a_pull_request_that_changes_the_shortcut_
inputs_still_rewrites_them) (job='repair')/
test_a_pull_request_that_changes_the_shortcut_inputs_still_rewrites_them (main.Sett
ingsOnlyArtifactLeavesTheActionFollowers.test_a_pull_request_that_changes_the_shortcut_
inputs_still_rewrites_them) (job='repair')
View Logs
test_base_passes (main.NoticesPairTests.test_base_passes)/
test_base_passes (main.NoticesPairTests.test_base_passes)
View Logs
test_regenerated_action_exports_bring_the_followers (main.SettingsOnlyArtifactLeave
sTheActionFollowers.test_regenerated_action_exports_bring_the_followers) (job='repair')
/test_regenerated_action_exports_bring_the_followers (main.SettingsOnlyArtifactLeav
esTheActionFollowers.test_regenerated_action_exports_bring_the_followers) (job='repair'
)
View Logs

...and 3 more test failures. View all on Blacksmith: run 40037597490, run 40037597679

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

@teamleaderleo
teamleaderleo merged commit c2e943f into feat-cmux-next Oct 23, 2026
146 of 162 checks passed
@teamleaderleo
teamleaderleo deleted the codex-sidebar-cleanup branch October 23, 2026 23:17
lawrencecchen added a commit that referenced this pull request Oct 23, 2026
Compile fixes on the tip, no behavior change:
- CmuxNextAgentLanes/SidebarLocalLanes.swift: the public AgentLaneStore.keepsWorkspace (c2e943f,
  #24651) is called from CmuxNextApp (SidebarBridge) and CmuxNextAppTests, so its types' modules are
  public imports (CmuxNextAgentActivity: AgentLaneStore; CmuxNextBridge: AgentTurnStateStore; CmuxNextDaemon: WorkspaceModel).
- AAGroupLineGalleryTests, SidebarStatusCleanupGalleryTests: ThemeStore.shared is gone since B3
  (73c3d0d); apply the theme through ThemeScope.app.store, as B3 moved the sibling gallery tests.
- MarkdownCommentRepositoryTests: import CmuxNextSettings (JSONValue, SettingWriter) and
  CmuxNextDesign (RecoveryDraftAcceptance) for its FilePageHosting stand-in.
- SidebarGroupLineLayoutTests: the child group whose parent the test sets is a var.

CmuxNextWorkspaceNaming, TabMoves and FilePageProvider were already fixed on the tip (0b3619c,
f3868c3): not part of this push.
lawrencecchen added a commit that referenced this pull request Oct 23, 2026
Compile fixes on the tip, no behavior change:
- CmuxNextAgentLanes/SidebarLocalLanes.swift: the public AgentLaneStore.keepsWorkspace (c2e943f,
  #24651) is called from CmuxNextApp (SidebarBridge) and CmuxNextAppTests, so its types' modules are
  public imports (CmuxNextAgentActivity: AgentLaneStore; CmuxNextBridge: AgentTurnStateStore; CmuxNextDaemon: WorkspaceModel),
  and SidebarBridge, which calls it on AgentLaneStore.shared, imports CmuxNextAgentActivity (one import line).
- CmuxNextFeed FeedView: onReportsReply (9222c97, #24616) is a var with a default, so FeedRoot can pass it
  (a let with a default is not an init parameter).
- CmuxNextAgentPane AcpmuxMailboxClient: public import Foundation (its public rows carry Date; 9222c97).
- AAGroupLineGalleryTests, SidebarStatusCleanupGalleryTests: ThemeStore.shared is gone since B3
  (73c3d0d); apply the theme through ThemeScope.app.store, as B3 moved the sibling gallery tests.
- MarkdownCommentRepositoryTests: import CmuxNextSettings (JSONValue, SettingWriter) and
  CmuxNextDesign (RecoveryDraftAcceptance) for its FilePageHosting stand-in.
- SidebarGroupLineLayoutTests: the child group whose parent the test sets is a var.

CmuxNextWorkspaceNaming, TabMoves and FilePageProvider were already fixed on the tip (0b3619c,
f3868c3): not part of this push.
lawrencecchen added a commit that referenced this pull request Oct 23, 2026
Compile fixes on the tip, no behavior change:
- CmuxNextAgentLanes/SidebarLocalLanes.swift: the public AgentLaneStore.keepsWorkspace (c2e943f,
  #24651) is called from CmuxNextApp (SidebarBridge) and CmuxNextAppTests, so its types' modules are
  public imports (CmuxNextAgentActivity: AgentLaneStore; CmuxNextBridge: AgentTurnStateStore; CmuxNextDaemon: WorkspaceModel),
  and SidebarBridge, which calls it on AgentLaneStore.shared, imports CmuxNextAgentActivity (one import line).
- CmuxNextFeed FeedView: onReportsReply (9222c97, #24616) is a var with a default, so FeedRoot can pass it
  (a let with a default is not an init parameter).
- CmuxNextAgentPane AcpmuxMailboxClient: public import Foundation (its public rows carry Date; 9222c97).
- FeedPageService: the reports reply closure captures services explicitly (9222c97).
- AAGroupLineGalleryTests, SidebarStatusCleanupGalleryTests: ThemeStore.shared is gone since B3
  (73c3d0d); apply the theme through ThemeScope.app.store, as B3 moved the sibling gallery tests.
- MarkdownCommentRepositoryTests: import CmuxNextSettings (JSONValue, SettingWriter) and
  CmuxNextDesign (RecoveryDraftAcceptance) for its FilePageHosting stand-in.
- SidebarGroupLineLayoutTests: the child group whose parent the test sets is a var.

CmuxNextWorkspaceNaming, TabMoves and FilePageProvider were already fixed on the tip (0b3619c,
f3868c3): not part of this push.
lawrencecchen added a commit that referenced this pull request Oct 24, 2026
Test code:
- AAGroupLineGalleryTests, SidebarStatusCleanupGalleryTests: ThemeStore.shared
  is gone since B3 (73c3d0d); they apply the theme through
  ThemeScope.app.store like the other galleries.
- SidebarGroupLineLayoutTests: SidebarGroup is a struct; the child the test
  re-parents is a var.
- MarkdownCommentRepositoryTests: its FilePageHosting stub uses JSONValue and
  SettingWriter, which come from CmuxNextSettings (missing import since
  b9c80fa, #24610).
Product, import-only build fix in the sidebar area (a590's), no behavior
change: CmuxNextAgentLanes/SidebarLocalLanes.swift's public extension of
AgentLaneStore takes WorkspaceModel and AgentTurnStateStore, so its imports of
CmuxNextAgentActivity, CmuxNextBridge and CmuxNextDaemon are public
(InternalImportsByDefault; c2e943f, #24651).
Product, one word: CmuxNextFeed/Views/FeedView.swift's FeedView declared
onReportsReply as a let with a default, which is not in the memberwise
initializer, so FeedHostView's FeedView(..., onReportsReply:) did not compile
("extra argument 'onReportsReply' in call"); it is a var (9222c97, #24616).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lawrencecchen added a commit that referenced this pull request Oct 24, 2026
Test code:
- AAGroupLineGalleryTests, SidebarStatusCleanupGalleryTests: ThemeStore.shared
  is gone since B3 (73c3d0d); they apply the theme through
  ThemeScope.app.store like the other galleries.
- SidebarGroupLineLayoutTests: SidebarGroup is a struct; the child the test
  re-parents is a var.
- MarkdownCommentRepositoryTests: its FilePageHosting stub uses types from
  CmuxNextSettings and CmuxNextDesign, which it never imported (b9c80fa,
  #24610).
Product, minimal build fixes, no behavior change:
- Import-only build fix in the sidebar area (a590's):
  CmuxNextAgentLanes/SidebarLocalLanes.swift's public extension of
  AgentLaneStore takes WorkspaceModel and AgentTurnStateStore, so its imports of
  CmuxNextAgentActivity, CmuxNextBridge and CmuxNextDaemon are public
  (InternalImportsByDefault; c2e943f, #24651); CmuxNextApp/SidebarBridge.swift
  imports CmuxNextAgentActivity for the members it uses.
- CmuxNextFeed/Views/FeedView.swift: onReportsReply is a var optional (no
  explicit nil, swiftlint) so the memberwise init takes it; a let with a
  default is not an init parameter (9222c97, #24616).
- CmuxNextAgentPane/AcpmuxMailboxClient.swift: public import Foundation (a
  public Date in its API).
- CmuxNextApp/Feed/FeedPageService.swift: the reply closure captures
  [services] explicitly (Swift 6). Its Process.run() on the main thread is
  unchanged (cmux-4f's PL-main owns it).
Errors found together with session cmux-4f's PL-main (origin/pl-main-testfix4
085eaa6), which dropped its push for this one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo pushed a commit that referenced this pull request Oct 24, 2026
Test code:
- AAGroupLineGalleryTests, SidebarStatusCleanupGalleryTests: ThemeStore.shared
  is gone since B3 (73c3d0d); they apply the theme through
  ThemeScope.app.store like the other galleries.
- SidebarGroupLineLayoutTests: SidebarGroup is a struct; the child the test
  re-parents is a var.
- MarkdownCommentRepositoryTests: its FilePageHosting stub uses types from
  CmuxNextSettings and CmuxNextDesign, which it never imported (b9c80fa,
  #24610).
Product, minimal build fixes, no behavior change:
- Import-only build fix in the sidebar area (a590's):
  CmuxNextAgentLanes/SidebarLocalLanes.swift's public extension of
  AgentLaneStore takes WorkspaceModel and AgentTurnStateStore, so its imports of
  CmuxNextAgentActivity, CmuxNextBridge and CmuxNextDaemon are public
  (InternalImportsByDefault; c2e943f, #24651); CmuxNextApp/SidebarBridge.swift
  imports CmuxNextAgentActivity for the members it uses.
- CmuxNextFeed/Views/FeedView.swift: onReportsReply is a var optional (no
  explicit nil, swiftlint) so the memberwise init takes it; a let with a
  default is not an init parameter (9222c97, #24616).
- CmuxNextAgentPane/AcpmuxMailboxClient.swift: public import Foundation (a
  public Date in its API).
- CmuxNextApp/Feed/FeedPageService.swift: the reply closure captures
  [services] explicitly (Swift 6). Its Process.run() on the main thread is
  unchanged (cmux-4f's PL-main owns it).
Errors found together with session cmux-4f's PL-main (origin/pl-main-testfix4
085eaa6), which dropped its push for this one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=codex&session=01a16ae4-6466-71c0-b22c-5513fa7573e9&host=huge-blue
azooz2003-bit added a commit that referenced this pull request Oct 24, 2026
…xNextAgentActivity; FeedPageService names self.services

c2e943f (#24651) uses AgentLaneStore in SidebarBridge without importing its
module; 9222c97 (#24616) captures services implicitly in an escaping
closure of a class (compile-check 9cefbbfcb349b80941260f4c).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
azooz2003-bit added a commit that referenced this pull request Oct 24, 2026
…e.app.store (#24651 added ThemeStore.shared after 73c3d0d removed it)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
azooz2003-bit added a commit that referenced this pull request Oct 24, 2026
…e.app.store (#24651 added ThemeStore.shared after 73c3d0d removed it)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lawrencecchen added a commit that referenced this pull request Oct 24, 2026
…pp.store, not the removed ThemeStore.shared

c2e943f (#24651) added the gallery after B3 (73c3d0d) removed
ThemeStore.shared, so CmuxNextAppTests did not compile on feat-cmux-next
(fleet compile-tests step 6a3aab32b671cb05ddbdb5c6 on aws-m4pro-3). Same fix as
AAGroupLineGalleryTests.
lawrencecchen added a commit that referenced this pull request Oct 24, 2026
…pp.store, not the removed ThemeStore.shared

c2e943f (#24651) added the gallery after B3 (73c3d0d) removed
ThemeStore.shared, so CmuxNextAppTests did not compile on feat-cmux-next
(fleet compile-tests step 6a3aab32b671cb05ddbdb5c6 on aws-m4pro-3). Same fix as
AAGroupLineGalleryTests.
lawrencecchen added a commit that referenced this pull request Oct 24, 2026
…pp.store, not the removed ThemeStore.shared

c2e943f (#24651) added the gallery after B3 (73c3d0d) removed
ThemeStore.shared, so CmuxNextAppTests did not compile on feat-cmux-next
(fleet compile-tests step 6a3aab32b671cb05ddbdb5c6 on aws-m4pro-3). Same fix as
AAGroupLineGalleryTests.
@github-actions

Copy link
Copy Markdown
Contributor

Shipped in:

@github-actions

Copy link
Copy Markdown
Contributor

Shipped in:

This branch was previously deployed

1 inactive deployment
ci-routing-agent — 6f52e46e Deployed Oct 23, 2026 by teamleaderleo via namespace autofix #2106
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant