Repository navigation
cmux-next sidebar: remove leading status circles and stale session rows - #24651
Conversation
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
red: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: Tour of |
|
Found 13 test failures on Blacksmith runners: Failures
...and 3 more test failures. View all on Blacksmith: run 40037597490, run 40037597679
|
|
Bead |
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.
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.
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.
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>
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>
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
…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>
|
Shipped in:
|
|
Shipped in:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
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
6f52e46eaf3a129e97192b01d21c3ca424cfc4e6: SHIP.968916b9360731c4d0b279aa, exact head,CmuxNext --app: passed.842041cb366bc8f9e7baa5e5, exact head, artifactsidebar-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
Need help on this PR? Tag
@codesmith-botwith 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
Written for commit 6f52e46. Summary will update on new commits.