Skip to content

Chat: halve the gap between the same assistant's turns - #26755

Merged
teamleaderleo merged 5 commits into
feat-cmux-nextfrom
nx-transcript-spacing-1028
Oct 29, 2026
Merged

teamleaderleo merged 5 commits into
feat-cmux-nextfrom
nx-transcript-spacing-1028

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Consecutive turns from the chat's assistant use an 8px footer-to-next-turn gap, half the existing 16px turn gap. Human prompts, incoming messages from another agent, and the end of the transcript keep the full gap. The assistant identity comes from the chat's own assistant/activity rows; incoming peers remain user rows.

Leo: "I feel like you could probably halve the padding, the whole gap in between here, because it's just your messages, right?"

This follows foundations §3/4 (merged in #1352): the existing shared spacing tokens own the geometry. Section 3 says "New padding and gaps use the scale"; section 4 says "No O(rows) work per streamed token". The visible-row renderer computes its existing next-drawn neighbor once and shares it across all three footer flags, with no new traversal, timer, observer or frame loop. Estimated heights and the row-height cache use the same continuation boundary as the rendered footer.

The gallery agent-pane.continuation-spacing compares half gap, two-thirds gap, and half gap with the footer tucked. Selected: half gap with the existing footer inset, keeping its controls clear of the text. References inspected at cmux-design-references a8578a4: Claude transcript-markdown-rendering.png and transcript-tool-rows-and-task-list.png, and Codex transcript-expanded-command-activity.png.

Public fixture before / after

Same public fixture, viewport and real footer hover. Captured at 3a60a033433959c5034b2e0404281464878dd5a5. The current reconciliation head 05f5e73381cc5eb81564d33ab76282917b3c415b retains the implementation’s DOM and geometry; the same public fixture captures apply.

Before: full gap Selected: half gap
Before: 16px Selected: 8px
Half, existing footer inset (selected) Two thirds Half, footer tucked
Half Two thirds Half with tucked footer

Validation

  • Final focused Linux run 40795315914 passes at 05f5e73381cc5eb81564d33ab76282917b3c415b, with 27 tests / 152 assertions, including actual browser spacing, continuation classification, retained row estimates and row-layout linearity. Web lint/check, scoped pre-push gate and whitespace check pass.
  • Merged base: 7bf46b579c0435d6cd103fca79190bfdad9f799f. The cold row-layout measurement is 26.70ms; per-update p50 1.61ms / p95 2.62ms / max 2.71ms in the existing linearity harness.
  • The original red/green run 40646988020 fails before the fix (same-author gap 16px, expected 8px), then passes all 27 focused browser/model/cache/linearity tests after it.

Review (independent Codex gpt-6-astra high, review_spacing_final_26755): SHIP at 05f5e73

The different-model read-only reviewer inspected the whole final diff from the bare mirror, including boundary classification, row-edge cache invalidation, measurement dependencies, CSS and estimates. No concrete lifecycle, cache, scroll or per-token complexity blocker was found. Primary inspection agrees. This is a subagent review, not a fleet review-box run.

Observed / Not run

Final check reconciliation: the original inspector run timed out before its sixth case, so that case supplied no verdict. The desktop WebKit diff-selection case reported value_ versus an empty selection; the retained base assertion was insufficient to classify that failure as a base red. Clean exact-tree recovery run 40802169837 passed all 14 tests (8 desktop and 6 inspector), with tree 0219470fcf5e0e245579216277d2ad15e79eae75 identical to the frozen source head. No source change was needed.

Measured footer-to-next-row gaps are 8px for the same assistant and 16px for incoming-agent and human boundaries; computed padding is [8, 16, 16, 16]. Changing the shared spacing tokens on documentElement changes those computed paddings to [10, 20, 20, 20]. Retained row-height estimates update across continuation and speaker changes, and empty footer controls keep their 24px floor.

The two runs above have red workflow conclusions from snapshot-wrapper issues: the first history-sensitive gate examined the parentless snapshot as a new repository; the second command passed, but the wrapper rejected the deliberate checkout from the snapshot to the real source head. Both report the same tested source tree e3235ef1b09af53626a29d2503cf45bfa95f18c4. Narrow recovery run 40648260773 succeeds with snapshot HEAD fixed and the published source SHA passed to the gate. Native app build and macOS dogfood were not run.

Overlap checked before edits and after implementation. Coordinated with the owner of #26373; this change leaves its received-message and queued-delivery implementation to that PR. The coordinating agent owns final independent review, required-check reconciliation and landing.

Changelog

Fixed: Consecutive turns from the same assistant use half the vertical gap while speaker changes retain their spacing.

Agent session: agent session

@teamleaderleo teamleaderleo added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 28, 2026
@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review 4e57dad: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr26755 -f ref=nx-transcript-spacing-1028 -f platform=macos -f backend_mode=local

Unclear: web / react-apps-base-check (3) failed: no known signature; failed step: Run base reds and compare.

CI failed on 05f5e73381 (run 40795220749 attempt 1): 1 code, 2 unknown.

Job Verdict Why
web / react-apps-base-check (3) unknown no known signature; failed step: Run base reds and compare
web / react-apps-base-check (4) code a web test failed
web / react-apps-check unknown no known signature; failed step: Check webview test shards

Failures:

  • seen on other PRs message-preview-browser.test.ts received preview has intact lines at wide and narrow zoomed widths; Show more and chevron share disc...: failed (job)
  • seen on other PRs message-preview-browser.test.ts one-line variant keeps Minimal Mode's existing ellipsis and opens the full card: failed (job)
Matched log lines
web / react-apps-base-check (4): (fail) received preview has intact lines at wide and narrow zoomed widths; Show more and chevron share disclosure [6136.08ms]

Not re-run automatically: web / react-apps-base-check (3), web / react-apps-base-check (4), web / react-apps-check are not machine failures.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

red: web / Web status; base red: the same failure on the base 7bf46b5; does not block
red: web / react-apps-base-check (3); no finished base run on 7bf46b5 to compare; do not merge until green; see lane-rules
red: web / react-apps-base-check (4); no finished base run on 7bf46b5 to compare; do not merge until green; see lane-rules
red: web / react-apps-check; base red: the same failure on the base 7bf46b5; does not block

Gallery before/after for 05f5e73: 16 states rendered, 2 images differ, 2182 more touched states not rendered. Images are in the run's artifact, not on this public PR.

gh run download 40795220641 -R manaflow-ai/cmux -n gallery-advisory-26755-05f5e73381cc5eb81564d33ab76282917b3c415b (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.chat-find-bar/empty Apple System Colors Light unchanged 0% own conversation.css
agent-pane.chat-find-bar/empty Apple System Colors unchanged 0% own conversation.css
agent-pane.chat-find-bar/matches Apple System Colors Light unchanged 0% own conversation.css
agent-pane.chat-find-bar/matches Apple System Colors unchanged 0% own conversation.css
agent-pane.chat-find-bar/next-match Apple System Colors Light unchanged 0% own conversation.css
agent-pane.chat-find-bar/next-match Apple System Colors unchanged 0% own conversation.css
agent-pane.chat-find-bar/no-results Apple System Colors Light unchanged 0% own conversation.css
agent-pane.chat-find-bar/no-results Apple System Colors unchanged 0% own conversation.css
agent-pane.chat-width/standard Apple System Colors Light unchanged 0% own App.tsx
agent-pane.chat-width/standard Apple System Colors unchanged 0% own App.tsx
agent-pane.chat-width/wide Apple System Colors Light unchanged 0% own App.tsx
agent-pane.chat-width/wide Apple System Colors unchanged 0% own App.tsx
agent-pane.chat-width/wide-blocks Apple System Colors Light unchanged 0% own App.tsx
agent-pane.chat-width/wide-blocks Apple System Colors unchanged 0% own App.tsx
agent-pane.coderouter-offer/claude-key Apple System Colors Light unchanged 0% own conversation.css
agent-pane.coderouter-offer/claude-key Apple System Colors unchanged 0% own conversation.css
agent-pane.coderouter-offer/deepseek-key Apple System Colors Light unchanged 0% own conversation.css
agent-pane.coderouter-offer/deepseek-key Apple System Colors unchanged 0% own conversation.css
agent-pane.coderouter-offer/sign-in Apple System Colors Light unchanged 0% own conversation.css
agent-pane.coderouter-offer/sign-in Apple System Colors unchanged 0% own conversation.css
agent-pane.coderouter-offer/rate-limited Apple System Colors Light unchanged 0% own conversation.css
agent-pane.coderouter-offer/rate-limited Apple System Colors unchanged 0% own conversation.css
agent-pane.coderouter-offer/on-coderouter Apple System Colors Light unchanged 0% own conversation.css
agent-pane.coderouter-offer/on-coderouter Apple System Colors unchanged 0% own conversation.css
agent-pane.coderouter-offer/moving Apple System Colors Light unchanged 0% own conversation.css
agent-pane.coderouter-offer/moving Apple System Colors unchanged 0% own conversation.css
agent-pane.composer-floats/scrolled-to-end Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-floats/scrolled-to-end Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-floats/composer-grown Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-floats/composer-grown Apple System Colors unchanged 0% own App.tsx
agent-pane.continuation-spacing/shipped Apple System Colors Light new 0% own App.tsx
agent-pane.continuation-spacing/shipped Apple System Colors new 0% own App.tsx

Pick other states with a Gallery: entry.id, entry.id/variant line in the PR body.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-i3puaj created for this PR by the cmux coordinator.

@blacksmith-sh

blacksmith-sh Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Found 2 test failures on Blacksmith runners:

Failures

Test View Logs
test/message-preview-browser.test.ts/message-preview-browser.test View Logs
test/message-preview-browser.test.ts/message-preview-browser.test View Logs

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, next-review): SHIP at 4e57dad

No blocking findings.

@teamleaderleo
teamleaderleo merged commit d0a5feb into feat-cmux-next Oct 29, 2026
173 of 177 checks passed
@teamleaderleo
teamleaderleo deleted the nx-transcript-spacing-1028 branch October 29, 2026 01:51
@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

teamleaderleo added a commit that referenced this pull request Nov 2, 2026
…d gaps (#31946)

* base red: transcript continuation and fold tests read the stack's grid gaps (#27580)

Both browser tests predate #27580, which moved every outer gap between
transcript rows into the virtual stack (design/grid.md 5.5). The
continuation test still asked for #26755's half gap and #29860's footer
drop inside the row; the fold test counted every placed gap, and the
row's own gap target, as blank space. Both now take their values from
the grid tokens (gridLength).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-ac5053f7854c8635a4d0

* test(chat): the fold check allows only the gaps transcriptGap places (no inner gap)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-ac5053f7854c8635a4d0

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

This branch was previously deployed

1 inactive deployment
ci-routing-agent — 05f5e733 Deployed Oct 29, 2026 by teamleaderleo via wait for same-key tree publisher #74265
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant