v0.4.4: shutdown, capture, and reporting hardening
Highlights
Hardening
- The
runsession now notices Ctrl-C/SIGTERM while idle: a signal landing in the gap before its input read blocks (or delivered on another thread) previously left the session waiting for the next command line; a self-pipe wake-up closes the window. - The QEMU child's serial capture keeps a bounded 1 MiB tail instead of growing for as long as a
servesession runs; expect regexes and failure diagnostics only ever read recent output. - Boot failures for a missing emulator binary name the offending path on both macOS and Linux.
- The fixture build image is pinned by digest, so an upstream re-tag cannot silently change fixture bytes and golden stability.
Docs
- New README section: What each backend is authoritative for - a fidelity matrix across host-native, QEMU tier 1 (any flash image), and QEMU tier 2 (cooperating firmware), including per-architecture determinism (ESP32-C3 byte-exact under icount; ESP32/S3 wall-clock).
Binaries below carry the generic native targets plus both qemu board specs; the waveshare_amoled_18 target needs a source build against a firmware checkout (see README). esprite is alpha software; interfaces may change.