Session Info: page model and native action bridge (ask-560d04c05d)
Session Info needs a page-owned model before AppKit can draw the current sections. Add that typed model, native host capability events, and action routing into the existing pane width, folds, and saved section order. This is the first part of the native port; it draws no UI and changes no default.
Reuses the transport contract from closed #27513. Section builders are being rebuilt against today's session-info/ helpers rather than restoring the old builders. Design: design/session-info.md, design/glass.md, design/pane-placement.md, design/motion-and-polish.md in the workspace spec.
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: 6 focused bridge/action tests pass (31 assertions), covering capability withdrawal, retired handlers, malformed events, long Unicode IDs, width bounds, folds, and reorder across groups. Web lint passes. No capture: dormant transport only. Existing localized strings will be supplied by the page model; no user-facing copy is added.
Changelog
none
Agent session: agent session
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Adds the page-owned Session Info model the App will draw, plus the host bridge that announces the native capability and routes clicks back — the first part of the native port, drawing no UI and changing no defaults.
The model carries rows, sections, buttons, and stable action IDs, reducing long IDs to bounded hashes the App can return. Native clicks for width, folds, and section order route into the existing pane state, so the web and native panels share one state; capability withdrawal, replaced models, and malformed events are ignored.