wifi-densepose/ui/components
Taylor Dawson 11a413d7ef feat(sensing-server): per-node CSI separation + dynamic classifier classes
Track each ESP32 node independently instead of merging all CSI frames
into a single buffer. This enables per-node feature computation,
spatial awareness, and proper multi-node visualization.

Per-node CSI separation:
- Add NodeState struct with per-node frame_history, RSSI history,
  features, classification, and smoothing state
- Compute features per-node using each node's own temporal history
- Add compute_fused_features() for backward-compatible aggregate
- Add smooth_and_classify_node() for per-node motion classification
- Add GET /api/v1/nodes endpoint for per-node health/status
- Add PerNodeFeatureInfo to WebSocket SensingUpdate messages
- Fix RSSI sign (use saturating_neg for correct negative dBm values)
- Node timeout: stale after 5s, removed after 30s

Dynamic classifier classes:
- Remove hardcoded CLASSES array and N_CLASSES constant
- Discover classes automatically from training data filenames
- Convention: train_<class>_<description>.jsonl
- Users can add any class by recording with appropriate filename
- Backward compatible with existing 4-class models via serde default
- AdaptiveModel now stores class_names as Vec<String>

UI changes:
- Dynamic node count display (was hardcoded "1 ESP32")
- Per-node status cards showing RSSI, variance, classification
- Color-coded node markers in 3D gaussian splat view
- Per-node RSSI history tracking in sensing service
- XSS-safe DOM element creation (no innerHTML with server data)

Addresses #237, #276, #51

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:37:18 -07:00
..
DashboardTab.js fix: WebSocket race condition, data source indicators, auto-start pose detection (#96) 2026-03-02 13:47:49 -05:00
HardwareTab.js security: Fix XSS vulnerabilities in UI components 2026-02-28 20:40:00 +01:00
LiveDemoTab.js fix: WebSocket race condition, data source indicators, auto-start pose detection (#96) 2026-03-02 13:47:49 -05:00
ModelPanel.js fix: WebSocket race condition, data source indicators, auto-start pose detection (#96) 2026-03-02 13:47:49 -05:00
PoseDetectionCanvas.js fix: WebSocket race condition, data source indicators, auto-start pose detection (#96) 2026-03-02 13:47:49 -05:00
SensingTab.js feat(sensing-server): per-node CSI separation + dynamic classifier classes 2026-03-25 15:37:18 -07:00
SettingsPanel.js fix: WebSocket race condition, data source indicators, auto-start pose detection (#96) 2026-03-02 13:47:49 -05:00
TabManager.js Add comprehensive CSS styles for UI components and dark mode support 2025-06-07 13:28:02 +00:00
TrainingPanel.js fix: WebSocket race condition, data source indicators, auto-start pose detection (#96) 2026-03-02 13:47:49 -05:00
body-model.js feat: CI pipeline verification, 3D body model, auth fixes, requirements lock 2026-02-28 06:20:08 +00:00
dashboard-hud.js feat: Add hardware requirement notice to README, additional Three.js viz components 2026-02-28 06:26:10 +00:00
environment.js feat: Add hardware requirement notice to README, additional Three.js viz components 2026-02-28 06:26:10 +00:00
gaussian-splats.js feat(sensing-server): per-node CSI separation + dynamic classifier classes 2026-03-25 15:37:18 -07:00
scene.js feat: Add commodity sensing, proof bundle, Three.js viz, mock isolation 2026-02-28 06:18:58 +00:00
signal-viz.js feat: Add hardware requirement notice to README, additional Three.js viz components 2026-02-28 06:26:10 +00:00