Session Info: native section headers draw the hover chevron after the title and the six-dot grip at the right edge
Leo, 2026-11-02, on the native Session Info:
WE F***ING HAD THESE
(the hover chevron after a section title, and the six-dot drag grip at the header's right edge), and on the always-on ā” drawn over the left icons:
THESE ARE JUST SO INSANELY STUPID LOOKING
PLUS THE DRAGGABLE LIKE / HOW COULD YOU GUYS JUST SHIP A COMPELTELY FED UP UNSTRUCTURED FING NONSENSE LOOKING NATIVE
What was wrong
The native panel (AgentPaneSessionInfoContent.swift) didn't match the web panel's SessionInfoSection:
- Every reorderable line got an always-visible
line.3.horizontalgrip, drawn atlead - 6on top of the icon column. textXadded 14pt for that grip, which knocked the Usage, Connectors and Context titles off the column the rows use.- Section titles used
Typography.header, a semibold chrome style at caption size. The web title isfont-weight: 500at the panel's size. - The fold chevron was always drawn, at
title + 6in a 10pt box.
All of this came in with #31930 (8b6c6b37455, "draw Session Info with native AppKit glass"); found with git log -S'line.3.horizontal'.
Fix (header, grip and chevron only)
- Title:
Typography.bodyEmphasized, i.e. the rows' size at medium weight. This is the web's.acpmux-session-info-section__title { font-weight: 500 }. It is not bold, and not the regular 400 weight either. - Chevron: it sits one grid gap (
LayoutGrid.gap, 8) after the title, in a 16pt icon box (LayoutGrid.iconBox), and shows only on hover or keyboard focus. Its room is always held, so the title never moves or re-truncates on hover. - Grip: six dots drawn as the web's
GRIP_DOTS(a 6Ć14 box, dots of r 0.9 at x 1.25/4.75 and y 3/7/11). They sit centered in the line's right inset, past every trailing value, which is the web's.acpmux-session-info-section__handlein the body's right inset. The grip is hidden at rest and shows on hover, muted. While dragging it takes the text color and an open/closed-hand cursor. A drag from it sends the existingmove:<id>:<before|end>. A plain click on it does nothing, like the web handle button: no fold, no move. - The grip takes no title-column room.
textXno longer adds 14pt for it.
Spec, leo-workspace design/session-info.md:
- ""Click drag" there is the six-dot grip a card shows on hover: grab it and drag the card anywhere in the panel; the others slide aside and the order stays."
- Web
sessionInfo.css: "The six-dot handle that moves a section ... at the right end of the section's head past its trailing column, as Claude Code draws it ... seen only on hover, keyboard focus or while it drags".
Reference ids (cmux-design-references): claude/live/sidebar-session-info-draggable-sections, cmux/live/session-info-panel-redesign-regressions, cmux/live/sidebar-drag-grip-too-close-to-thumb.
Note: the web draws its fold chevron all the time and at the head's trailing end (order: 1). This PR follows Leo's own words instead, "the hover chevron after a section title": the chevron sits after the title and shows on hover.
Sibling work: #32646 (a header's hover fill) and the shared icon, title and values columns (a separate helper) touch the same file. This diff stays to the header title font, the grip and the chevron.
Tests (AgentPaneNativeSessionInfoTests)
sectionHeadersShowTheirChevronAndRightEdgeGripOnlyOnHover:- at rest, no grip and no chevron show, and no image sits right of the icon column;
- the header titles are lighter than semibold, not bold, and at the rows' size;
- a header with an icon has its title on the rows' column;
- foldable headers have a chevron, and a plain header has none;
- on hover, the grip is at the right edge, past every other visible view, the title x is unchanged, and the chevron sits exactly
gapafter the title; - on exit, both hide again.
dragByTheGripReordersSections: in a window, a click on the Changes grip sends nothing, and a drag from it onto the top of Context sendsmove:changes:context.
Observed / Not run
- Observed: the prepush gate passed (no new violations). Fleet compile and the test suite results are in the comments below.
- Not run: a native capture next to the web gallery.
Changelog
Fixed: Session Info section headers show their fold chevron and six-dot reorder grip only on hover, with the grip at the header's right edge, instead of an always-on grip over the icons.
risk: normal, header view code in one file.
Agent session: agent session
š¤ Generated with Claude Code