v0.51.8
Fixed
-
Send → Webpage no longer renders external URLs as a blank page (most visibly with JS-driven SPAs; the underlying defect also cost every external URL render a ~15 s stall). Two compounding bugs in
app/renderer.py:wait_for_function("window.__tesseraeComposed === true")was firing on every render. That signal is set by composer.js after dashboard cells mount; on external URLs it never fires, so the wait always burned the full 15 s timeout before falling through.wait_until="load"was used for all renders, which fires before SPAs hydrate. Reddit-style React-shell sites screenshotted an empty document.
RenderRequestgains anis_composerflag (defaultTrue, setFalsebyPush.push_webpage). External URLs now skip the composer-mount wait and use a hybrid wait:gotoonload(ad-heavy news sites don't hard-fail at navigation) followed by a best-effort 8 swait_for_load_state("networkidle")so SPAs get time to hydrate.Measured (cold render, 1600×1200):
URL Before After example.com 15.6 s 1.0 s wikipedia 17.0 s 7.6 s bbc.com/news 23.8 s 15.9 s arstechnica 3-retry hard fail 17.1 s, renders theguardian 3-retry hard fail 34.2 s, renders -
Caveat (not fixed):
reddit.comstill renders as a near-blank page because Cloudflare's bot gate serves Playwright a "You've been blocked by network security" page regardless of wait strategy. Server-side block; routing around it would need either stealth-flavoured Chromium or an RSS fetch fallback, both larger changes.