Skip to content

base red: row-gap drags select again; Retry stage and recap test follow the grid's action row (#27580) - #31579

Merged
teamleaderleo merged 5 commits into
feat-cmux-nextfrom
lane/grid-basered-interact
Nov 2, 2026
Merged

teamleaderleo merged 5 commits into
feat-cmux-nextfrom
lane/grid-basered-interact

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Base reds from #27580 (ours), which moved the transcript's gaps out of the rows into the virtual stack and lays a prompt's action row in the turn gap (design/grid.md 5.5). Each test below passes on #31384 (only #27580 reverted) and fails on feat-cmux-next:

  • Row gaps select again (transcript-gutter-select-browser.test.ts "a drag from each row gap starts at its nearest mounted caret", chromium and webkit; gallery: "Gap drag selected no text"). .acpmux-row__gap took its height from the row's padding, which is now 0, so a drag from between two rows selected nothing. RowFrame gives it the placed gap under its row (tops[i+1] - tops[i] - heights[i]). User-visible fix.
  • Retry is clickable in its gallery stage (retry-model-menu.test.ts, 8 tests). The stage div took .acpmux-row's --cv-inset as a relative offset plus its own padding, so the action row laid in the gap (right: -6) landed past the 560px viewport. The stage's inset is now a wrapper's; the row clears its offset and keeps layout containment only, as article rows do. Fixture-only.
  • Recap card test counts the footer band (agent-pane-recap-card.test.ts "the card leaves the turn's footer in view above it"). The rest gap starts under the turn footer's band (transcriptGrid.ts restBand), and the test sized the pane without it. Test-only.

Tests: red at base (CI run 41362440478 and cmux-ci at 0dbfb2e/c0b3866c), green at this head (cmux-ci, all 3 files).

Not in this PR: agent-pane-stream-jitter (reply moves 26 = restBand when a turn ends) and streaming-text-frames p95 are still red at base. They need a design call on where the live line's room goes when the footer arrives.

Risk: small. One inline style on the gap target, a gallery fixture, and a test.

Agent session: agent session

🤖 Generated with Claude Code


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


Summary by cubic

Fixes three regressions from #27580, which moved transcript gaps out of rows into the virtual stack and lays a prompt's action row in the turn gap.

  • Bug Fixes
    • Row gaps are draggable again: RowFrame sizes the gap target from the row's own bottom padding plus the placed gap under it (down to the next row), instead of inheriting the row's now-zero padding. It comes before the row content, so the action rows laid in the same gap paint and hit-test over it.
    • Retry is clickable in its gallery stage: the stage's inset moved to a wrapper so the action row no longer lands past the viewport.
    • Recap card test now counts the turn footer's band when sizing the pane, matching transcriptGrid.ts restBand.

Written for commit 524c6a9. Summary will update on new commits.

View guided diff Turn on auto-fix

teamleaderleo and others added 2 commits November 2, 2026 00:34
…s stage, the recap test counts the footer band (#27580)

#27580 moved transcript gaps out of the rows (padding-block 0) into the virtual stack:
- a row gap target (.acpmux-row__gap) inherited the 0 padding, so it was 0 tall and a drag from
  between two rows selected nothing. RowFrame now gives it the placed gap under its row.
- a prompt action row is laid in the turn gap under its row; the Retry gallery stage is a div with
  styles.css paint containment, which clipped it away. The stage keeps layout containment alone,
  as article rows do in the app.
- the rest gap starts under the turn footer band (transcriptGrid.ts restBand); the recap card test
  sized its pane without that band.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-ac5053f7854c8635a4d0
…ngs on screen (#27580)

The stage div took .acpmux-row's --cv-inset as a relative offset plus its own padding, so the
action row #27580 lays in the gap (right: -6) landed past the 560px viewport and the click on
Retry hit nothing. The inset is a wrapper's now and the row's offset is cleared.

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

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 524c6a9: 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=pr31579 -f ref=lane/grid-basered-interact -f platform=macos -f backend_mode=local

Stale: these images are of dfbe9ce; the head is now 524c6a9 and a new capture is running.

Gallery before/after for dfbe9ce: 16 states rendered, 0 images differ, 1632 more touched states not rendered. Images are in the run's artifact, not on this public PR; the independent review of this head reads them on its own, so the PR needs no hand-made screenshots of these states.

gh run download 41379882133 -R manaflow-ai/cmux -n gallery-advisory-31579-dfbe9ce959609ec81692023562f4017d7c530acd (then read gallery-review.json)

States
State Theme Status Diff Picked by
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.composer-edge/short-edge Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-edge/short-edge Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-edge/wide-edge Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-edge/wide-edge Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-edge/no-edge Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-edge/no-edge Apple System Colors unchanged 0% own App.tsx
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.composer-rest-gap/gap-40 Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-40 Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-56 Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-56 Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-72 Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-72 Apple System Colors unchanged 0% own App.tsx
agent-pane.continuation-spacing/shipped Apple System Colors Light unchanged 0% own App.tsx
agent-pane.continuation-spacing/shipped Apple System Colors unchanged 0% own App.tsx
agent-pane.continuation-spacing/two-thirds Apple System Colors Light unchanged 0% own App.tsx
agent-pane.continuation-spacing/two-thirds Apple System Colors unchanged 0% own App.tsx
agent-pane.continuation-spacing/half-tucked Apple System Colors Light unchanged 0% own App.tsx
agent-pane.continuation-spacing/half-tucked Apple System Colors unchanged 0% own App.tsx
agent-pane.continuation-spacing/before Apple System Colors Light unchanged 0% own App.tsx
agent-pane.continuation-spacing/before Apple System Colors unchanged 0% own App.tsx
agent-pane.copy-controls/output Apple System Colors Light unchanged 0% own App.tsx
agent-pane.copy-controls/output Apple System Colors unchanged 0% own App.tsx

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

Passes: CI passes on 524c6a9265.

CI passes on 524c6a9265 (run 41387530503 attempt 1).

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: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: red check: Script tests (pin-cmux-tui, embed-cef, ensure-cef store) (+1 more) is not red on the base f92d1cc; do not merge until green; see lane-rules

Shipped in:

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

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@blacksmith-sh

blacksmith-sh Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Found 6 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmpl6yu4soj/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmpls5q118r/summary-missing.json (live):/summary-missing.json (live): View Logs
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows/
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows
View Logs
[new_workspaces] the window draws no frames/[new_workspaces] the window draws no frames View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs

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

Review BLOCK at 8ab2e42: the gap span came after the row content at z-index 0, so it covered
the prompt and footer action rows #27580 lays in the gap and took their clicks. It now sits at
z-index -1 inside the row (an article with layout containment is its stacking context).

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

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6.1-sol high, sweep, via the review router; full diff from merge base c0b3866 to this head): BLOCK at 855ea57

[P2] [blocking] files/webviews/src/agent-session/acpmux/App.tsx:2295 - The gap target is positioned at top: 100%, outside the row’s box, but .acpmux-row uses contain: layout paint; paint containment clips descendants to the article, so the target cannot cover inter-row gaps and gap drag selection stops working. Render the target as a sibling in the transcript stack or remove paint containment for rows that need overflow.

…z-index

check:layers refuses a raw z-index, and vp fmt the long style line. The gap span now precedes
the row content, so the action rows laid in the same gap, positioned later in the row, paint
and hit-test over it (positioned boxes at one level stack in tree order).

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

Copy link
Copy Markdown
Collaborator Author

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 awareness: this restores Leo ask-4ef8ccaaeb (drag-select from the dead zones between transcript rows), first delivered by #26704 and regressed by #27580. Please add Leo-ask: ask-4ef8ccaaeb to the body so the asks reconciler closes the cluster when this lands. The BLOCK at 855ea57 predates the current head dfbe9ce, which still needs its re-review.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, next-review): BLOCK at dfbe9ce

BLOCK at dfbe9ce

Visual verdict: no images; Leo tries the build [follow-up]

  1. [P1][blocking] The new inline height: gapBelow; paddingBottom: 0 in App.tsx:2288 breaks the existing browser test at transcript-gap-select-browser.test.ts:193. That fixture deliberately adds 64px of row padding; the placed virtual gap is only 24px, so the target height is no longer 64px and the assertion fails in the browser lane. Update the fixture/assertion or preserve its intended hit area.

Follow-ups: none

…the placed gap under it

The webview verdict at dfbe9ce named transcript-gap-select-browser's RTL tests (4) as this
PR's own: they pad a row by 64 and expect its gap target over that padding, which the placed-gap
style had replaced. The target keeps its inherited padding and extends below the row by the
placed gap (content-box), so it covers everything from the row's content to the next row. The
test now checks that span: the padding's top to the next row's top.

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

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, next-review): SHIP at 524c6a9

SHIP at 524c6a9

Visual verdict: no images; Leo tries the build.

I found no correctness regressions in the changed code.

Follow-ups:

  • [P2][follow-up] No after screenshots or gallery stills were available for visual comparison.

@cmux-bot cmux-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cmux-bot approves 524c6a9: an independent review passed this exact head (next-review receipt by teamleaderleo). A push needs a new review; a later BLOCK at this head dismisses this approval.

@teamleaderleo
teamleaderleo merged commit 1d35184 into feat-cmux-next Nov 2, 2026
172 of 193 checks passed
@teamleaderleo
teamleaderleo deleted the lane/grid-basered-interact branch November 2, 2026 05:06
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6.1-sol high, sweep, via the review router; full diff from merge base c0b3866 to this head): SHIP at 524c6a9

No P1/P2 findings.

This branch was previously deployed

1 inactive deployment
ci-routing-agent — 524c6a92 Deployed Nov 2, 2026 by teamleaderleo via cmux-tui tree preflight #99151
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