Repository navigation
cmux NEXT Inspector Connectors: a failed MCP server has Reconnect - #24272
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)
Stale: these images are of Gallery before/after for
States
Pick other states with a Unclear: CI failed on
Failures:
Matched log linesNot re-run automatically: Written by red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on cffeb76 to compare; do not merge until green; see lane-rules Tour of |
|
Found 87 test failures on Blacksmith runners: Failures
...and 77 more test failures. View all on Blacksmith: run 40251563946, run 40251563977
|
|
Bead |
01bd964 to
7c78f3b
Compare
7c78f3b to
ea51f00
Compare
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. |
|
Orphaned: no activity for 13 h, and no lane holds a lease on it. The orphan sweep could not merge |
086bde0 to
9ced85e
Compare
|
Review (codex xhigh, correctness first): SHIP at 9ced85e The reviewer was an independent Codex at xhigh effort on big-red (sp-reconnect-review-24272).
Checks: |
9ced85e to
171c452
Compare
|
|
171c452 to
938830c
Compare
Where acpmux reconnects a server (its initialize lists _acpmux/mcp/reconnect: a Claude Code chat's), a failed server's row in Connectors has a Reconnect button that sends it for that server, reads Reconnecting… while Claude Code connects it and Try again after an error; once acpmux marks the server connected, the row says Connected. Elsewhere "Needs reconnect" stays plain text, so nothing looks clickable that is not (dead-click audit #24116). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16037-16c2-7a73-b063-2e37ed40b9c4&host=cosmic-gray
Codex review: the gallery covers ConnectorsSection.tsx; a handler that returns no promise still settles the button; a disabled Reconnecting button gets no hover underline; the test rerenders the server connected and checks the row reads Connected, not a button. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16037-16c2-7a73-b063-2e37ed40b9c4&host=cosmic-gray
… screen (red) Codex review of #24272: reconnectMcp names selectedSessionId, which during a chat switch hold is already the hidden chat opening, not the one drawn. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… screen reconnectMcp sends to actingSessionId, as Stop, answers and Use tools do: while a switch holds the pane on the chat before, the Inspector the person clicks is that chat's, so its server name goes to that chat, not to the chat opening. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
938830c to
04c8880
Compare
|
|
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40254211483 at 4aadb48 failed: cmux-next Release compile (fleet fast check). |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40255417638 at ebbefce failed: cmux-next Release compile (fleet fast check). |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40254440965 at c7c6530 failed: cmux-next Release compile (fleet fast check). |
Claude Code's stream-json rate_limit_event lines become the session
detail's usageLimits and a session_info_update with
_meta.acpmux.usageLimits: {windows: [{id, usedPercent 0-100, resetsAt?}]},
newest per window. five_hour is session, seven_day weekly, seven_day_opus
weekly_opus, seven_day_sonnet weekly_sonnet; overage windows are left out.
A failover clears them (the old account's), and a retired agent's late
limits are dropped by the same guard as its /context answer
(agent::process_state, in tap_live and the hub's generation check). A
change is saved with the meta, as a breakdown is.
Rebased onto feat-cmux-next: #24223/#24272 (context breakdown, MCP
reconnect) already landed, so this carries only the usage limits.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…4293) * test: a Claude chat keeps its account's plan usage limits; a failover drops them (red) fake_claude sends rate_limit_event lines (rate-limits-probe, FAKE_CLAUDE_LIMITS=1, and a late one from a replaced process). The chat's detail must carry usageLimits, newest per window, and lose them on a harness failover; a replaced process's late limits are neither logged nor applied. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * acpmux: forward a Claude Code chat's plan usage limits to clients Claude Code's stream-json rate_limit_event lines become the session detail's usageLimits and a session_info_update with _meta.acpmux.usageLimits: {windows: [{id, usedPercent 0-100, resetsAt?}]}, newest per window. five_hour is session, seven_day weekly, seven_day_opus weekly_opus, seven_day_sonnet weekly_sonnet; overage windows are left out. A failover clears them (the old account's), and a retired agent's late limits are dropped by the same guard as its /context answer (agent::process_state, in tap_live and the hub's generation check). A change is saved with the meta, as a breakdown is. Rebased onto feat-cmux-next: #24223/#24272 (context breakdown, MCP reconnect) already landed, so this carries only the usage limits. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * acpmux tests: rustfmt the failover log filter Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: teamleaderleo <teamleaderleo@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Adopted and rebased (2026-10-25). #24223 landed (f08f46b), so this branch now carries only its own change: the original two commits, patch-identical by range-diff, plus one review fix.
Review fix. A Codex re-review found a bug in
reconnectMcp. During a chat switch's hold, the pane still draws the old chat, butreconnectMcpsent the request toselectedSessionId, which already names the chat opening. A Reconnect click on the drawn chat's server therefore went to the hidden chat.reconnectMcpnow usesactingSessionId, as Stop, answers and Use tools already do. The fix went in test-first:agent-pane-hold-acting-chat.test.ts. On the fleet it failed (receivedhold-acting-b).bun run typecheckis clean.Review. A fresh Codex (gpt-6-astra, xhigh) BLOCKed at 171c452 on that one finding. It then said SHIP at 938830c and confirmed that the earlier review's four fixes still hold.
No new timer or observer.
Leo, on the Inspector: "every item must do something on click; Environment, Context and Connectors: their chevrons open their detail." The dead-click audit (#24116) found that Connectors' "Needs reconnect" and "N to reconnect" looked like actions but were plain text.
What changes
_acpmux/mcp/reconnectininitializewhere it serves it (snapshot.reconnectsMcp). There, a failed MCP server's row in Connectors has a Reconnect button. It sendsreconnectMcp(server)for that server and reads "Reconnecting…" while Claude Code connects it. After an error it reads "Try again" in the danger colour and tries again. Once acpmux marks the server connected, the row says Connected.inspector/ConnectorsSection.tsx. Three strings are new:chatInspector.connectors.reconnectAction,.reconnectingand.retry, in all 21 locales.Tests
webviews/test/chat-inspector-connectors.test.tsxcovers:onReconnectMcp, the failed state is a<span>, not a button.context-connectors-opennow shows the failed server with Reconnect.Observed / Not run
scripts/web-lint.sh(passed) andpython3 scripts/cmux-next/prepush-gate.py(no new violations).Changelog
Agent session: big-red
🤖 Generated with Claude Code