Agent chat: PR pills share the message action row
PR links now share the message action row as transparent #N repo pills. Each number is underlined and its whole pill opens the PR. Up to two links fit beside the actions; +N opens an instant glass popover outside transcript layout. Footerless replies attach links to their final content or existing block actions. The former composer row and its extra spacing are removed.
Lawrence: "pr should be pill instead / not take up so much vertical space"
Leo: "yeah wtf plus there's still so much of a vertical gap in things... where are the improvements? and wtf why does opening it push shit up so much? and why aren't you just underlinning the text and having the area be clickable without highlights? just put them to the right..."
Takes back #25633's inline expansion and #22731's full-width PR title-bar treatment. Preserves #24190's reference deduplication and glass, #25723's 16 px turn gaps, #25208's visible-changes selector, and the producer revision cache.
Gallery agent-pane.pr-dock contains two-link, one-link and tight-spacing alternatives. The selected design shows up to two links, reducing to one on narrow panes. Footerless paragraph, code, diagram, table, math, rule and footnote states are covered.
Risk: renderer prop integration and narrow-width layout. The optional artifactIdentity/artifactRevision props from artifact step B must coexist with these action props when integrated. The pill sizing ResizeObserver observes only the mounted pill and measurement spans; effect cleanup disconnects it on replacement or unmount.
Changelog
Fixed: PR links share the message action row and overflow opens without moving the transcript.
Validation at the current head
- Head:
684aca12e1f67cf10a300e4e44e7c73cbbda2d64; merged base51e238d4a2f20a2f3c0fd9fb6ff25bf08b8d3eef. - Fleet run 40956304969: prescribed web lint passed; 5 transcript regressions and 46 browser cases passed. Snapshot
26923583476b04c2eee05dd0d21a8367404da411has the identical tree11d77819f713878d6703fab66b4792c599c81425. - Exact-head static prepush gate passed with no new violations.
- Fresh independent whole-diff review and hosted-check reconciliation are in progress.
- The earlier repair attempt stopped at the design-token check before tests; the corrected baseline restores the unchanged comparison styles' base entries. It adds no allowance above base.
- Action-row reference: Claude's message action row; private reference captures stay private.
The renderer now confirms PR host mounting rather than inferring it from parsed block count. Empty nested quotes keep the fallback; finished replies with their own action row place pills in that row. Existing gallery variant IDs and comparison treatments are retained alongside inline-pills, one-first, and tight.
Performance
| Metric | Before | After | Delta | Harness |
|---|---|---|---|---|
| Historical child-row reads per parent token | 501 | 0 | -501 | transcript-pr-revision.test.tsx, paired fleet run 40889495686 |
Visual evidence
Real Linux/Chromium gallery captures from cmux-ci 677aa177a22087bc437e1861, using demo content only. These show the implementation and alternatives; final-head focused validation is linked above. No private reference images are published.
| Selected, wide | Selected, narrow with overflow open |
|---|---|
![]() | ![]() |
| One-link alternative | Tighter-spacing alternative |
|---|---|
![]() | ![]() |
Same-fixture comparison
The before run 40592784965 passed all three capture cases. It uses the unchanged pre-feature renderer at 355a79f83f9d3d4df15bc94a86116ea66b4839df, plus capture-only gallery/test files at 2ae7ea70cc15596e5fb5e1c26adb4fc741a2c2ea (tree e61a176fb041419a929e72de85a0eafedce335f0). The persisted inspector is closed through its setting; PR support is enabled. The invalid attempt that disabled PR support is excluded.
The after frames are from 40592216956, source 02d531dc57d5b345ed6c734ee9c7fe3e940b8315. Both use agent-pane.pr-dock#compact-count, the same demo PRs and 760×420 / 320×420 viewports. Production files are byte-identical between that after-capture head, reviewed implementation head d38957a9983f5f3f73f6a5cc0e44e9caefdc1420 and final fixture-repair head 0eae1baeed95adf02c5b2e7ddc06341b9352d9eb; only two browser test files changed. Unrelated base changes to the header and composer are not attributed to this PR.
| Before, wide | After, wide |
|---|---|
![]() | ![]() |
| Before, narrow | After, narrow |
|---|---|
![]() | ![]() |
All four files are original browser exports, verified byte-for-byte against the run logs. No private references or synthetic replacement images are used.
Size: One renderer contract spans Markdown/code/media tails and their fixtures. Splitting it would leave unsupported intermediate renderers. The base merge adds no feature scope.
Agent session: agent session







