cmux-next: session rail Connectors card and polish (cx-ncc.105, cx-ncc.101)
Merged
TE
18d ago+692+692+012345678901234567890123456789-16-16-01234567890123456789
Follow-up to #20901 (session side rail, Debug Settings agent.sessionRail).
Connectors card (cx-ncc.105).
- Shows the MCP servers the session's harness reported loading, from acpmux's
mcpServers(#20924). - Folded, it reads "N connected"; open, it lists each server and marks any that failed or are still connecting.
- Only a harness that reports servers gets the card, which today means Claude Code. ACP harnesses and Codex report none, so they get no card rather than an empty one.
- Order: Environment, Context, Connectors, Outputs.
Rail polish (cx-ncc.101), from #20901's captures:
- In a row, the file or folder name keeps its room, and the folder path after it gives way first. Before, "Grid.tes…" and "ac…" truncated while the path took the space.
- Opening an output's diff beside the chat can leave the pane narrower than the rail's overlay width (560px). The rail would then cover the chat, so it closes. It closes for that moment only, without remembering; the header button opens it again.
New strings (rail.connectors, rail.connected, rail.connectorFailed, rail.connectorPending) ship in all 21 locales.
Verification
- Red, then green:
bun test test/session-rail.test.tsx. bun test test/session-rail.test.tsx test/ui-rules.test.ts test/tooltip-rules.test.ts test/gallery-coverage.test.ts: 16 pass.vp fmt --checkandvp lintare clean on the touched files.- Gallery: new
agent-pane.session-railvariantconnectors. - Real-app light/dark captures from a DEV build on cosmic-gray will be added to this body.
Changelog
none
🤖 Generated with Claude Code
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Follow-up to the session side rail (Debug Settings agent.sessionRail): adds the Connectors card and fixes two layout issues from the previous release's captures.
- The rail now lists the MCP servers the harness reported loading (
mcpServers), folded as "N connected" and open with per-server state (Failed or Connecting) where not connected. Only harnesses that report servers get the card — today that means Claude Code; ACP harnesses get none rather than an empty one. - Row truncation now keeps the file or folder name and gives the folder path up first, instead of truncating both equally.
- Opening an output's diff beside the chat closes the rail when the pane narrows below the overlay width (560px), so the rail no longer covers the chat. The close is momentary and not remembered; the header button reopens it.
- New string keys (
rail.connectors,rail.connected,rail.connectorFailed,rail.connectorPending) ship in all 21 locales, with a gallery variant for the new card. - App-link regexes in
replyHref.tsand markdownlinks.tsdrop a useless\-escape to satisfy theno-useless-escapelint rule.