v0.3.0: QEMU emulator backend
Highlights
QEMU emulator backend (new, tier 1)
esprite can now run a real compiled flash image under Espressif's QEMU fork, alongside the host-native backend, behind the same CLI:
- New target
qemu_esp32c3:serial,logs, and headlessserveagainst any ESP32-C3 image (ESPRITE_QEMU_IMAGE). Boots real ESP-IDF and Arduino binaries. - Deterministic on ESP32-C3: icount mode gives byte-for-byte identical serial output across runs. Xtensa (ESP32/S3) runs wall-clock only (icount hangs in the current fork release).
make qemu-fetch(pinned prebuilt emulators, no source build),make qemu-fixtures(scripted test images),make qemu-test(self-skipping; default build and tests never require QEMU).list-targetsreports abackendfield; missing prerequisites yield the newbackend_unavailableerror kind; everything not yet emulator-capable degrades explicitly tounsupported.- Signal-safe child lifecycle: the emulator process never outlives the CLI, including Ctrl-C mid-boot.
More
- agentgauge firmware target onboarded (Wi-Fi Claude usage-limit desk gauge).
wifi up/wifi downto control the simulated link state.swipecommand for gesture validation.expectassertions in scenarios and the run session.- Live BLE bridge:
serve --ble-port Nexposes the virtual link to real host processes.
Fixes
- LVGL screen ownership for
uisnapshots; display and buffer reuse. strlcpyshim only defined where libc lacks it.- peripherals library declares its real link dependency on core (fixes GNU ld builds).
Binaries below carry the generic targets (sample_gfx, cyd, cyd_tft); the agentgauge target needs a source build against a firmware checkout (see README). esprite is alpha software; interfaces may change.