Repository navigation
Add btop-style agent activity sidebar example - #15393
Conversation
btop-agents.js lists every workspace with a braille sparkline of recent agent activity, a state glyph, a small progress meter, unread count and PR number, under a figlet header with a graph of busy workspaces. History is sampled per clock tick into per-workspace buckets inside the sidebar. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: manaflow-ai/cmux/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (7)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 2 remain after this review. 📝 WalkthroughWalkthroughAdds a btop-style custom sidebar that displays workspace activity, status, progress, unread counts, and pull requests. It maintains bounded activity histories, caps and filters workspace rows, and supports workspace selection, reordering, opening pull requests, and marking workspaces as read. ChangesAgent activity sidebar
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Feature Sequence Diagram(s)sequenceDiagram
participant SidebarClock
participant Snapshot
participant WorkspaceSelection
participant ActivityHistory
participant SidebarRows
participant SidebarDisplay
SidebarClock->>Snapshot: provide clock value
Snapshot->>WorkspaceSelection: get capped workspace selection
Snapshot->>ActivityHistory: sample workspace activity
Snapshot->>SidebarRows: provide row data and aggregate history
SidebarRows->>SidebarDisplay: render workspace rows and activity graphs
Merge Risk: ⚪ Minimal · up to The reported lone-row reorder problem cannot be triggered through the sidebar control. No merge-blocking issue remains after normal checks. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The example uses existing workspace controls and keeps its activity history bounded. Its PR link opens a host-provided URL without restricting the URL scheme in the inspected path; the effect is limited to users who install the example and click the link. No exploit or broader exposure is established. Retained concerns
Security review detailsSecurity Blast Radius
Security Findings and Attack Paths
Trust Boundaries and Controls
Resilience and Maintainability Implications
Hardening Proposals
Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (1 error, 1 warning)
✅ Passed checks (23 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 23.81% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 21 functions across 3 files. (4 skipped: 4 unsupported.) Full details: Cmux Full InternationalizationExplanation The new downloadable Resolution Add locale-aware string lookup support for interpreted JavaScript sidebars, route every new user-facing label and status string through that lookup, and add translated entries for all supported macOS locales (
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
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 contributors have signed the CLA ✍️ ✅ |
|
Review: I checked btop-agents.js against the JS sidebar runtime (SidebarRuntime.js, the scene node renderer and the color tokens), then loaded the file into that runtime under Node with stubbed host hooks and fed it data.
Fixed: nothing. I didn't find a correctness defect, so the head is still 4b86dd3. Left:
|
System yellow braille dots were faint on a white sidebar; the heat ramps now go green to orange to red. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Follow-up on the review: the graph heat ramps no longer use yellow, which was faint on light sidebars (0e9f8c3). The other three notes stay as they are for now. |
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
|
Repair head Evidence:
Squash auto-merge is armed. — Mochi |
|
Merge receipt for |
Dogfood tours of
|
fc799b6 Merge project.pbxproj by union of added entries instead of by line (manaflow-ai#15419) 881de65 ci: reject masked Swift Testing failures (manaflow-ai#15425) 5410299 dogfood: make modifier-clicks-tour click on its own URL (manaflow-ai#15421) 03a30c0 Add btop-style agent activity sidebar example (manaflow-ai#15393) # Conflicts: # .github/workflows/ci-guards.yml





Adds
Examples/CustomSidebars/btop-agents.js, a custom sidebar in the spirit of btop: each workspace gets a braille sparkline (U+2800 to U+28FF) of how busy its agents have been over the last six minutes, a state glyph, and a small progress meter, under a figlet-style header that graphs busy workspaces over twelve minutes. Relates to RFCs #15244 and #15245.What each row shows:
◆when waiting for input, green●when its turn is done,○when ended,·with no agent. A×2count appears when several agents are working.ZStackso the graph runs green to orange with height, with a dotted floor where nothing happened.input 2m,run 14m,idle 5m).Click a row to select the workspace, drag to reorder (drops map back to the full order when filtered), right-click to open the PR or mark read. The ALL/BUSY chip hides workspaces with no working or waiting agent and no unread notifications. Colors are system tokens (
cyan,green,orange,tertiary, ...) plus gray washes, so it follows light and dark.History is kept in the sidebar: each clock tick samples every workspace into 15-second buckets (48 kept per workspace, pruned when a workspace closes). Graphs start empty when the sidebar loads, except that sessions already working backfill from their
sinceEpoch.Install:
The README and
docs/custom-sidebars.mdexample lists mention it, andCustomSidebarValidationTests.downloadableCustomSidebarExamplesValidatenow expects it (19 examples).Validation
Ran the file against the real
SidebarRuntime.jsprelude in Node with stub host bridges, a four-workspace fixture (claude/codex agents cycling working, idle and needs_input; a workspace withprogress: ""andpr: ""), and 300 simulated clock ticks. It mounted without errors (143 scene nodes), aBUSYtap filtered to the busy rows, a row tap dispatchedworkspace.select, and a drop dispatchedworkspace.reorder. Also mounted with no data keys at all (shows "no workspaces"). Text dump of the scene after 300 ticks, braille layers merged:python3 scripts/verify-local.py: 16/16 static checks passed.Not run locally: the
CmuxSwiftRenderUISwift test (CustomSidebarValidationTests), which validates every example through JavaScriptCore; CI runs it. No app build, so there is no screenshot yet; how the braille glyphs and layeredZStacklook in the real sidebar is unverified until a dev build loads it.Changelog
none
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Adds
btop-agents.js, a btop-style agent activity sidebar, plus a regression test suite guarding its memory and rendering bounds. Each workspace shows a braille sparkline of agent busy-ness over the last six minutes, a state glyph, progress meter, unread count, and PR number, under a header that graphs busy workspaces over twelve minutes.Examples/CustomSidebars/README.md,docs/custom-sidebars.md, the validation test (now 19 examples), and addstests/test_btop_agents_sidebar.pyto the preflight CI guards.Install with
cp Examples/CustomSidebars/btop-agents.js ~/.config/cmux/sidebars/thencmux sidebar select btop-agents.Written for commit 18140bd. Summary will update on new commits.
Summary by CodeRabbit