Session Info: the page draws it by default again, with the native panel's header buttons (held for Leo)
Leo's call (team thread): "buttons stay in swift, summary panel in react", "i just want a good one".
Leo: "also as for the session info like why dont we just bring back the web ish session info and just nativize the buttons? if the fixes are slow..."
This is a ready fallback, held on purpose. #32643 once flipped the native panel off and #32650 reverted it. This PR does the same flip (agent.sessionInfo.native default true to false), so it stays held until Leo has seen the native fixes (items 1-6) in a nightly and chooses. It does not land on review alone.
What changes
- The page draws Session Info by default.
AgentPaneTunables.nativeSessionInfodefaults tofalse(Debug Settings can still turn the native panel on). The default test now readspageDrawsSessionInfoByDefault, andschemas/defaults/cmux-next.jsonfollows. - Web header buttons match the native panel (#32674):
- Section titles are medium weight (500). This was already true on web, so nothing changes there.
- The fold chevron goes after the title and shows on hover only (cmux#32765). It used to sit at rest after the count (
order: 1, ormargin-left: autowith no count). Now it sits one grid gap after the title, hidden at rest with its room kept, so the title doesn't move. It shows on head:hoveror:focus-visible. - The six-dot grip shows only on header hover. It used to show while the pointer was anywhere over the section. Now it shows when the head is hovered (for a bare section like Environment, its first row), when the grip itself is hovered or has keyboard focus, or during a drag. Nothing draws at rest, and hovering the section's other rows doesn't show it.
- The pressed toggle fill was already on web (#32704), so nothing changes there.
- No background card when pushed (Leo, 2026-11-02: "we still HAVE AN ASININE BACKGROUND"; native #32661). The panel is
.ui-glassonly where the chat runs under it: floating over the chat's column (a foot) or as the short-pane popover. When it is pushed beside the chat, or floating in the empty gutter, it has no fill, blur or shadow, and the see-through blur is off there too.
Spec (leo-workspace design/session-info.md, header chevron/grip row): "The fold chevron sits one grid gap after the title in a 16pt box and shows only on hover (or keyboard focus with Full Keyboard Access). The six-dot grip is in the header's right inset, past the trailing column, and shows only on hover or while dragging; at rest neither glyph draws. ... Web follow-up: the web panel (sessionInfo.css .acpmux-session-info-section__fold, order: 1) still draws its fold chevron at rest, after the count; it should match native (after the title, on hover)." Item 3 departs from that spec's rule 6, "Glass, the composer's glass", for the pushed and gutter cases. The spec needs that line updated if this PR lands.
Gallery
SessionInfo.gallery.tsx:
push: its play asserts there is no card (not.ui-glass, transparent background, no backdrop filter, no shadow).- New
header-chevron-hover: every chevron is hidden at rest. On head hover the chevron shows after the title, and the title doesn't move. - New
header-grip-hover: no grip shows at rest, and none shows when a body row is hovered. On head hover the grip shows at the head's right edge. glass-over-transcriptnow floats over the chat's column (foot), where glass stays.
Tests
test/session-info-glass.test.tsx(browser lane): over the chat the panel is glass, and under Reduce Transparency it is opaque. Pushed or in the gutter it has no card, also under Reduce Transparency.scripts/check-popup-hover-reveals.ts: the old section-hover exemption is replaced by the new head-hover grip and chevron reveals. Neither opens a menu.
Observed / Not run
- Observed:
bun install --frozen-lockfile, thenbun teston the hover-reveal checker test and everytest/session-info*andtest/native-session-info*test: 243 pass, 15 skip (browser lane), 1 fail. The failure is "a running subagent's hover card with a long command stays in the page". It fails the same way on base in the same batch and passes alone. - Observed:
bun scripts/check-popup-hover-reveals.tspasses.vp lintandvp check --no-fmt --no-lintpass (no type errors), and so do the design-token, layout-grid, ui-review, session-info-names, fixed-waits, browser-lanes and surface-roles checks.scripts/web-lint.shstops only onChiefPromptBubble.gallery.tsformatting, which is red on base and not in this diff. - Fleet compile check for CmuxNext: see the comment below.
- Not run locally: the browser-lane glass test and the gallery plays (CI and Freestyle only).
Regressing PR for the header look: #31930 (first native panel). The web chevron placement predates it.
Agent session: agent session
🤖 Generated with Claude Code
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Turns the page-drawn Session Info back on by default, with section headers matching the native panel's, and drops the card background when the panel doesn't float over the chat. This is a held fallback: it flips agent.sessionInfo.native from true to false, waiting on Leo's call after he reviews the native fixes (items 1–6) in a nightly.
- The page draws Session Info by default; Debug Settings can still turn the native panel on.
- The fold chevron sits one grid gap after the title, hidden at rest, and shows only when the section head is hovered or keyboard-focused; the title doesn't move when it shows.
- The six-dot grip shows only while the head (a bare section's first row), the grip itself, or a drag is over it—never at rest and never for a pointer over the section's other rows.
- Glass stays only where the chat runs under the panel (over the chat's column or as a popover); pushed beside the chat or floating in the gutter, the panel has no fill, blur, or shadow.