cmux NEXT: draw Session Info with native AppKit glass

Merged
TE
19h ago
+1857-13

Draw Session Info with AppKit overlay glass using a page-supplied model. The native view forwards row actions, section folds, reorder drags and edge resizing to the page; TS retains section content and saved choices. agent.sessionInfo.native remains off by default until the remaining parity work lands.

Reuses the native shell design from closed #27513. The fallback remains the current web Session Info. Design: design/session-info.md, design/glass.md, design/pane-placement.md, design/motion-and-polish.md.

Leo-ask: ask-560d04c05d

Leo's request:

2026-10-26: "the session rail session info thing, like, you literally didn't do. I mean, why is the button not toggled? ... you still haven't done the full-length thing. It's still just this constrained height for, like, no reason at all."
2026-10-29: "plus we're gonna be doing that part natively in swift anyways?"
2026-10-29: "But I literally fing said to do that. I literally fing said to do that."
2026-10-29: "You can just edit the fing web UI" / "it's so fing lame to be delaying the entire f***ing thing based off of ... the Swift thing".

Validation: static prepush checks pass. Exact-head compile check and AgentPaneNativeSessionInfoTests run on this PR; the suite covers model decoding, full-length and zoom geometry, actions, shared-host Debug flips, input witnesses, renderer cleanup and stable live rows. Native remains off by default.

The complete native view, bridge lifecycle and behavior tests form one compilable seam (about 1,850 lines); section policy and page integration are separate PRs. Splitting this further would leave a placeholder view or disconnected lifecycle. Risk: native overlay geometry and input forwarding, contained by the off-by-default Debug setting until parity.

Changelog

none

Agent session: agent session


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Draws Session Info with native AppKit glass instead of the web panel. The page still determines what each section lists and sends it over pane.sessionInfo; the App draws the full-length floating panel and forwards row actions, section folds, reorder drags, and edge resizing back to the page. agent.sessionInfo.native stays off by default, so the current web panel remains the fallback, and flipping the Debug toggle switches between them with no reload.

  • Adds the pane.sessionInfo and pane.copyText bridge requests and the sessionInfoHost handshake event, including model decoding and clipboard handling.
  • Handles page crashes and reloads so the panel clears and restores with the page.
  • Covers model decoding, full-length and zoom geometry, actions, and Debug flips in AgentPaneNativeSessionInfoTests.