Session Info: the machine, Context, what it runs, then Sources by default

Merged
TE
3d ago
+164-49

Follow-up to #32817 (the web Session Info panel is the default again).

Leo, on the Session Info panel: "buttons stay in swift, summary panel in react", "i just want a good one". His list, in this order: "1. Machines showing up so I know if it's cloud or not 2. context 3. Subagents/background tasks running 4. Sources... you can technically use that area to add them".

What changes

  • Default section order (sectionOrder.ts DEFAULT_ORDER): Environment (the machine row: this Mac, SSH or Cloud) → Context → Usage → Subagents → Background tasks → Sources → Changes → Outputs → Connectors.
    • Usage keeps its place right after Context (#28773: a folded row valued at this chat's 24h cost).
    • The sections he did not name follow Sources. No section is dropped.
    • A saved order (any drag, any pane) still wins. The stored format is unchanged, so there is no migration. A person who never dragged gets the new order.
    • Block membership (GROUP_SECTIONS, which draws the hairlines and reads the #27291 per-block format) is unchanged. The hairlines now fall between Usage and Subagents, between Background tasks and Sources, and before Connectors.
    • The page also builds the native panel's model from sectionOrder(), so the native panel gets the same order.
  • Width stages (no code change, now pinned by test/session-info-width-stages.test.ts), checked against #32817 and #32591:
    • 1800px pane: it floats in the free right gutter.
    • 900px pane: it pushes the chat left at its own width.
    • 370px pane: it pushes at its 200px floor and waits for the toggle.
    • No tall pane of any width draws it over the chat.
    • A short pane's popover is the only stage over the chat. #32591 ("always pushes the chat left, never covers it") removed covering the chat in a narrow pane, and this PR keeps it removed.
  • Gallery: agent-pane.chat-inspector / full now asserts the default order in its play. The notes for full and reorder-dragging describe the new order.
  • Tests: the order fixtures in session-info-section-order.test.tsx and session-info-section-order-browser.test.tsx follow the new default. The drag offsets are recomputed for the new section tops.

References

cmux-design-references ids (private, not attached): claude/live/session-info-environment-and-context-panel, claude/live/session-info-popover-remote-control-context (the machine first, then context), claude/live/claude-right-panel-running-tasks (running tasks and agents in the rail), chatgpt/live/sidebar-session-info-rail-sections (subagents and sources in one panel), cmux/live/session-info-summary-panel-regressed.

Spec: leo-workspace design/session-info.md, updated in a separate notes PR with the order rule.

Changelog

Changed: Session Info lists the machine first, then Context, running subagents and background tasks, then Sources.

Observed / Not run

  • Observed: scripts/web-lint.sh passed and prepush-gate.py reported no new violations. Test results from cmux-ci test are in a comment below.
  • Not run: no local gallery capture.

Agent session: agent session

🤖 Generated with Claude Code


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


Summary by cubic

Changes the Session Info panel's default section order so the machine appears first, then Context, running subagents and background tasks, then Sources. A saved order from any drag still wins, and the stored format is unchanged, so no migration is needed.

  • New default order: Environment, Context, Usage, Subagents, Background tasks, Sources, Changes, Outputs, Connectors. Usage keeps its spot after Context, and the sections Leo didn't name follow Sources; none is dropped.
  • Block membership and hairline styling are unchanged, so the hairlines now fall between Usage and Subagents, between Background tasks and Sources, and before Connectors.
  • Adds a test pinning the existing width stages (floating in the gutter at wide panes, pushing the chat at mid widths, waiting for the toggle at the 200px floor); no layout code changed.
  • The gallery's full chat now asserts the default order.