Repository navigation
cmux next: a leaner Session Info that moves the chat aside - #36937
Conversation
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Gallery before/after for
States
Pick other states with a Passes: CI passes on CI passes on Written by web and size checks: green The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/42189704961 at 405cf67 failed: cmux-next crash ends the app. |
a1feb36 to
fbd79eb
Compare
fbd79eb to
36bd90f
Compare
36bd90f to
d635ed6
Compare
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
This comment has been minimized.
This comment has been minimized.
d635ed6 to
0483101
Compare
0483101 to
c89f113
Compare
c89f113 to
2345fa3
Compare
2345fa3 to
ae3463d
Compare
ae3463d to
688b4de
Compare
688b4de to
7efab7e
Compare
7efab7e to
1d3b279
Compare
Session Info listed every section whether it had content or not, covered the chat's prompts at many pane widths, and kept the chat's scrollbar left of the panel. Its Outputs listed web links and code edits instead of the files the chat made, and its Changes row missed work an agent had already committed. This PR rebuilds the panel around what the chat has and makes it sit beside the chat the way the Codex app's panel does.
sectionOrder.tsMORE_LINE): sections under it fold away, and a drag across it pins or tucks a section. Environment is pinned first with no grip. Section heads lose their icons; the reorder grip sits in the left gutter.changeCounts.ts: uncommitted work, else the branch against its base), which opens the diff beside the chat. No grant rows, cloud note or repository row.ContextSection.tsxrowsOnly). The composer's context card keeps its Details link, which opens Session Info on Context, unfolded and lit.chatOutputs.ts): documents its replies point to (Markdown links, inline code paths, bare names in the chat's folder) and deliverables its file tools created. Never code edits or web links. A file the host reports missing drops off. Opening one uses the samelink.openPathas a path chip, local chats only.sessionInfoState.ts). New chats open with the panel; closing it is remembered per chat. A pane too narrow for a readable chat beside it holds the panel closed until the person opens it, then shows it as a popover.stepAside.ts). Clicking the folder, Changes, an output or a subagent hides the panel; it comes back when the view it opened closes (the header's lit tool, the page's visibility, or the chat narrowing then widening). The toggle, the palette or a reveal brings it back at once.SessionInfo.tsxsessionInfoStage,pushedRoom,pushKeepsColumn;sessionInfo.css). Wherever the chat's column fits beside the whole panel, the column moves left and centers in what the panel leaves. The chat keeps the pane's full width, so its scrollbar stays at the pane's right edge, and the column keeps its own width, so no line rewraps. The move animates through a registered--acpmux-session-info-shifton the motion tokens, only while the panel comes in or leaves; a resize moves the column at once. Panes too narrow for the column and the panel still get the panel over the chat.chatCut.ts), so a Show more or a fold no longer lets the chat show through the grown panel for a frame or two.VirtualTranscript.tsx,rows/SubagentOfPillRow.tsx). In a subagent split, the pill, its × and Escape ask the app forchat.subagentBack(subagents/subagentPanes.ts), so the split can close and the chat tab that opened it take focus. The app side of that request is its own pull request (it changes the page's host request list); until it lands, an app that does not answer shows the chat in place, as before.Unchanged: the Debug native panel keeps taking its room from the chat's row.
chat.subagentBackis listed as unserved inschemas/agent-bridge/contract.jsonuntil #36946 serves it.Takes back #28617: Session Info's Environment no longer lists the chat's grants, to match the ChatGPT app's panel; grants are still revoked from the chat menu's Revoke Granted Access, which that change kept.
Takes back #31958: Session Info's Subagents section draws lean lines and one plain ended fold, without the ended avatars, and shows the running-limit row only while started chats run or wait for a slot; the native panel's models from that change are kept.
Changelog
Tests
src/agent-session/acpmux/session-info/chatOutputs.test.ts: documents found by Markdown link, inline code path and bare name; fenced code, web links and commands in inline code skipped; created deliverables in, code files and edits out; a file both linked and created listed once.src/agent-session/acpmux/session-info/changeCounts.test.ts: a reply that changes nothing gives no counts; uncommitted work wins, a clean tree falls back to the branch's own commits.src/agent-session/acpmux/session-info/sectionOrder.test.tsandtest/session-info-section-order.test.tsx: the Show more line in saved and legacy orders; Environment stays first and has no handle; a drag above it lands right under it.test/session-info-per-pane-state.test.ts: a new chat opens the panel whatever another chat chose; a closed chat stays closed.test/session-info-surfaces.test.tsx: a project row and a subagent row each hide the panel and bring it back when the opened view closes (the subagent case fails without the wrapper inSessionInfo.tsx); a narrow pane opens the panel as a popover.test/session-info-step-aside.test.tsx: the hook comes back after a lit tool goes out and after the page shows again, at once on a refused open or the person's toggle, and after the settle time when nothing showed (the shell-width signal is the surfaces test's subagent case).test/session-info.test.tsx,test/session-info-width-stages.test.ts,src/agent-session/acpmux/session-info/sessionInfoPopover.test.ts,src/agent-session/acpmux/session-info/findBarClear.test.ts: the stage at each width, the whole room and equal gaps wherever the pinned column fits, overlay below that.test/session-info-chat-cut.test.ts: a section added to the panel re-measures the cut with no ResizeObserver callback (fails without the MutationObserver).test/subagent-of-close.test.tsx: the pill is drawn once, outside the scroller, with the row keeping only its room;backToOpeningChatsendschat.subagentBackand reads its answer.Review
Two independent reviews of the diff (correctness first), a third of the fixes, and a fourth of the gallery play and layout-shift baseline updates on this head (no product code). Fixed before push:
STEP_ASIDE_SETTLE_MS, tested).Left as known (P2):
Observed / Not run
Observed:
scripts/web-lint.shand the type check pass, andprepush-gate.pypasses. Thethread-minimap-default-wavetest fails one run in two on this branch and on a cleanorigin/feat-cmux-nextalike.Not run: no screenshots yet; no fleet build or capture.