0.5.0 RELEASE NOTES
Fizlet 0.5.0
By Chris Cooley ↗ · · CHANGELOG.md ↗
The page profile for heroes and interactive diagrams (the Fizlet factory's layer budgets, "Page interactions"; lab audit docs/audit-heroes.md: idle CPU while visible was the hero's real cost).
- kernel:
settleoption. Systems callengine.busy()while something moves; aftersettleseconds without it the engine sleeps (paused: ["settled"], no requestAnimationFrame at all) untilengine.wake(), itscontrolsinput (keys, pointer down/move) orstart(). Not a pause:pausehooks don't run.fpsoption: a frame-rate cap on the shared clock. Both off by default; kernel 3106 → 3275 B gzip. - slot: waits for an idle main thread once near the viewport (
idle, default 1000 ms). A tap on the slot before the scene is up loads it at once and reachesmount(stage, slot, first)as{ x, y, at }, never as the stale PointerEvent (the DOM VIRUS hero threw onsetPointerCapturefor exactly this). Slot 1767 B gzip. - Page build budget: kernel + slot + input + fx ≤ 7 KB gzip (6,792 B), leaving a 10 KB hero chunk ≥ 3 KB for the scene.
tests/page.test.mjsfails if a game-only brick gets into it. - Tests: settle (sleeps, no rAF, no pause hooks, wake and start), fps cap (30 on a 60 Hz clock), and in Chromium the idle wait, the first tap and a key waking a settled engine.