Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 86f0830

Browse files
authored
docs: update changelog, user guide, and README for ADR-043 (ruvnet#128)
- CHANGELOG: add ADR-043 entries (14 new API endpoints, WebSocket fix, mobile WS fix, 25 real mobile tests) - README: update ADR count from 41 to 43 - CLAUDE.md: update ADR count from 32 to 43 - User guide: add 14 new REST endpoints to API reference table, note that /ws/sensing is available on the HTTP port, update ADR count
1 parent d4fb7d3 commit 86f0830

4 files changed

Lines changed: 31 additions & 5 deletions

File tree

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
88
## [Unreleased]
99

1010
### Added
11+
- **Sensing server UI API completion (ADR-043)** — 14 fully-functional REST endpoints for model management, CSI recording, and training control
12+
- Model CRUD: `GET /api/v1/models`, `GET /api/v1/models/active`, `POST /api/v1/models/load`, `POST /api/v1/models/unload`, `DELETE /api/v1/models/:id`, `GET /api/v1/models/lora/profiles`, `POST /api/v1/models/lora/activate`
13+
- CSI recording: `GET /api/v1/recording/list`, `POST /api/v1/recording/start`, `POST /api/v1/recording/stop`, `DELETE /api/v1/recording/:id`
14+
- Training control: `GET /api/v1/train/status`, `POST /api/v1/train/start`, `POST /api/v1/train/stop`
15+
- Recording writes CSI frames to `.jsonl` files via tokio background task
16+
- Model/recording directories scanned at startup, state managed via `Arc<RwLock<AppStateInner>>`
17+
- **25 real mobile tests** replacing `it.todo()` placeholders — 205 assertions covering components, services, stores, hooks, screens, and utils
1118
- **Project MERIDIAN (ADR-027)** — Cross-environment domain generalization for WiFi pose estimation (1,858 lines, 72 tests)
1219
- `HardwareNormalizer` — Catmull-Rom cubic interpolation resamples any hardware CSI to canonical 56 subcarriers; z-score + phase sanitization
1320
- `DomainFactorizer` + `GradientReversalLayer` — adversarial disentanglement of pose-relevant vs environment-specific features
@@ -23,6 +30,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2330
- ADR-025: macOS CoreWLAN WiFi Sensing (ORCA)
2431

2532
### Fixed
33+
- **WebSocket "RECONNECTING" on Dashboard/Live Demo**`sensingService.start()` now called on app init in `app.js` so WebSocket connects immediately instead of waiting for Sensing tab visit
34+
- **Mobile WebSocket port**`ws.service.ts` `buildWsUrl()` uses same-origin port instead of hardcoded port 3001
35+
- **Mobile Jest config**`testPathIgnorePatterns` no longer silently ignores the entire test directory
2636
- Removed synthetic byte counters from Python `MacosWifiCollector` — now reports `tx_bytes=0, rx_bytes=0` instead of fake incrementing values
2737

2838
---

CLAUDE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ All 5 ruvector crates integrated in workspace:
5757
- `ruvector-attention``model.rs` (apply_spatial_attention) + `bvp.rs`
5858

5959
### Architecture Decisions
60-
32 ADRs in `docs/adr/` (ADR-001 through ADR-032). Key ones:
60+
43 ADRs in `docs/adr/` (ADR-001 through ADR-043). Key ones:
6161
- ADR-014: SOTA signal processing (Accepted)
6262
- ADR-015: MM-Fi + Wi-Pose training datasets (Accepted)
6363
- ADR-016: RuVector training pipeline integration (Accepted — complete)
@@ -173,7 +173,7 @@ Active feature branch: `ruvsense-full-implementation` (PR #77)
173173
## File Organization
174174

175175
- NEVER save to root folder — use the directories below
176-
- `docs/adr/` — Architecture Decision Records (32 ADRs)
176+
- `docs/adr/` — Architecture Decision Records (43 ADRs)
177177
- `docs/ddd/` — Domain-Driven Design models
178178
- `rust-port/wifi-densepose-rs/crates/` — Rust workspace crates (15 crates)
179179
- `rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/` — RuvSense multistatic modules (14 files)

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ docker run -p 3000:3000 ruvnet/wifi-densepose:latest
5050
| [User Guide](docs/user-guide.md) | Step-by-step guide: installation, first run, API usage, hardware setup, training |
5151
| [WiFi-Mat User Guide](docs/wifi-mat-user-guide.md) | Disaster response module: search & rescue, START triage |
5252
| [Build Guide](docs/build-guide.md) | Building from source (Rust and Python) |
53-
| [Architecture Decisions](docs/adr/) | 41 ADRs covering signal processing, training, hardware, security, domain generalization, multistatic sensing, CRV signal-line integration, edge intelligence |
53+
| [Architecture Decisions](docs/adr/) | 43 ADRs covering signal processing, training, hardware, security, domain generalization, multistatic sensing, CRV signal-line integration, edge intelligence, WASM edge modules, UI API completion |
5454
| [DDD Domain Model](docs/ddd/ruvsense-domain-model.md) | RuvSense bounded contexts, aggregates, domain events, and ubiquitous language |
5555

5656
---

docs/user-guide.md

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,20 @@ Base URL: `http://localhost:3000` (Docker) or `http://localhost:8080` (binary de
301301
| `GET` | `/api/v1/model/layers` | Progressive model loading status | Layer A/B/C load state |
302302
| `GET` | `/api/v1/model/sona/profiles` | SONA adaptation profiles | List of environment profiles |
303303
| `POST` | `/api/v1/model/sona/activate` | Activate a SONA profile for a specific room | `{"profile":"kitchen"}` |
304+
| `GET` | `/api/v1/models` | List available RVF model files | `{"models":[...],"count":0}` |
305+
| `GET` | `/api/v1/models/active` | Currently loaded model (or null) | `{"model":null}` |
306+
| `POST` | `/api/v1/models/load` | Load a model by ID | `{"status":"loaded","model_id":"..."}` |
307+
| `POST` | `/api/v1/models/unload` | Unload the active model | `{"status":"unloaded"}` |
308+
| `DELETE` | `/api/v1/models/:id` | Delete a model file from disk | `{"status":"deleted"}` |
309+
| `GET` | `/api/v1/models/lora/profiles` | List LoRA adapter profiles | `{"profiles":[]}` |
310+
| `POST` | `/api/v1/models/lora/activate` | Activate a LoRA profile | `{"status":"activated"}` |
311+
| `GET` | `/api/v1/recording/list` | List CSI recording sessions | `{"recordings":[...],"count":0}` |
312+
| `POST` | `/api/v1/recording/start` | Start recording CSI frames to JSONL | `{"status":"recording","session_id":"..."}` |
313+
| `POST` | `/api/v1/recording/stop` | Stop the active recording | `{"status":"stopped","duration_secs":...}` |
314+
| `DELETE` | `/api/v1/recording/:id` | Delete a recording file | `{"status":"deleted"}` |
315+
| `GET` | `/api/v1/train/status` | Training run status | `{"phase":"idle"}` |
316+
| `POST` | `/api/v1/train/start` | Start a training run | `{"status":"started"}` |
317+
| `POST` | `/api/v1/train/stop` | Stop the active training run | `{"status":"stopped"}` |
304318

305319
### Example: Get Vital Signs
306320

@@ -347,7 +361,9 @@ curl -s http://localhost:3000/api/v1/pose/current | python -m json.tool
347361

348362
Real-time sensing data is available via WebSocket.
349363

350-
**URL:** `ws://localhost:3001/ws/sensing` (Docker) or `ws://localhost:8765/ws/sensing` (binary default).
364+
**URL:** `ws://localhost:3000/ws/sensing` (same port as HTTP — recommended) or `ws://localhost:3001/ws/sensing` (dedicated WS port).
365+
366+
> **Note:** The `/ws/sensing` WebSocket endpoint is available on both the HTTP port (3000) and the dedicated WebSocket port (3001/8765). The web UI uses the HTTP port so only one port needs to be exposed. The dedicated WS port remains available for backward compatibility.
351367
352368
### Python Example
353369

@@ -812,7 +828,7 @@ The Rust implementation (v2) is 810x faster than Python (v1) for the full CSI pi
812828

813829
## Further Reading
814830

815-
- [Architecture Decision Records](../docs/adr/) - 33 ADRs covering all design decisions
831+
- [Architecture Decision Records](../docs/adr/) - 43 ADRs covering all design decisions
816832
- [WiFi-Mat Disaster Response Guide](wifi-mat-user-guide.md) - Search & rescue module
817833
- [Build Guide](build-guide.md) - Detailed build instructions
818834
- [RuVector](https://github.com/ruvnet/ruvector) - Signal intelligence crate ecosystem

0 commit comments

Comments
 (0)