Ruview/.github/workflows
ruv ad41a89960 feat(pointcloud): integrate ESP32 CSI as optional data stream from hosted viewer
The hosted GitHub Pages viewer can now act as a thin client for a
locally-running ruview-pointcloud serve instance — flip a button, the
ESP32's CSI fusion (camera depth + WiFi CSI + mmWave) renders inside
the same Three.js scene that previously only showed the face mesh
demo. No clone, no rebuild, no toolchain on the visitor's side.

Server (stream.rs):
- Add tower_http::cors::CorsLayer with a deliberate allowlist:
  https://ruvnet.github.io, http://localhost:*, http://127.0.0.1:*,
  and 'null' (for file:// origins). Anything else is denied — not a
  wildcard CORS. Modern browsers (Chrome 94+, Firefox 116+, Safari
  16.4+) treat 127.0.0.1 as a "potentially trustworthy" origin so
  HTTPS Pages → HTTP loopback is permitted. The new layer wraps the
  existing /api/cloud, /api/splats, /api/status, /health routes.
- Cargo.toml: pull in workspace tower-http (cors feature already on).

Viewer:
- New "📡 Connect ESP32…" CTA bottom-right. Clicking prompts for a
  ruview-pointcloud serve URL (default http://127.0.0.1:9880),
  persists the last-used value in localStorage, and reloads with
  ?backend=<url> so the existing remote-mode fetch path takes over.
  When already connected the button toggles to "disconnect" and
  reloads back to the demo.
- Reuses the existing transport selector — no new code path to
  maintain. The face mesh / synthetic demo render path is unaffected;
  this is purely an additive UI affordance over the ?backend= query.

Docs:
- ADR-094 §2.3 expanded with the local-ESP32 workflow and the CORS
  posture rationale.
- Workflow README documents ?backend=http://127.0.0.1:9880 as the
  intended local-ESP32 path.

Tests: cargo test -p wifi-densepose-pointcloud → 15/15 passed.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-04-29 20:33:00 -04:00
..
cd.yml security: Fix GitHub Actions shell injection vulnerability 2026-02-28 20:40:25 +01:00
ci.yml security: pin GitHub Actions to SHAs and bump vulnerable npm deps (#442) 2026-04-28 08:46:51 -04:00
dashboard-a11y.yml fix(ci): wasm-pack PATH + Dockerfile workspace stub (#440) 2026-04-27 12:49:03 -04:00
dashboard-pages.yml fix(ci): wasm-pack PATH + Dockerfile workspace stub (#440) 2026-04-27 12:49:03 -04:00
desktop-release.yml chore(repo): rename rust-port/wifi-densepose-rs → v2/ (flatten to one level) (#427) 2026-04-25 21:28:13 -04:00
firmware-ci.yml Release v0.6.2-esp32: ADR-081 kernel + Timer Svc fix, 4MB CI variant 2026-04-20 10:59:05 -04:00
firmware-qemu.yml fix(firmware): fall detection, 4MB flash, QEMU CI (#263, #265) 2026-03-15 11:49:29 -04:00
nvsim-server-docker.yml feat(nvsim): full simulator stack — Rust crate, dashboard, server, App Store, Ghost Murmur [ADR-089/090/091/092/093] 2026-04-27 12:41:01 -04:00
pointcloud-pages.yml feat(pointcloud): integrate ESP32 CSI as optional data stream from hosted viewer 2026-04-29 20:33:00 -04:00
security-scan.yml security: pin GitHub Actions to SHAs and bump vulnerable npm deps (#442) 2026-04-28 08:46:51 -04:00
update-submodules.yml chore: track upstream main branch for vendor submodules 2026-03-04 13:30:48 -05:00
verify-pipeline.yml chore(repo): move v1/ → archive/v1/ + add archive/README.md (#430) 2026-04-25 23:07:52 -04:00