Sidebar: show the most urgent pane's status when panes share an agent key - #15260
Conversation
… key The workspace row aggregates every pane, but agent status text was stored once per key with the last writer winning. Two panes running Claude share `claude_code`, so a pane reporting Running hid the other pane's Needs input, and ending one pane's session cleared the status the other pane still owned. Each pane now keeps its own last-reported entry for the key. The row shows the entry of the live pane that owns the agent and most needs the person (needs input, then running, then unknown, then idle; newest breaks ties), and clearing one pane falls back to the pane that remains. Status lines of equal priority sort a needs-input key first. 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. |
|
Warning Review limit reachedNext included review available in 8 minutes. View limit detailsLimit details: You’ve used all 10 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Repository: manaflow-ai/cmux/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (6)
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 ✍️ ✅ |
|
Dogfood build of cmux DEV pr-15260-361ae0c6.app The link opens this exact commit in the cmux dev menu bar app. The build starts on each push and the page waits until it is ready; a newer push replaces it. It signs in against production, so Cloud or backend changes still need a tagged build with a development backend. |
…nds and pane moves Review follow-up. Every removal of an agent status key now also drops each pane's copy, a pane's copy is dropped when its lifecycle for the key ends, and moving a pane carries its own entry instead of whichever pane wrote the workspace entry last. Clearing a key no longer tries to fall back to another pane: Claude holds one PID per workspace, so that fallback could not hold on its real SessionEnd path. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
CI failure attributionCI passes on Written by |
|
Cross-model review (Codex gpt-5.6-sol)
|
|
Dogfood (fleet mini, driven over the socket). Scenario: a workspace with two terminal panes.
Before, the row says Running, and nothing shows that the left pane is waiting on you. After, the row shows the waiting pane. Pane A then reports Running (its question was answered), and the row goes back to Not covered here: the pane-move path. The unit tests and the review follow-up (361ae0c) cover it. |
|
Merge receipt for |
ee20686 fix: keep SSH exit prompt off PTY output drain (manaflow-ai#15337) 96e7a27 reload.sh: expand the empty resolver args safely under bash 3.2 (manaflow-ai#15352) 558d6b9 ci: move owned gui jobs to Blacksmith only when its queue is shorter (manaflow-ai#15336) fff0b82 UI fuzzer: seeded action sequences, oracles, minimized repros and deduplicated issues (manaflow-ai#15297) 94a6387 Add an agent activity mode to workspace auto-reordering (manaflow-ai#15216) e5231be CI: post screenshots and a GIF of each app PR's build in its dogfood comment (manaflow-ai#15280) 16f1270 cli: answer queued agent hooks inside the agent's hook timeout (manaflow-ai#14834) 3fd61eb Sidebar: show the most urgent pane's status when panes share an agent key (manaflow-ai#15260) 0975d0b Release discarded CodeRouter response bodies after retry (manaflow-ai#15253) 42f93d4 Re-verify the session against a body-supplied VM billing team (manaflow-ai#15339) bdb6920 Keep the mail broker from orphaning a reply to an unknown parent (manaflow-ai#15330) # Conflicts: # .github/workflows/ci-guards.yml # .github/workflows/ci-macos.yml # .github/workflows/test-e2e.yml


What the sidebar row means today
A workspace row stands for the whole workspace. On current main, here is what each part of the row reflects when the workspace holds several panes (terminal, agent, browser, splits):
claude_code,codex, ...)unfocused-split-*), and a pane with unread output gets the unread ring. The row never shows focus.The confusing case was the status line. Two panes running Claude share the
claude_codekey. If pane A says "Needs input" and pane B then reports "Running", the row shows "Running" and hides the pane that is waiting on you.The model this PR sets
The row is an aggregate of the workspace, and the most urgent pane wins. The focused pane is shown inside the workspace, not on the row.
--prioritystill wins.The title still follows the focused pane, and the badge still counts every pane. Both fit "aggregate, focus shown in-pane". Pointing the row at the source pane (for example "needs input: pane 2" in the tooltip) is a follow-up. That rendering belongs with the compact status glyph work in #14838 and #15238, which already resolves glyph precedence as a workspace aggregate (error > needs input > running > ...), so this PR leaves the row cell alone.
Dogfood
Tested on a fleet mini, release 0.64.19 against this PR's CI-built app. Two panes share
claude_code: pane A reports Needs input, then pane B reports Running.Coordination
This PR changes only the model layer:
Workspacestatus storage and ordering, andControlSidebarPanelOwner. It stays out of files owned by other work:Tests
WorkspaceSidebarObservationTestscovers two cases:claude_code, and pane B holds the PID. A later Running from pane B does not hide pane A's Needs input. Once pane A's lifecycle ends, its old text does not linger.Companion: the agent focus-stealing fix (linked once open).
🤖 Generated with Claude Code