Transcript spacing: enforce received, status and expanded-run rows over one gallery scene

Merged
TE
4d ago
+390-2

Enforces the new rows of the transcript spacing table as pitch tests over one gallery scene. Each row kind of Leo's 2026-11-02 capture (a received line, "Scheduled check", an expanded "Ran 2 commands", "Compacting the conversation…") now has a measured row with a target.

Leo, 2026-11-02 23:59Z, on that stretch of the transcript: "these are all so stupid looking", then "as in" / "the spacing" / "y'all need to just go study". Earlier that day: "we need to like enforce the good versions when we find them later in the specs/comments/tests or something".

  • transcriptSpacing.ts: TRANSCRIPT_SPACING_KINDS adds 11 rows: body-line, footer-to-received, received-to-status, status-to-run, run-to-child, child-pitch, child-to-prose, footer-to-prompt, prompt-to-status, status-to-prose and step-to-status. RUN_CHILD sets an opened run's child indent, 0 from the head's text.
  • TranscriptSpacingTable.gallery.ts: variant all-kinds is one Claude Code chat (summary.family = "claude") with these rows in order:
    • a prompt, a two-paragraph reply and its footer;
    • a received message, then "Scheduled check";
    • "Ran 2 commands" (the test opens it), a reply and its footer;
    • the next prompt, a finished compaction and a two-line reply;
    • a command, then "Compacting the conversation…".
  • test/transcript-spacing-kinds.test.ts: opens the run and measures each row between visible marks (glyph-box centres, bubble edges, footer glyph centres), in Chromium, light and dark.
  • All rows are on value: the three status-line rows (received-to-status, status-to-run, step-to-status) measured 45.5 to 46 before #32726 ("status and tool rows sit flush") and are 22 now, so none is pending.

The targets, and the ChatGPT and Claude references behind each, are in leo-workspace design/transcript-spacing.md, section "Row kinds" (teamleaderleo/leo-workspace#2586). The composer rest gap stays with agent-pane-composer-rest-gap.test.ts.

Changelog

none

Observed / Not run

  • Observed: cmux-ci test --setup playwright -- bash -c 'cd webviews && CMUX_TRANSCRIPT_SPACING_LOG=1 bun test test/transcript-spacing-kinds.test.ts test/transcript-spacing-table.test.ts' passed on the fleet at this head's tree: 98 pass, 0 fail, across 2 files. Before #32726 the gaps were identical in light and dark: body-line 22.75, footer-to-received 51, received-to-status 45.5, status-to-run 46, run-to-child 22, child-pitch 22, indent 0, child-to-prose 38, footer-to-prompt 48, prompt-to-status 42.5, status-to-prose 38, step-to-status 46. After #32726 the three status rows measure 22.
  • Observed: bun run check and python3 scripts/cmux-next/prepush-gate.py passed.
  • Not run: no app build. The change is a test, a gallery fixture and test constants, with no product code.

Agent session: agent session

🤖 Generated with Claude Code