cmux-next: session rail Connectors card and polish (cx-ncc.105, cx-ncc.101)

Merged
TE
18d ago
+692-16

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.
    • Narrow-overlay test: red on a86698b (the rail stayed open), green on 4ea8200.
    • Connectors test: red on bb73c01 (no card), green on df64733.
  • 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 --check and vp lint are clean on the touched files.
  • Gallery: new agent-pane.session-rail variant connectors.
  • Real-app light/dark captures from a DEV build on cosmic-gray will be added to this body.

Changelog

none

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
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.ts and markdown links.ts drop a useless \- escape to satisfy the no-useless-escape lint rule.