npm audit had one critical finding here (the Astro 5 advisories, among
them the AVIF RCE) — irrelevant at runtime for a static site served by
nginx, but the build toolchain ran it. Now 0.
Build image node 20 -> 22, and npm ci only: the old '|| npm install'
fallback meant a broken lockfile would silently build something untested.
Checked in a real browser: all six pages 200, sheet drawn, PDF download
measures 210.00 x 297.00 mm in both languages, no horizontal scroll at
390 px.
A static Astro page. The sheet playground imports the print engine
(printlayout.ts, paper.ts) verbatim from the Klarbild repository and runs it in
the browser, so the layout on screen is the application's own arithmetic rather
than a mock-up. The PDF it offers is drawn from the same placements with pdf-lib.
No backend, nothing uploaded, no third-party requests.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nh4A79bbqT9dcd2inzYUdg