Skip to content

base red: the fold-stream upward-anchor trace starts off the very bottom (#32644 fix forward) - #33135

Merged
cmux-bot[bot] merged 2 commits into
feat-cmux-nextfrom
lane/web-base-red-upward-anchor
Nov 3, 2026
Merged

cmux-bot[bot] merged 2 commits into
feat-cmux-nextfrom
lane/web-base-red-upward-anchor

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

webviews/test/transcript-upward-anchor.test.ts "received card folds preserve painted row-box adjacency while streaming" is red on every cmux-next web push run on feat-cmux-next (expect(result.compared).toBe(result.frames): 130 or 132 of 136), for example run 41581500665 at 53921ff, job "web / react-apps-check (8)".

Cause

The test scrolls the received card (gap-incoming, in the fixture's last turns) to the top of the view. Its content below is shorter than the view, so that lands at the transcript's physical end. Since #32644, opening a line at the very bottom deliberately pushes the text above it up (Leo, 2026-11-02: "YOU EXPAND UP WHILE YOUR SCCROLL IS AT THE VERY BOTTOM AKA YOU PUSH THE TEXT UP VISUALLY INSTEAD OF EXPANDING DOWN LIKE USUAL / JUST THAT CASE"), and #32943 holds the rows under the opened line with a clip on what rises. In the trace's transcript-fold-stream: line that shows up as:

  • the open at frame 4: scrollTop 745119 to 746283, and the card's top goes from 15.75 to -1148 (drift -1164, missing anchors), with two frames where the clipped card's box overlaps the held rows by 1148px (getBoundingClientRect ignores the clip);
  • the close at frame 32 of a toggle now 1148px above the view: three frames with no row in the view until the view comes back to the end.

That is the push-up behaviour #32644 asked for, seen by an oracle that expects the line to keep its place. #32644 already moved the other keep-place tests off the bottom (agent-pane-fold-keeps-place.test.ts, received-message-fold-browser.test.ts); this trace was missed.

Fix

Test only. Before the trace, put the view 48px up from the end, the same way agent-pane-fold-keeps-place.test.ts does, and assert it is more than 8px from the end. The trace again checks what it was written for (#27365): a received card that folds in place while the last reply streams, with no drift, gaps, overlaps or blank frames. The very-bottom push-up keeps its own coverage in transcript-expand-at-bottom.test.ts.

Base-red-job: web / react-apps-check

Changelog

none

Observed / Not run

  • Red on base: the CI log of job 125737298566 (above), Expected: 136, Received: 130; runs 41580824945 and 41580790250 the same way.
  • Green at head 668ba6c, three times: cmux-ci test --setup webviews -- bash scripts/ci/run-webviews-tests.sh test/transcript-upward-anchor.test.ts (run 41590121087, PASS), then bun test test/transcript-upward-anchor.test.ts twice in one step (run 41591800362): 7 pass, 0 fail each time, the fold-stream test included.
  • Not run: the full webviews suite (CI runs it on this PR).

Agent session: agent session

🤖 Generated with Claude Code

…x forward)

"received card folds preserve painted row-box adjacency while streaming"
scrolled the received card to the top of the view, which in the last turns
of the fixture is the physical end. Since #32644 (Leo, 2026-11-02: "YOU
EXPAND UP WHILE YOUR SCCROLL IS AT THE VERY BOTTOM ... JUST THAT CASE"),
opening a line there pushes the text above it up: the card's top moves
1164px up on purpose, the oracle counts that as drift and missing anchors,
and the following close lands past the end for three blank frames. #32644
moved the other keep-place tests off the bottom; this one was missed.

Start the trace 48px up from the end, as agent-pane-fold-keeps-place does,
so it again checks a fold that keeps its place while the reply streams.

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

github-actions Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

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

Review eece95f: 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=pr33135 -f ref=lane/web-base-red-upward-anchor -f platform=macos -f backend_mode=local

Shipped in:

@github-actions github-actions Bot added the risk:low Risk tier (docs/ci/risk-tiers.md) label Nov 3, 2026
…nistically

Wait for fonts before placing the card, and never move the start further
down than where scrollIntoView put it, so the card stays in view whether
or not scrollIntoView landed on the physical end.

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

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, sweep, via the review router; full diff from merge base e8b1b7d to this head): SHIP at 668ba6c

No P1/P2 findings.

@cursor

cursor Bot commented Nov 3, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent opus-5.5 medium): SHIP at eece95f

Visual verdict: unchanged by this diff (test only).

Checked the cause: the collapsed received card sits 8 short rows from the end, so scrollIntoView({block:"start"}) sometimes clamps to the physical end, and the frame-4 open then takes beginBottomStackFold (#32644, within the 4px deadband), pushing the visible rows out (null anchors, short compared). Starting at min(scrollTop, end - 48) drops follow (onScroll moved up, not at latest), the stream step barely changes height, the later folds keep place, the card stays in view for all 4 clicks, and every strict assertion is unchanged plus a loud fromEnd > 8 guard. cmuxPaintFrame comes from installPaintedFrames.

Green 3/3 in one step at this head, fmt clean: https://github.com/manaflow-ai/cmux/actions/runs/41601762114

Follow-ups:

  • [follow-up] page.evaluate(() => document.fonts.ready) returns a FontFaceSet across the boundary; harmless, .then(() => undefined) reads clearer.
  • [follow-up] Recheck fromEnd after the first stream frame to make the "reply keeps about its height" assumption explicit.

@cmux-bot
cmux-bot Bot merged commit 626da7e into feat-cmux-next Nov 3, 2026
145 of 146 checks passed
@cmux-bot
cmux-bot Bot deleted the lane/web-base-red-upward-anchor branch November 3, 2026 09:25

This branch was previously deployed

1 inactive deployment
ci-routing-agent — eece95f6 Deployed Nov 3, 2026 by teamleaderleo via cmux-tui tree preflight #104766
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant