Repository navigation
Transcript: a message's hover action row sits centered between it and the next message - #29888
teamleaderleo wants to merge 6 commits into
Conversation
…ext message The hover action row under a prompt (age, copy, ...) and a turn's footer (worked for, copy, read aloud, the menu, its age) now keep one --cv-meta-gap above and the same gap below, so the row is centered between the two messages (Leo: "padding after == padding before"). --cv-meta-gap is the message gap (8px); a footer row ends at it instead of the 16px turn gap, an empty footer keeps its hidden line plus the gap, and the chat's last footer keeps the turn gap over the composer. model.ts estimates follow; the transcript spacing browser test measures top gap == bottom gap. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-051b4838bcceb3e2db2b
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-051b4838bcceb3e2db2b
|
Review (subagent claude-opus-5-5): SHIP at 2b22cb3 The CSS and the model.ts estimates agree in every footer case (
Other places affected:
The changed unit test files pass. Follow-ups:
|
… the meta gap Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-051b4838bcceb3e2db2b
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. |
There was a problem hiding this comment.
2 issues found across 11 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="webviews/src/agent-session/acpmux/continuationSpacing.test.ts">
<violation number="1" location="webviews/src/agent-session/acpmux/continuationSpacing.test.ts:43">
P3: This assertion no longer verifies the retained-footer cache when the following row changes from a continuation to a user row: stale reuse of the previous 32px height would pass unchanged. Add a transition whose expected edge produces a different height, such as an incoming-agent row, while keeping the separate 32px prompt assertion for the new spacing contract.</violation>
</file>
<file name="webviews/src/agent-session/acpmux/conversation/conversation.css">
<violation number="1" location="webviews/src/agent-session/acpmux/conversation/conversation.css:4662">
P3: The comment says an empty last footer is "that gap alone", but the new `min-height: var(--cv-meta-row)` makes it 24px, not the 16px turn gap. Reword the comment to say the empty last footer keeps its 24px meta line.</violation>
</file>
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
| const changed = [...rows, row("next", "user", { text: "Next task." })]; | ||
| const switched = layoutConversation(changed, 720, undefined, undefined, known, { rows: next, layout: continued }); | ||
| expect(switched.heights[0]).toBe(40); | ||
| expect(switched.heights[0]).toBe(32); |
There was a problem hiding this comment.
P3: This assertion no longer verifies the retained-footer cache when the following row changes from a continuation to a user row: stale reuse of the previous 32px height would pass unchanged. Add a transition whose expected edge produces a different height, such as an incoming-agent row, while keeping the separate 32px prompt assertion for the new spacing contract.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At webviews/src/agent-session/acpmux/continuationSpacing.test.ts, line 43:
<comment>This assertion no longer verifies the retained-footer cache when the following row changes from a continuation to a user row: stale reuse of the previous 32px height would pass unchanged. Add a transition whose expected edge produces a different height, such as an incoming-agent row, while keeping the separate 32px prompt assertion for the new spacing contract.</comment>
<file context>
@@ -37,11 +40,11 @@ test("a retained footer changes its estimate when a continuation arrives or beco
const changed = [...rows, row("next", "user", { text: "Next task." })];
const switched = layoutConversation(changed, 720, undefined, undefined, known, { rows: next, layout: continued });
- expect(switched.heights[0]).toBe(40);
+ expect(switched.heights[0]).toBe(32);
expect(switched).toEqual(layoutConversation(changed, 720));
});
</file context>
| /* The chat's last footer keeps the normal turn gap above the composer (not a message); an empty one | ||
| (its controls hidden) is that gap alone. */ | ||
| .acpmux-row.acpmux-turnSummary.acpmux-row--last-footer { | ||
| min-height: var(--cv-meta-row); |
There was a problem hiding this comment.
P3: The comment says an empty last footer is "that gap alone", but the new min-height: var(--cv-meta-row) makes it 24px, not the 16px turn gap. Reword the comment to say the empty last footer keeps its 24px meta line.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At webviews/src/agent-session/acpmux/conversation/conversation.css, line 4662:
<comment>The comment says an empty last footer is "that gap alone", but the new `min-height: var(--cv-meta-row)` makes it 24px, not the 16px turn gap. Reword the comment to say the empty last footer keeps its 24px meta line.</comment>
<file context>
@@ -4641,19 +4643,23 @@ article.acpmux-row:not(:has(> :not(.acpmux-row__gap))) {
+/* The chat's last footer keeps the normal turn gap above the composer (not a message); an empty one
+ (its controls hidden) is that gap alone. */
.acpmux-row.acpmux-turnSummary.acpmux-row--last-footer {
+ min-height: var(--cv-meta-row);
padding-bottom: var(--cv-turn-gap);
}
</file context>
|
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 red: cmux-next checks (god files, concurrency, crash safety, l10n); base red: the same failure on the base afef751; does not block |
…ript-meta-row-centered # Conflicts: # webviews/src/agent-session/acpmux/model.ts
|
Review (subagent claude-opus-5-5): SHIP at 47492a7 This head is a base merge that brings in #29124. It also re-confirms the gallery fix at 33a74fe: the empty-footer play now expects the 24px controls line plus the 8px meta gap, matching the CSS.
Follow-ups:
|
|
Found 8 test failures on Blacksmith runners: Failures
|
|
The red |
|
Owned by an agent session · session |
|
Merge conflicts with feat-cmux-next, not resolved: non-trivial. #29860 landed a different way to center the turn footer (--cv-footer-drop, padding-bottom from the turn gap, last footer resting on REST_GAP), while this PR centers it by making --cv-meta-gap equal the message gap. conversation.css .acpmux-turnSummary rules and the spacing assertions in agent-pane-transcript-spacing.test.ts and transcript-continuation-spacing.test.ts contradict each other. Needs a rework on top of #29860, or close if #29860 covers the ask. |
|
Orphaned: no activity for 13 h, and no lane holds a lease on it. The orphan sweep could not merge |
|
Awareness note from an agent lane that does not own this PR; it is not a review or a request to take the PR over. For whoever picks this up: the ask behind this PR is covered on the base, and landing this now would undo a later order.
So this PR's conflicts aren't worth resolving. It's left to its owner to close (with a comment). |
|
Closing as superseded; base already covers this. Every part of this PR's intent (Leo, 2026-10-31: "centered in between the two things ... padding after == padding before that kinda thing all around") has landed another way:
Base also moved transcript rhythm onto the grid schema (transcriptGrid.ts). |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Ask
Leo, 2026-10-31, on the cmux NEXT agent chat transcript: "when i hover this little whatever time ago copy sound ellipsis thing should be centered in between the two things you're saying in between so padding after == padding before that kinda thing all around"
Problem
A message's action row (a prompt's age and copy row; a turn's footer with Worked for, copy, read aloud, the menu and its age) stood 4px under its message (
--cv-meta-gap) and then 8px (a prompt's, the row's message gap) or 16px (a footer's, the turn gap) over the next message. So the row hugged the message above and floated far from the one below.Change
One spacing token on both sides of every meta row:
--cv-meta-gapis now the message gap (var(--cv-message-gap), 8px), above and below.--cv-meta-gap(was the 16px turn gap). An empty footer (hover-only controls) keeps its 24px line plus the gap, so its controls are centered too when they show.model.tsestimates follow (META_GAP = MESSAGE_GAP; a footer is its line and the meta gap, the last one the turn gap), so first layout matches the drawn rows.harnessStatus.cssused--cv-meta-gapas its grid row gap; it now names its own 4px so that surface does not change.Spacing totals: reply → next prompt goes from 4 + 24 + 16 = 44px to 8 + 24 + 8 = 40px; a prompt's row band from 4 + 24 + 8 = 36px to 40px. The same-assistant continuation footer was already 8px below; it is now centered too. A running line's words under a reply move from 16px to 20px under it.
Tests
webviews/test/agent-pane-transcript-spacing.test.ts(Chromium): new test measures, for a prompt's action row and a turn's footer, the gap above == the gap below (within 1px), and that hovering the prompt changes neither gap. The rhythm test's bounds follow the new numbers.webviews/test/transcript-continuation-spacing.test.ts: footer → the person's prompt is now 8px (centered), another agent's line keeps 16px.rowEstimates.test.ts,continuationSpacing.test.ts: estimates follow (a non-last footer 32px, the last 40px; a prompt's meta 8 + 24).Risk
Low: CSS tokens and their matching estimates in the agent chat transcript. Turn spacing is 4px tighter and a prompt's band 4px taller. Overlap: #29124 (open) derives
--cv-status-gapfrom--cv-meta-gap; after this lands its status room is computed from the 8px gap.Spec: leo-workspace design/chat-transcript.md (transcript rhythm) is updated to match.
Agent session: agent session
🤖 Generated with Claude Code