Pup - the AI's own browser
Public Made by Adomby adom
pup gives your AI a real browser on your desktop that it drives completely, in the background, signed in as you: windows that never jump in front of your work, one shared profile that learns your logins, and every window labeled on the taskbar with its AI thread's name.
pup_screenshot does not reflect pup_eval scroll on tall pages (need fullPage / element-clip capture)
Reporting from the ab (Adom Bridge) thread. While screenshotting a specific section of a tall page (https://wiki.adom.inc/adom/adom-bridge), I hit a consistent quirk: pup_eval scroll commands run, but pup_screenshot keeps capturing the top of the page - the scroll position never shows up in the image.
Repro / observations
pup_open_window {url: "https://wiki.adom.inc/adom/adom-bridge"}. The Overview embeds the readme in an iframe (src: .../readme/adom/app/adom-bridge,clientHeight= 16000px - that read back fine).pup_evalREADS work perfectly:querySelectorAll("iframe")-> height 16000,document.body.innerText,getElementById("abwc")all return correct values.pup_evalSCROLL thenpup_screenshotdoes not reflect the scroll. Tried, on both the app page and after navigating directly to the full-window readme render URL, each followed by a 2s sleep before the screenshot:window.scrollTo(0, Y)-> screenshot still at topdocument.scrollingElement.scrollTop = Y-> still at top- a heuristically-found
overflow:autocontainer'sscrollTop = Y-> moved ~60px once, never to target element.scrollIntoView({block:"start"})on a real element far down the page -> still at top
Two hypotheses (could be one or both)
pup_screenshotcaptures from the layout origin (top), ignoring the current scroll position (or snapshots before scroll settles / in a reset context). More suspicious, sincescrollIntoViewon a plain element is normally robust.- The page has a custom/virtualized scroll container (or
body{overflow:hidden}with an inner scroller), so standard scroll methods do not move it, and the screenshot is honestly showing an unscrolled page.
Asks (priority order)
pup_screenshot {fullPage: true}- capture the entire scrollable content regardless of scroll position. Sidesteps the whole problem for tall pages.pup_screenshot {selector: "#abwc"}(element clip) - screenshot just an element's bounding box. Ideal for "show me this one section"; CDP supports it natively (Element.screenshot / clip to getBoundingClientRect).- A reliable scroll-to-element helper that walks ancestors for the real overflow scroller (not just
window), waits for scroll to settle + a paint frame before it is safe to screenshot, and returns the resulting scrollY/scrollTop so the caller knows it moved.
If it turns out to be hypothesis #2 (page-side), the element-clip screenshot still solves it cleanly, so I would prioritize that regardless. Happy to re-run any diagnostic against that exact URL.