Repository navigation
cx-v9k2f: lanes view on Agent Activity + sidebar attention count (Labs preview) - #20363
Conversation
…cx-v9k2f) One fixture per lane state across this Mac and an acpmux peer: failed with its error text, lost, waiting on a permission, idle for how long, working; grouped by coordinator; a click opens the chat; off without lanes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every acpmux session on this Mac and its acpmux peers, by machine and coordinator (mux.parent), with the lane acpmux decides: working, waiting on permission, idle since, failed with the error text, lost. What needs a person comes first; a click opens the chat (the cmux://session path). The sidebar's Lanes item counts the sessions that need a person. Off by default until it is styled: only with labs.previewFeatures. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
all web/size checks green |
Gallery8 states changed: pages.agent-activity/timeline · 8 new states Diff page and renders (the run's 2 more on the diff page. Live preview (follows this branch; start it with
|
AgentLaneStore moves to CmuxNextAgentActivity (CmuxNextApp was over its size cap). A session_changed lane keeps its id when the summary omits it. Durations redraw each minute; the attention count covers every lane, not just the filtered ones; a filter that hides all says so. "Waiting on you" (a question waits too), and the state and duration join through a localized format. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
|
Not verified: macOS jobs did not run: compile and app tests were skipped on CI passes on Written by |
|
|
…cursors/lanes-view
…-v9k2f) The lanes view put CmuxNextApp 64 lines over its size cap once base grew. AgentTurnStateFeed (the one `_acpmux/watch` connection for turn states and lanes) and LanesSidebarItem move to a new CmuxNextAgentLanes target; the lanes observation becomes AgentActivityModel.follow, and the sidebar title reuses the Agent Activity catalog's "Lanes". The feed's drain timing reaches debug.timings through a hook. CmuxNextApp is now 157 lines under the cap. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cursors/lanes-view
This comment has been minimized.
This comment has been minimized.
…rmat, tall-approval wait (no bead) (#20387) * style(webviews): format HistoryPage.tsx, a react-apps-check base red (no bead) 64747bb reached feat-cmux-next with a button vp fmt keeps on one line, so `bun run check` fails on the tip (5bd53b9): "Found formatting issues in 1 file". vp fmt, no other change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(webviews): the tall-approval test waits for the diff to outgrow the panel (no bead) permission-panel-buttons read "tall" as false after a fixed 300 ms on #20363 and #20379 (react-apps-check), and passed on 8 of 9 other heads with the same permission code: the diff draws its rows after .cv-edit-diff appears, later on a loaded runner with a cold dev server. Wait (up to 10 s) for the request to outgrow the panel, then check the answers are in view. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… (cx-v9k2f) The package conventions lint refuses an all-static public enum; the item becomes SidebarTransientItem.lanes(_:) and .lanesID. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cursors/lanes-view # Conflicts: # Packages/macOS/CmuxNext/Sources/CmuxNextAgentLanes/AgentTurnStateFeed.swift
Keeps base's now-playing follower beside the lanes What's New settings in SidebarBridge+Cards. The lanes item's click moves to WhatsNewPage.activateClientItem (the client-only item hub), so SidebarBridge stays within its 1000-line type limit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- regenerated Packages/macOS/CmuxNext/ci-target-graph.json Autofix-Run: https://github.com/manaflow-ai/cmux/actions/runs/38586586952
Bugbot needs on-demand usage enabledBugbot 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. |
- regenerated Packages/macOS/CmuxNext/ci-target-graph.json Autofix-Run: https://github.com/manaflow-ai/cmux/actions/runs/38589451679
Bugbot needs on-demand usage enabledBugbot 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. |
… view Lawrence 2026-10-20: "get rid of lanes thing". Removes what #20363, #20934, #21422 and #22662 added for Lanes: - the sidebar's Lanes item (SidebarTransientItem.lanes, its click route to Agent Activity) and its attention badge - the Agent Activity page's Lanes tab and lanes list (lanes.ts, the Lanes view, its styles and gallery variant), the page's "jump" request, and the web priority reducer that only fed that list (priority.ts, the unused onEvent bridge) - the Debug toggle agentActivity.lanesShowFleet, AgentLaneStore.shown, attentionCount and follow(_:), AgentActivityModel.lanes/onJump and the 13 lanes.* strings in every locale Kept: AgentLaneStore, AgentActivityLane and the _acpmux/watch feed; the sidebar Priority view, the Chief item and the session tree read them. AgentActivityPageService.jump(to:) stays for the Priority view. The computer-use timeline layout's Debug label says Timeline, not Lanes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… view Lawrence 2026-10-20: "get rid of lanes thing". Removes what #20363, #20934, #21422 and #22662 added for Lanes: - the sidebar's Lanes item (SidebarTransientItem.lanes, its click route to Agent Activity) and its attention badge - the Agent Activity page's Lanes tab and lanes list (lanes.ts, the Lanes view, its styles and gallery variant), the page's "jump" request, and the web priority reducer that only fed that list (priority.ts, the unused onEvent bridge) - the Debug toggle agentActivity.lanesShowFleet, AgentLaneStore.shown, attentionCount and follow(_:), AgentActivityModel.lanes/onJump and the 13 lanes.* strings in every locale Kept: AgentLaneStore, AgentActivityLane and the _acpmux/watch feed; the sidebar Priority view, the Chief item and the session tree read them. AgentActivityPageService.jump(to:) stays for the Priority view. The computer-use timeline layout's Debug label says Timeline, not Lanes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ef (#22683) * cmux-next: Chief view gallery, five experimental views beside the Chief webviews/src/pages/chief-views (cmux-page://cmux.chief-views/): a page tab in Home's right column with a dots switcher and a gallery of views, each named by intent with a one-line description, a switch and "Open as" Pane, Split or Sidebar. Only the first view is on by default. Views register through one registry (registry.ts: id, title, description, component, default placement, what data it needs), shaped like the AppPlatform manifest. - Where is everybody: every agent by machine (name, folder, state, task, time since last output, PR), what needs you first. - Agent board: Working, Needs you, Ready to land, Landed today. - Fleet: the CI dashboard's data.json (machines, load per core, runners, queue); says when it is unset or unreachable and takes an address. - Landing: open, ready to land, CI red and merged-today PRs with owner chips. - Timeline: today's events across agents and PRs. Revives the lanes view of #20363 (lanes.ts order and durations, the AgentLaneStore feed). AgentActivityLane also keeps the summary's cwd, updatedAt and createdAt. The app answers cmux.chief_views.* (ChiefViewsPageProvider): agents from AgentLaneStore and terminal hook agents on every machine, with an Observation stream; fleet from the address the person sets (CMUX_CHIEF_VIEWS_FLEET_URL or the view's field); landing from GitHub search, kept 90 s; open, open_url and set_fleet_url need a click. Action chief.openViews (palette). Debug Settings > Home > "Chief view gallery", on by default; DEV and NIGHTLY only. Tests: webviews/test/chief-views-page.test.tsx, CmuxNextAppTests/ChiefViewsPageTests.swift. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=e8f63fd9-94e8-4878-bcd4-704659aba1f2&host=cosmic-gray * Chief view gallery: own target, review fixes Move the gallery's Swift (page, provider, feeds, agent rows, strings) out of CmuxNextApp into a new CmuxNextChiefViews target so the app does not grow. The app keeps a 20-line tab glue; a generic WebPageTab replaces the one-off page-tab classes for Stats, Chief Usage, channels and CodeRouter, which offsets it. Review fixes: - AgentActivityLane equality ignores updatedAt, so output alone does not re-rank and animate the lanes view. - The dashboard address must be https; http only for localhost and tailnet names. Pull request links reject dot segments. - Remote terminals group under the machine's name, so they sit with the same machine's acpmux chats. - Fleet's address form says when an address is refused. - An unavailable read keeps its last reply. - Tests record through a main-actor class instead of captured vars. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=e8f63fd9-94e8-4878-bcd4-704659aba1f2&host=cosmic-gray * Chief view gallery: leave ci-target-graph.json to the base autofix Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=e8f63fd9-94e8-4878-bcd4-704659aba1f2&host=cosmic-gray * Tier routing test: a new target named in Package.swift passes before the bot regenerates the graph The CI target graph is bot-only, so a pull request that adds a SwiftPM target cannot carry it and the coverage test failed on every such PR. A directory the graph lacks now passes when Package.swift declares that target; a stray source directory still fails. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=e8f63fd9-94e8-4878-bcd4-704659aba1f2&host=cosmic-gray * Chief view gallery: re-review fixes - Lanes keep their synthesized equality, so the store still records each new updatedAt; the lanes view compares lanes without it (AgentActivityLane.ranked) before it re-ranks. - ChiefViewsPage imports Foundation publicly (URL in its public API). - The tunables list is nonisolated, like the others; the refused-address message says https. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=e8f63fd9-94e8-4878-bcd4-704659aba1f2&host=cosmic-gray * Lanes: the changed-row id ignores output time too; ranked copies the lane Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=e8f63fd9-94e8-4878-bcd4-704659aba1f2&host=cosmic-gray * cmux NEXT Chief views: own the lane order and duration stamp Base removed webviews/src/agent-activity/lanes.ts with the Agent Activity lanes view (859e5cb), so the gallery's bundle failed to resolve it. The page now keeps the two pieces it used, in model.ts: the same order (failed, waiting, idle longest first, working newest first) over its own AgentState, and shortDuration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=cosmic-gray * cmux NEXT Chief views: the dot and switch knob shadows use the elevation scale subtle-elevation.test.ts allows a blurred drop shadow only through --elevation-1/2; the current-view dot and the switch knob had their own. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=cosmic-gray * cmux NEXT Chief views: format WhereIsEverybody.tsx (vp fmt) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=cosmic-gray --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>






Bead: cx-v9k2f (part 2 of 2). Needs #20362 (acpmux decides
lane) to show anything; without it every session decodes to no lane.Problem
Leo, 2026-10-13: cmux NEXT coordination should make lanes that go idle or stuck obvious. About 25 lanes sat idle for hours unnoticed that day, some dead on out-of-credit errors.
Change
This is behind Settings > Advanced > Labs > Show Preview Features (
labs.previewFeatures, off by default), following the no-prototype-UI rule. It is fully functional, but not yet styled.mux.parent, headed by the coordinator's own session);cmux://session/<id>path every session link takes. It reveals the tab that shows the chat, or opens one in the focused pane._acpmux/watchfeed (AgentTurnStateFeed) also decodes each summary'slaneintoAgentLaneStore. No new connection and no polling.CmuxNextAgentLanes(for the CmuxNextApp size cap). It now holdsAgentTurnStateFeed, moved unchanged except for public entry points and a drain-timing hook fordebug.timings, plus the sidebar's Lanes item. The lanes observation isAgentActivityModel.follow. CmuxNextApp is 164 lines under its cap.lanesvariant onpages.agent-activity.Not in this PR:
agent-session-attach-v1, so listing them needs a new read-only daemon verb.Verification
test/agent-activity-lanes.test.tsxrenders the page with one fixture per lane state across this Mac and a peer.jump, filter by error text, the view switch, and flag off.AgentLanesTests. The real watch feed runs against a stand-in acpmux on a socket.labs.previewFeaturesis on.PASS ^CmuxNextAppTests\.AgentLanesTests/.AgentLanesTestsand the moved feed's suites:AgentChatDoneDotTests,AgentChatMuteTests,AgentChatTabTitleTests.AcpmuxBundleReplacedTests(daemon) skipped for want of the same-tree cmux-tui. This PR doesn't touch it.xcodebuild exit status: 0). The final head ce89f66 differs only by webviews: base red: clear the four home-channels lint warnings #20641'shome-channelsweb files.--builder macDEV builds on capture slots). Base is 3f4c100, which has cx-v9k2f: acpmux decides each session's lane (working, input, idle since, failed with why, lost) #20362's lane field but not the view. Seven acpmux sessions were seeded through a fake agent (chief working, op-docs idle, op-billing failed, op-deploy asking, op-search working, op-flaky's process died, scratch with no parent). LabspreviewFeatureswas set by a per-run config file, never the shared one.lostneeds a death mid-turn (views.rs). Durations read "1m" after about 30 s.plan image 20363/before-agent-activity.png
plan image 20363/after-lanes-page.png
plan image 20363/side-by-side-sidebar.png
plan image 20363/labs-off-head-sidebar.png
plan gif 20363/before-recording.gif (from before-recording.mp4)
plan video 20363/before-recording.mp4
plan gif 20363/after-recording.gif (from after-recording.mp4)
plan video 20363/after-recording.mp4
uploaded 20363/before-agent-activity.png
uploaded 20363/after-lanes-page.png
uploaded 20363/side-by-side-sidebar.png
uploaded 20363/labs-off-head-sidebar.png
uploaded 20363/before-recording.gif
uploaded 20363/before-recording.mp4
uploaded 20363/after-recording.gif
uploaded 20363/after-recording.mp4
Full quality: before-recording.mp4
Full quality: after-recording.mp4
PASS ^CmuxNextAppTests\.AgentLanesTests/.bun run check,tsc, ui-rules and gallery-coverage pass.Open question
Should the badge also count idle child lanes (under a coordinator)? It counts only failed, lost and waiting sessions, so a normal set of idle chats doesn't keep a number up. On the page, idle shows as "Idle · 5h", longest first.
Changelog
none (behind Labs preview features)
🤖 Generated with Claude Code