From 20301bb0b89666dfdacc7b6b3163da92a0ee21bb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 30 Apr 2026 00:33:15 +0000 Subject: [PATCH] deploy(pointcloud): ad41a8996004ef88067dd8765642b87bb980a06f ad41a8996004ef88067dd8765642b87bb980a06f --- pointcloud/README.md | 11 +++++++++-- pointcloud/index.html | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/pointcloud/README.md b/pointcloud/README.md index 37c57a8c..a24ea647 100644 --- a/pointcloud/README.md +++ b/pointcloud/README.md @@ -7,8 +7,15 @@ Hosted at: https://ruvnet.github.io/RuView/pointcloud/ - Default — synthetic in-browser demo (no backend, no network calls). - `?backend=auto` — fetch from `/api/splats` on the same origin (only works when the viewer is served by `ruview-pointcloud serve`). -- `?backend=` — fetch from `/api/splats` on a CORS-permitting - host (e.g. `?backend=https://my-ruview.example.com`). +- `?backend=` — fetch from `/api/splats`. The intended + local-ESP32 use is `?backend=http://127.0.0.1:9880`: run + `ruview-pointcloud serve --bind 127.0.0.1:9880` on the same + machine with your ESP32 streaming CSI to UDP port 3333, then + visit the URL above. The local server's CorsLayer permits + requests from `https://ruvnet.github.io`, and modern browsers + permit HTTPS→127.0.0.1 mixed-content as a trustworthy origin. + The "📡 Connect ESP32" button in the viewer prompts for this + URL and persists it in localStorage. - `?live=1` — require a live backend; show an offline message instead of falling back to the synthetic demo. diff --git a/pointcloud/index.html b/pointcloud/index.html index c8ac95b3..be142a49 100644 --- a/pointcloud/index.html +++ b/pointcloud/index.html @@ -14,6 +14,9 @@ #cam-cta { position: absolute; bottom: 16px; left: 50%; transform: translateX(-50%); padding: 10px 18px; background: #e8a634; color: #0a0a0a; border: none; border-radius: 4px; font-family: monospace; font-size: 14px; font-weight: bold; cursor: pointer; z-index: 10; } #cam-cta:hover { background: #ffc04d; } #cam-cta.hidden { display: none; } + #esp-cta { position: absolute; bottom: 16px; right: 16px; padding: 8px 14px; background: transparent; color: #e8a634; border: 1px solid #e8a634; border-radius: 4px; font-family: monospace; font-size: 12px; cursor: pointer; z-index: 10; } + #esp-cta:hover { background: rgba(232, 166, 52, 0.12); } + #esp-cta.connected { background: #4f4; color: #0a0a0a; border-color: #4f4; } .live { color: #4f4; } .demo { color: #f44; } .face { color: #4cf; } .section { margin-top: 6px; padding-top: 6px; border-top: 1px solid #333; } @@ -32,6 +35,7 @@
Loading...
+