Skip to content

fix(cmux): remove the Needs you sidebar section - #425

Open
ClipboardJason wants to merge 1 commit into
mainfrom
jason-sidebar-drop-needs-you
Open

ClipboardJason wants to merge 1 commit into
mainfrom
jason-sidebar-drop-needs-you

Conversation

@ClipboardJason

Copy link
Copy Markdown
Contributor

Summary

The "Needs you" section promoted a row above its PR-stage section whenever an agent reported needs_input, or whenever the workspace's native cmux status happened to contain the substring needs_input. The latter is a heuristic that false-positives often enough to be inaccurate, and either path pulls a row out of the PR-stage section it actually belongs in — hiding it from the review-queue view the sidebar exists to give.

This PR removes the section entirely.

Note: this was originally scoped to stack on jason-sidebar-stack-prs (#421), which merged into main while this was in progress, so it targets main directly instead. The diff is the "Needs you" removal only.

What changed

  • contrib/cmux/groundcrew.swift: rowStage no longer special-cases needs_input. agentNeedsInput and nativeStatusNeedsInput are deleted (dead code after their only caller), along with the needs_you branch of stageBadgeColor and the needsYou filter/section render. A row whose agent is needs_input now falls through the same order every other row uses: a still-executing agent to Working, else its synced PR stage, else Waiting/Stage unknown/etc.
  • The per-agent icon's amber needs_input ring and tooltip are untouched — only the row-level section promotion goes.
  • contrib/cmux/README.md: updated the section order and the prose describing live-signal row promotion to reflect the removal.

Why

Pulling a row into its own section on an inaccurate signal meant a PR that's actually in, say, Changes requested could silently disappear from that section and show up under a generic "Needs you" heading instead — exactly backwards from what the sidebar is for.

How tested

  • node --run verify passes (markdown:lint covers the README change; this PR has no TypeScript changes).
  • Ran the full GroundcrewSidebar Swift suite (contrib/cmux/tests/) against the changed file through cmux's own SwiftViewInterpreter: 55 tests across 6 suites pass, then removed the copied fixtures from the cmux checkout (git -C ~/Documents/work/cmux status --porcelain empty afterward).
  • Replaced needsInputAgentOutranksFreshCrewStage with two tests: a needs_input agent row with a fresh crew_stage renders under that PR stage's section with no "Needs you" header anywhere in the output, and a needs_input agent row with no PR stage lands in Waiting. Mutation-checked both by reintroducing the needs_you promotion in a scratch copy and confirming only these two tests (plus nothing else in the suite) went red, then restored the real file.
  • Updated sectionsRenderInSpecifiedOrderWithHiddenEmptySections (dropped the now-impossible "Needs you (1)" header and its source workspace, added an explicit assertion that no "Needs you" header renders) and the render-bench fixture (renamed the representative needs_input workspace, which now lands in Waiting like any other idle PR-less task).
  • Render-cost bench (10 iterations each, same harness as the prior PRs in this stack): 310.4ms → 300.9ms median (-3.0%), i.e. a slight improvement from removing code, not a regression.
  • Did not install into ~/.config/cmux/sidebars — left that to Jason.

🤖 Generated with Claude Code

https://claude.ai/code/session_01QDPWP8wH2WJjTPgZzibVG2

The "Needs you" section promoted a row above its PR-stage section
whenever an agent was needs_input, or whenever the workspace's native
cmux status happened to contain the substring "needs_input" — the
latter a heuristic inaccurate enough to false-positive and pull rows
out of the PR-stage section they actually belonged in, hiding them
from the review-queue view the sidebar exists to give.

Drop the section entirely: rowStage no longer special-cases
needs_input (agentNeedsInput and nativeStatusNeedsInput are gone, dead
code after their only caller), so a needs_input row now falls through
to the same order every other row uses — a still-executing agent to
Working, else its synced PR stage, else Waiting/Stage unknown. The
per-agent icon's amber needs_input ring and tooltip are untouched;
only the row-level section promotion goes.

Tested: node --run verify passes (markdown:lint covers the README
update). Ran the full GroundcrewSidebar Swift suite (55 tests, 6
suites) against the changed file through cmux's own
SwiftViewInterpreter, then removed the copied fixtures from the cmux
checkout. Replaced needsInputAgentOutranksFreshCrewStage with two
tests — a needs_input row with a fresh crew_stage renders under that
PR stage's section with no "Needs you" header, and a needs_input row
with no PR stage lands in Waiting — both mutation-checked by
reintroducing the needs_you promotion and confirming they (and only
they, among the existing suite) go red. Updated the section-order test
and the render-bench fixture to match. Render-cost bench:
310.4ms -> 300.9ms median (-3.0%), no regression.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QDPWP8wH2WJjTPgZzibVG2
@coderabbitai

coderabbitai Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: aca721c9-e3dc-478d-8a3a-c7f91f7430dc
📥 Commits

Reviewing files that changed from the base of the PR and between 0247f7a and 0410240.

📒 Files selected for processing (4)
  • contrib/cmux/README.md
  • contrib/cmux/groundcrew.swift
  • contrib/cmux/tests/GroundcrewSidebarRenderBenchTests.swift
  • contrib/cmux/tests/GroundcrewSidebarStageTests.swift
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

Included review availability: This review used your included allowance. 0 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 3 reviews per hour.


📝 Walkthrough

Walkthrough

Needs-input agents no longer receive a separate sidebar stage. They remain grouped by their synced PR stage or the existing Waiting/Working fallback, while their icon retains its amber ring.

Changes

Sidebar stage grouping

Layer / File(s) Summary
Update needs-input stage grouping
contrib/cmux/groundcrew.swift, contrib/cmux/tests/GroundcrewSidebarStageTests.swift, contrib/cmux/tests/GroundcrewSidebarRenderBenchTests.swift, contrib/cmux/README.md
Stage selection and rendering no longer create a Needs you section. Tests and documentation describe needs-input agents remaining in their PR stage or fallback section.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 04102

Rows that need input now stay in their normal PR-stage or Waiting/Working section and keep their amber icon ring. No merge-blocking risk was found.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 44.44% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 9 functions across 3 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely identifies the main change: removing the Needs you sidebar section.
Description check ✅ Passed The description directly explains the removal, affected behavior, retained icon behavior, documentation updates, and testing performed.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 44.44% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 9 functions across 3 files. (1 skipped: 1 unsupported.)

  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@stale

stale Bot commented Oct 11, 2026

Copy link
Copy Markdown

Is this still relevant? If so, what is blocking it? Is there anything you can do to help move it forward?

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

@stale stale Bot added the wontfix This will not be worked on label Oct 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

wontfix This will not be worked on

Development

Successfully merging this pull request may close these issues.

1 participant