fix(#505,#506): firmware v0.6.4 version CI gate + no-CSI-signal UI indicator#508
fix(#505,#506): firmware v0.6.4 version CI gate + no-CSI-signal UI indicator#508
Conversation
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>
|
The version-string CI gate is a clean fix for #505 — extracting One thing the gate won't catch, though: in the current Today on a freshly-flashed ESP32-S3 N16R8 board:
If you'd like, the v0.6.4 release that'll come out of this PR could fold in one of:
Happy to test whichever build comes out of the next CI run against the same hardware where I reproduced the crash today. 🤖 Generated with Ruflo & AQE |
Summary
version.txtto0.6.4and adds a CI step that extracts the embeddedesp_app_desc_tversion from the built binary and fails the workflow if it doesn't matchversion.txt. Prevents silent version drift between code and flash.csi_live: booltoPipelineOutput(true iff a CSI frame was received within the last 5 seconds), exposes it via/api/splats, and shows a red NO CSI SIGNAL banner in the viewer while clearing the skeleton when the signal is lost.Changes
firmware/esp32-csi-node/version.txt0.6.2→0.6.4.github/workflows/firmware-ci.ymlv2/crates/wifi-densepose-pointcloud/src/csi_pipeline.rslast_csi_received: Option<Instant>+csi_live: boolinPipelineOutputv2/crates/wifi-densepose-pointcloud/src/stream.rscsi_livein/api/splatsJSON responsev2/crates/wifi-densepose-pointcloud/src/viewer.htmlclearSkeleton()when signal lostTest plan
cargo test --no-default-features— 15 passed, 0 failedcargo check— cleanv0.6.4-esp32tag to trigger firmware release CIAfter merge
This triggers the firmware CI to build and upload correctly-versioned binaries as release artifacts.
🤖 Generated with claude-flow