Fixes#505 — version string mismatch:
- firmware/esp32-csi-node/version.txt: 0.6.2 → 0.6.4
- .github/workflows/firmware-ci.yml: add verify-embedded-version step
that extracts the esp_app_desc version string from the built binary and
fails CI if it doesn't match version.txt. Prevents the v0.6.3 regression
(tagged without bumping version.txt) from recurring.
Fixes#506 — stale skeleton shown after ESP32 unplugged:
- csi_pipeline.rs: add CsiPipelineState::last_csi_received (Instant),
stamped on every process_frame() call; PipelineOutput gains csi_live:bool
(true iff a real frame arrived within the last 5 s).
- stream.rs: /api/splats now includes csi_live in the JSON response.
- viewer.html: add #no-signal banner (red, centered overlay) shown when
the server reports csi_live=false in live/remote transport mode.
Skeleton is cleared while the banner is visible so stale pose data
is not presented as live activity.
Co-Authored-By: claude-flow <ruv@ruv.net>
version.txt → 0.6.2.
firmware-ci.yml: matrix-build both 8MB (sdkconfig.defaults) and 4MB
(sdkconfig.defaults.4mb) variants, uploading variant-named artifacts
(esp32-csi-node.bin / esp32-csi-node-4mb.bin, partition-table.bin /
partition-table-4mb.bin). Unblocks 6-binary releases from CI alone,
no local ESP-IDF required.
CHANGELOG: promote [Unreleased] ADR-081 work into [v0.6.2-esp32],
plus Fixed entries for Timer Svc stack overflow and the
fast_loop_cb → emit_feature_state implicit-decl compile error.
Validation: 30 s run on ESP32-S3 (MAC 3c:0f:02:e9:b5:f8), 149
rv_feature_state emissions, no stack overflow, HEALTH mesh packet sent.
Co-Authored-By: claude-flow <ruv@ruv.net>
- Container: espressif/idf:v5.2 → v5.4 (matches QEMU workflow)
- Replace xxd calls with od (xxd not available in IDF container)
- Add ota_data_initial.bin to artifact upload
- Extend artifact retention to 90 days
The xxd:not-found error was blocking all Firmware CI builds since the
container migration. This unblocks binary artifact generation for
release assets.
Closes#327
Co-Authored-By: claude-flow <ruv@ruv.net>
The espressif/idf container requires `. $IDF_PATH/export.sh` to put
idf.py on PATH. GitHub Actions container: runs with plain sh which
skips the container entrypoint. Also downgrade from v5.4 to v5.2
which matches our local Docker build environment.
Co-Authored-By: claude-flow <ruv@ruv.net>