Skip to content

[Bug]: Wheel scroll stays stuck on a tall inline HTML render instead of chaining to the thread #16977

Open

Description

@FrancoEscob

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/web

Steps to reproduce

  1. Have an agent publish an inline html_render page taller than HTML_RENDER_MAX_HEIGHT (2000px). Mine was a logo board around 10,142px tall at a 1000–1144px width, published with height: 2000.
  2. Hover the render and scroll down inside it, then scroll the thread so part of the render is still under the cursor.
  3. With the cursor over the render, scroll up continuously until the render reaches its top, and keep moving the wheel.

Expected behavior

When the render reaches its top, the rest of the gesture scrolls the thread (scroll chaining), as it would for a nested scroller in the page itself.

Actual behavior

The render reaches its top and then nothing moves. The wheel keeps spinning up for several seconds and the thread stays still. After I stop the wheel for about 0.5s, the next gesture scrolls the thread normally.

Impact

Minor bug or occasional failure

Version or commit

0.0.46-nightly.20261006.2752 (d8d037e). This build includes #16283, and the render was published on it (its bootstrap sends ui/notifications/size-changed).

Environment

Arch Linux, T3 Code desktop nightly (t3code-nightly-bin), mouse wheel

Workaround

Stop the wheel for about 0.5s once the render reaches its edge, then scroll again. Or use "Open in panel".

Notes

This is probably a design question more than a code defect, but it is the same symptom #16283 set out to fix, for a case that fix does not reach:

  • fix(web): inline HTML renders no longer trap the thread's scroll #16283 fits the frame to the page's reported height. That removes the accidental few-pixel overflow from font differences.
  • Pages taller than 2000px are capped by htmlRenderFrameHeight (packages/shared/src/htmlRender.ts), so the sandboxed iframe scrolls its own document on purpose. Agents can also ask for this by passing a height below contentHeight.
  • Chromium latches a wheel gesture to the scroller it started in. When the iframe hits its edge mid-gesture, the scroll does not chain to the thread until a new gesture starts. Nothing in HtmlRenderFrame, BrowserDocumentFrame, or the bootstrap handles wheel events or sets overscroll-behavior.

Possible directions, for whoever owns this:

  • In the injected bootstrap, notice wheel events that the framed page can't use in that direction (already at top or bottom) and post the delta to the host, which scrolls the thread.
  • Lower or rethink the inline cap for very tall pages, for example by showing a fixed preview with "Open in panel" instead of a scrolling frame.
  • feat: minimize inline HTML renders #16420 (minimize inline renders) helps once the page is collapsed, but not while it is open.

A muted 37s screen recording showing the stuck period (0:17–0:23) and the release after the pause will be added in a comment.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions