Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

recap/bin/slides.mjs: setContent waitUntil=domcontentloaded

networkidle0 sometimes hangs on oven for slides with multi-MB base64
photos embedded inline (build 67f9ee23-8 timed out at slide 07_hp_plotter
after rendering 6 slides successfully). domcontentloaded fires once the
DOM is parsed, which is all we need before screenshot — data URLs render
synchronously, no network to wait on. 90s timeout for slow CPU safety.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

+7 -1
+7 -1
recap/bin/slides.mjs
··· 144 144 ${showBug(name) ? `<div class="pals bug"></div>` : ""} 145 145 ${showBug(name) ? `<div class="cornerbug">aesthetic·computer · for ${audience.handle || audience.name}</div>` : ""} 146 146 </body></html>`; 147 - await page.setContent(html, { waitUntil: "networkidle0", timeout: 60000 }); 147 + // `domcontentloaded` instead of `networkidle0` — with multi-MB base64 148 + // photos embedded inline, networkidle0 sometimes hangs waiting for the 149 + // browser to settle. domcontentloaded fires once the DOM is parsed, 150 + // which is all we need before screenshotting (data URLs render 151 + // synchronously). 90s timeout for safety on slow oven CPU. 152 + await page.setContent(html, { waitUntil: "domcontentloaded", timeout: 90000 }); 153 + await new Promise((r) => setTimeout(r, 400)); 148 154 await new Promise((r) => setTimeout(r, 200)); 149 155 const png = await page.screenshot({ type: "png", omitBackground: false }); 150 156 writeFileSync(`${SLIDE_DIR}/${name}.png`, png);