Skip to content

fix: Find keeps its match in view until the reader scrolls (no bead) - #19779

Merged
teamleaderleo merged 7 commits into
feat-cmux-nextfrom
op-next-call-keys/find-reveal-hold
Oct 12, 2026
Merged

teamleaderleo merged 7 commits into
feat-cmux-nextfrom
op-next-call-keys/find-reveal-hold

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

chat-find.test.ts › finds command output and edit diffs inside a closed Worked for fold goes red on unrelated feat-cmux-next PRs: #19552, #19644, #19746 and #19761 in the last 12 hours. The failure is inView false at line 206 after settleInView's 5 s wait.

  • Cause: Find held a new match in view for FIND_REVEAL_MS = 600 of wall time after it was first drawn. On a loaded runner the page is CPU-starved, and the "Worked for" fold the match opens and the rows above it measure after that window. The match then slides out of view and stays there. A starved Mac would show the same bug.
  • Fix: the hold keeps its bounded semantics but no longer depends on wall time alone. It ends only after both 36 animation frames and 600 ms, or after 5 s at most:
    • A starved page draws fewer frames, so it keeps the match through measures that land late.
    • On an idle 60 Hz or 120 Hz page it behaves exactly as before.
    • A page hidden mid-reveal, which draws no frames, does not snap the reader back once shown.
    • Each window owns a number, so a stale loop from an earlier reveal can't end a newer one early.
  • Red test: the fold case runs under 40× CPU throttling over the Chrome DevTools Protocol (CDP), which reproduces the loaded runner.
  • Dropped: an earlier revision held the match until the reader scrolled. Review showed that programmatic scrolls (Jump to latest, Previous/Next Turn) would snap back, so I dropped it.

Testing

  • Red on 31399f7: react-apps-check failed chat-find.test.ts:210 (inView false under throttling).
  • Green on f81e6dd: PASS test/chat-find.test.ts. That job's other reds were the chat-header-changes base break (test: the Changes button's keycap is its tooltip's shortcut hint (no bead) #19794) and a menu-focus cold-start goto timeout. The latest head adds the review fixes and is re-running. Browser tests run only in CI or on a Freestyle VM, so not on big-red.
  • bun run check and bun test test/ui-rules.test.ts pass locally.

Changelog

  • Fixed: Find in Chat keeps a match inside a closed "Worked for" fold in view on a busy machine.

🤖 Generated with Claude Code

teamleaderleo and others added 2 commits October 12, 2026 00:55
chat-find's fold case failed on #19761's react-apps-check (inView false
after 5 s): Find holds a new match in view for only 600 ms, and on a
loaded runner the opened fold and the rows above it measure later.
Grow a row above the match after that window.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A new match was held in view for 600 ms after it was drawn. On a slow
machine the fold it opens and the rows above it measure later, so the
match slid out of view. It now stays in view until the reader scrolls
the transcript (outside Find's own bar) or Find moves on, as a pending
jump to latest already does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 76a62709-eebe-448d-9d5a-40533e798203

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@blacksmith-sh

This comment has been minimized.

@github-actions

github-actions Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Passes: CI passes on 0365dcc115.

CI passes on 0365dcc115 (run 38229038032 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.

@github-actions

github-actions Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

CI fast guards passes on 0365dcc115 (https://github.com/manaflow-ai/cmux/actions/runs/38229038032). This covers only the fast guards, not CI: CI's result is the ci-status check, and the CI failure attribution comment names any failing test.

teamleaderleo and others added 2 commits October 12, 2026 01:38
Review: the open-ended hold let programmatic scrolls (jump to latest,
previous/next turn) snap back to the match, and padding a border-box row
fires no measure, so the late-measure step proved nothing. Back to the
base reveal; the fold case now runs under 40x CPU throttling, the loaded
runner of #19761's red, where the 600 ms window ends before the fold
and the rows above the match measure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Find holds a new match in view while the fold it opens and the rows
above it measure. The 600 ms window ran out on a starved page before
those measures landed, leaving the match out of view. Count 36 animation
frames instead: the same hold on an idle page, and a starved page that
draws fewer frames keeps it until its measures land.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Gallery

Review in feed

13 states changed: agent-pane.transcript/shell-grouped-commands, agent-pane.replay/playing, agent-pane.transcript/keyboard-focus, agent-pane.transcript/shell-success-output, agent-pane.thread-minimap/long-chat, ... · 4 play checks failed

Diff page and renders (the run's gallery-pr artifact)

State Before · after
agent-pane.transcript/shell-grouped-commands (Apple System Colors Light, chromium)
agent-pane.replay/playing (Apple System Colors, webkit)
agent-pane.replay/playing (Apple System Colors Light, chromium)
agent-pane.transcript/keyboard-focus (Apple System Colors Light, webkit)
agent-pane.transcript/shell-success-output (Apple System Colors, webkit)
agent-pane.thread-minimap/long-chat (Apple System Colors, chromium)

7 more on the diff page.

Live preview (follows this branch; start it with scripts/gallery-live.sh up <branch> from an hq checkout):

  • agent-pane.transcript/shell-grouped-commands: /wt/op-next-call-keys-find-reveal-hold/?entry=agent-pane.transcript#/agent-pane.transcript/shell-grouped-commands
  • agent-pane.replay/playing: /wt/op-next-call-keys-find-reveal-hold/?entry=agent-pane.replay#/agent-pane.replay/playing
  • agent-pane.transcript/keyboard-focus: /wt/op-next-call-keys-find-reveal-hold/?entry=agent-pane.transcript#/agent-pane.transcript/keyboard-focus
  • agent-pane.transcript/shell-success-output: /wt/op-next-call-keys-find-reveal-hold/?entry=agent-pane.transcript#/agent-pane.transcript/shell-success-output
  • agent-pane.thread-minimap/long-chat: /wt/op-next-call-keys-find-reveal-hold/?entry=agent-pane.thread-minimap#/agent-pane.thread-minimap/long-chat
  • agent-pane.transcript/mark-unread-menu: /wt/op-next-call-keys-find-reveal-hold/?entry=agent-pane.transcript#/agent-pane.transcript/mark-unread-menu
  • 2 more on the diff page

Play checks failed (0 px anchor movement, 0 layout shift, no frame over 33 ms unless the entry gives a reason):

  • agent-pane.transcript/jump-latest-working (Apple System Colors Light, webkit): failed
  • agent-pane.transcript/thought-row (Apple System Colors Light, chromium): step 1 click button.cv-thought: layout shift 0.0009 (limit 0)
  • agent-pane.transcript/thought-row (Apple System Colors, chromium): step 1 click button.cv-thought: layout shift 0.0009 (limit 0)
  • agent-pane.transcript/thought-row (Apple System Colors, chromium): step 1 click button.cv-thought: layout shift 0.0004 (limit 0)
  • agent-pane.transcript/jump-latest (Apple System Colors Light, webkit): failed
  • agent-pane.transcript/jump-latest (Apple System Colors Light, webkit): failed
  • 9 more on the diff page

63 nondeterministic states differed from a second render of the same head (a clock or fixture leak) and are not counted as changes.

396 unchanged · base b9590ac · head 0365dcc

teamleaderleo and others added 3 commits October 12, 2026 02:05
Review: on a 120 Hz display 36 frames are 300 ms, half the base hold;
the hold now ends after 36 frames and 600 ms, or 5 s at most, so a page
hidden mid-reveal (no frames) does not snap a reader back once shown.
Each window owns a number, so a stale loop from an earlier reveal of the
same match cannot end a newer one early.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Under 40x throttling the fold measures after 5 s, so the cap ended the
hold before the match landed (chat-find.test.ts:210 red on 34ddcba).
A page hidden mid-reveal now finishes its remaining frames once shown,
at most 36 frames and 600 ms.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cursor

cursor Bot commented Oct 12, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@teamleaderleo
teamleaderleo merged commit f88414a into feat-cmux-next Oct 12, 2026
98 checks passed
@teamleaderleo
teamleaderleo deleted the op-next-call-keys/find-reveal-hold branch October 12, 2026 10:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant