What
agent-hands scroll <px> moves window.scrollY with window.scrollBy in eased steps (scrollBy in cli/gestures.mjs). A page listening to wheel events sees nothing; a page listening to scroll sees human-like stepping. Measured on docs/assets/measure.html, 15 Sep 2026: wheel.events: 0 after scroll 600.
Fix
Replace the in-page write with Input.dispatchMouseEvent { type: "mouseWheel", x, y, deltaY } at the current cursor position, keeping the same burst-and-pause pacing (notches of 90 to 190 px, 16 ms frames, 70 to 260 ms pauses).
Acceptance
- On the probe page,
agent-hands scroll 600 yields wheel.events > 0, bursts >= 3, and the page still ends near the same scrollY.
scroll inside a scrollable <div> under the cursor scrolls that element, as a wheel would, instead of the document.
docs/evidence.md "Limits" entry for scroll updated with the new numbers.
What
agent-hands scroll <px>moveswindow.scrollYwithwindow.scrollByin eased steps (scrollByincli/gestures.mjs). A page listening towheelevents sees nothing; a page listening toscrollsees human-like stepping. Measured ondocs/assets/measure.html, 15 Sep 2026:wheel.events: 0afterscroll 600.Fix
Replace the in-page write with
Input.dispatchMouseEvent { type: "mouseWheel", x, y, deltaY }at the current cursor position, keeping the same burst-and-pause pacing (notches of 90 to 190 px, 16 ms frames, 70 to 260 ms pauses).Acceptance
agent-hands scroll 600yieldswheel.events > 0,bursts >= 3, and the page still ends near the samescrollY.scrollinside a scrollable<div>under the cursor scrolls that element, as a wheel would, instead of the document.docs/evidence.md"Limits" entry for scroll updated with the new numbers.