From ab769258643b9ba6032824926248efea71fd85b7 Mon Sep 17 00:00:00 2001 From: ruv Date: Sun, 1 Mar 2026 02:20:52 -0500 Subject: [PATCH] docs: Comprehensive CHANGELOG update covering v1.0.0 through v3.0.0 Rewrites CHANGELOG.md with detailed entries for every significant feature, fix, and security patch across all three major versions: - v3.0.0: AETHER contrastive embedding model (ADR-024), Docker Hub images, UI port auto-detection fix, Mermaid architecture diagrams, 33 use cases across 4 verticals - v2.0.0: Rust sensing server, DensePose training pipeline (ADR-023), RuVector v2.0.4 integration (ADR-016/017), ESP32-S3 firmware (ADR-018), SOTA signal processing (ADR-014), vital sign detection (ADR-021), WiFi-Mat disaster module, 7 security patches, Python sensing pipeline, Three.js visualization - v1.1.0: Python CSI system, API services, UI dark mode - v1.0.0: Initial release with core pose estimation All entries reference specific commit hashes for traceability. Co-Authored-By: claude-flow --- CHANGELOG.md | 261 +++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 212 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 37209fa..d2a228e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,68 +5,231 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Added +- macOS CoreWLAN WiFi sensing adapter with user guide (`a6382fb`) + +--- + +## [3.0.0] - 2026-03-01 + +Major release: AETHER contrastive embedding model, Docker Hub images, and comprehensive UI overhaul. + +### Added — AETHER Contrastive Embedding Model (ADR-024) +- **Project AETHER** — self-supervised contrastive learning for WiFi CSI fingerprinting, similarity search, and anomaly detection (`9bbe956`) +- `embedding.rs` module: `ProjectionHead`, `InfoNceLoss`, `CsiAugmenter`, `FingerprintIndex`, `PoseEncoder`, `EmbeddingExtractor` (909 lines, zero external ML dependencies) +- SimCLR-style pretraining with 5 physically-motivated augmentations (temporal jitter, subcarrier masking, Gaussian noise, phase rotation, amplitude scaling) +- CLI flags: `--pretrain`, `--pretrain-epochs`, `--embed`, `--build-index ` +- Four HNSW-compatible fingerprint index types: `env_fingerprint`, `activity_pattern`, `temporal_baseline`, `person_track` +- Cross-modal `PoseEncoder` for WiFi-to-camera embedding alignment +- VICReg regularization for embedding collapse prevention +- 53K total parameters (55 KB at INT8) — fits on ESP32 + +### Added — Docker & Deployment +- Published Docker Hub images: `ruvnet/wifi-densepose:latest` (132 MB Rust) and `ruvnet/wifi-densepose:python` (569 MB) (`add9f19`) +- Multi-stage Dockerfile for Rust sensing server with RuVector crates +- `docker-compose.yml` orchestrating both Rust and Python services +- RVF model export via `--export-rvf` and load via `--load-rvf` CLI flags + +### Added — Documentation +- 33 use cases across 4 vertical tiers: Everyday, Specialized, Robotics & Industrial, Extreme (`0afd9c5`) +- "Why WiFi Wins" comparison table (WiFi vs camera vs LIDAR vs wearable vs PIR) +- Mermaid architecture diagrams: end-to-end pipeline, signal processing detail, deployment topology (`50f0fc9`) +- Models & Training section with RuVector crate links (GitHub + crates.io), SONA component table (`965a1cc`) +- RVF container section with deployment targets table (ESP32 0.7 MB to server 50+ MB) +- Collapsible README sections for improved navigation (`478d964`, `99ec980`, `0ebd6be`) +- Installation and Quick Start moved above Table of Contents (`50acbf7`) +- CSI hardware requirement notice (`528b394`) + +### Fixed +- **UI auto-detects server port from page origin** — no more hardcoded `localhost:8080`; works on any port (Docker :3000, native :8080, custom) (`3b72f35`, closes #55) +- **Docker port mismatch** — server now binds 3000/3001 inside container as documented (`44b9c30`) +- Added `/ws/sensing` WebSocket route to the HTTP server so UI only needs one port +- Fixed README API endpoint references: `/api/v1/health` → `/health`, `/api/v1/sensing` → `/api/v1/sensing/latest` +- Multi-person tracking limit corrected: configurable default 10, no hard software cap (`e2ce250`) + +--- + +## [2.0.0] - 2026-02-28 + +Major release: complete Rust sensing server, full DensePose training pipeline, RuVector v2.0.4 integration, ESP32-S3 firmware, and 6 security hardening patches. + +### Added — Rust Sensing Server +- **Full DensePose-compatible REST API** served by Axum (`d956c30`) + - `GET /health` — server health + - `GET /api/v1/sensing/latest` — live CSI sensing data + - `GET /api/v1/vital-signs` — breathing rate (6-30 BPM) and heartbeat (40-120 BPM) + - `GET /api/v1/pose/current` — 17 COCO keypoints derived from WiFi signal field + - `GET /api/v1/info` — server build and feature info + - `GET /api/v1/model/info` — RVF model container metadata + - `ws://host/ws/sensing` — real-time WebSocket stream +- Three data sources: `--source esp32` (UDP CSI), `--source windows` (netsh RSSI), `--source simulated` (deterministic reference) +- Auto-detection: server probes ESP32 UDP and Windows WiFi, falls back to simulated +- Three.js visualization UI with 3D body skeleton, signal heatmap, phase plot, Doppler bars, vital signs panel +- Static UI serving via `--ui-path` flag +- Throughput: 9,520–11,665 frames/sec (release build) + +### Added — ADR-021: Vital Sign Detection +- `VitalSignDetector` with breathing (6-30 BPM) and heartbeat (40-120 BPM) extraction from CSI fluctuations (`1192de9`) +- FFT-based spectral analysis with configurable band-pass filters +- Confidence scoring based on spectral peak prominence +- REST endpoint `/api/v1/vital-signs` with real-time JSON output + +### Added — ADR-023: DensePose Training Pipeline (Phases 1-8) +- `wifi-densepose-train` crate with complete 8-phase pipeline (`fc409df`, `ec98e40`, `fce1271`) + - Phase 1: `DataPipeline` with MM-Fi and Wi-Pose dataset loaders + - Phase 2: `CsiToPoseTransformer` — 4-head cross-attention + 2-layer GCN on COCO skeleton + - Phase 3: 6-term composite loss (MSE, bone length, symmetry, joint angle, temporal, confidence) + - Phase 4: `DynamicPersonMatcher` via ruvector-mincut (O(n^1.5 log n) Hungarian assignment) + - Phase 5: `SonaAdapter` — MicroLoRA rank-4 with EWC++ memory preservation + - Phase 6: `SparseInference` — progressive 3-layer model loading (A: essential, B: refinement, C: full) + - Phase 7: `RvfContainer` — single-file model packaging with segment-based binary format + - Phase 8: End-to-end training with cosine-annealing LR, early stopping, checkpoint saving +- CLI: `--train`, `--dataset`, `--epochs`, `--save-rvf`, `--load-rvf`, `--export-rvf` +- Benchmark: ~11,665 fps inference, 229 tests passing + +### Added — ADR-016: RuVector Training Integration (all 5 crates) +- `ruvector-mincut` → `DynamicPersonMatcher` in `metrics.rs` + subcarrier selection (`81ad09d`, `a7dd31c`) +- `ruvector-attn-mincut` → antenna attention in `model.rs` + noise-gated spectrogram +- `ruvector-temporal-tensor` → `CompressedCsiBuffer` in `dataset.rs` + compressed breathing/heartbeat +- `ruvector-solver` → sparse subcarrier interpolation (114→56) + Fresnel triangulation +- `ruvector-attention` → spatial attention in `model.rs` + attention-weighted BVP +- Vendored all 11 RuVector crates under `vendor/ruvector/` (`d803bfe`) + +### Added — ADR-017: RuVector Signal & MAT Integration (7 integration points) +- `gate_spectrogram()` — attention-gated noise suppression (`18170d7`) +- `attention_weighted_bvp()` — sensitivity-weighted velocity profiles +- `mincut_subcarrier_partition()` — dynamic sensitive/insensitive subcarrier split +- `solve_fresnel_geometry()` — TX-body-RX distance estimation +- `CompressedBreathingBuffer` + `CompressedHeartbeatSpectrogram` +- `BreathingDetector` + `HeartbeatDetector` (MAT crate, real FFT + micro-Doppler) +- Feature-gated behind `cfg(feature = "ruvector")` (`ab2453e`) + +### Added — ADR-018: ESP32-S3 Firmware & Live CSI Pipeline +- ESP32-S3 firmware with FreeRTOS CSI extraction (`92a5182`) +- ADR-018 binary frame format: `[0xAD, 0x18, len_hi, len_lo, payload]` +- Rust `Esp32Aggregator` receiving UDP frames on port 5005 +- `bridge.rs` converting I/Q pairs to amplitude/phase vectors +- NVS provisioning for WiFi credentials +- Pre-built binary quick start documentation (`696a726`) + +### Added — ADR-014: SOTA Signal Processing +- 6 algorithms, 83 tests (`fcb93cc`) + - Hampel filter (median + MAD, resistant to 50% contamination) + - Conjugate multiplication (reference-antenna ratio, cancels common-mode noise) + - Phase sanitization (unwrap + linear detrend, removes CFO/SFO) + - Fresnel zone geometry (TX-body-RX distance from first-principles physics) + - Body Velocity Profile (micro-Doppler extraction, 5.7x speedup) + - Attention-gated spectrogram (learned noise suppression) + +### Added — ADR-015: Public Dataset Training Strategy +- MM-Fi and Wi-Pose dataset specifications with download links (`4babb32`, `5dc2f66`) +- Verified dataset dimensions, sampling rates, and annotation formats +- Cross-dataset evaluation protocol + +### Added — WiFi-Mat Disaster Detection Module +- Multi-AP triangulation for through-wall survivor detection (`a17b630`, `6b20ff0`) +- Triage classification (breathing, heartbeat, motion) +- Domain events: `survivor_detected`, `survivor_updated`, `alert_created` +- WebSocket broadcast at `/ws/mat/stream` + +### Added — Infrastructure +- Guided 7-step interactive installer with 8 hardware profiles (`8583f3e`) +- Comprehensive build guide for Linux, macOS, Windows, Docker, ESP32 (`45f8a0d`) +- 12 Architecture Decision Records (ADR-001 through ADR-012) (`337dd96`) + +### Added — UI & Visualization +- Sensing-only UI mode with Gaussian splat visualization (`b7e0f07`) +- Three.js 3D body model (17 joints, 16 limbs) with signal-viz components +- Tabs: Dashboard, Hardware, Live Demo, Sensing, Architecture, Performance, Applications +- WebSocket client with automatic reconnection and exponential backoff + +### Added — Rust Signal Processing Crate +- Complete Rust port of WiFi-DensePose with modular workspace (`6ed69a3`) + - `wifi-densepose-signal` — CSI processing, phase sanitization, feature extraction + - `wifi-densepose-core` — shared types and configuration + - `wifi-densepose-nn` — neural network inference (DensePose head, RCNN) + - `wifi-densepose-hardware` — ESP32 aggregator, hardware interfaces + - `wifi-densepose-config` — configuration management +- Comprehensive benchmarks and validation tests (`3ccb301`) + +### Added — Python Sensing Pipeline +- `WindowsWifiCollector` — RSSI collection via `netsh wlan show networks` +- `RssiFeatureExtractor` — variance, spectral bands (motion 0.5-4 Hz, breathing 0.1-0.5 Hz), change points +- `PresenceClassifier` — rule-based 3-state classification (ABSENT / PRESENT_STILL / ACTIVE) +- Cross-receiver agreement scoring for multi-AP confidence boosting +- WebSocket sensing server (`ws_server.py`) broadcasting JSON at 2 Hz +- Deterministic CSI proof bundles for reproducible verification (`v1/data/proof/`) +- Commodity sensing unit tests (`b391638`) + +### Changed +- Rust hardware adapters now return explicit errors instead of silent empty data (`6e0e539`) + +### Fixed +- Review fixes for end-to-end training pipeline (`45f0304`) +- Dockerfile paths updated from `src/` to `v1/src/` (`7872987`) +- IoT profile installer instructions updated for aggregator CLI (`f460097`) +- `process.env` reference removed from browser ES module (`e320bc9`) + +### Performance +- 5.7x Doppler extraction speedup via optimized FFT windowing (`32c75c8`) +- Single 2.1 MB static binary, zero Python dependencies for Rust server + +### Security +- Fix SQL injection in status command and migrations (`f9d125d`) +- Fix XSS vulnerabilities in UI components (`5db55fd`) +- Fix command injection in statusline.cjs (`4cb01fd`) +- Fix path traversal vulnerabilities (`896c4fc`) +- Fix insecure WebSocket connections — enforce wss:// on non-localhost (`ac094d4`) +- Fix GitHub Actions shell injection (`ab2e7b4`) +- Fix 10 additional vulnerabilities, remove 12 dead code instances (`7afdad0`) + +--- + ## [1.1.0] - 2025-06-07 ### Added -- Multi-column table of contents in README.md for improved navigation -- Enhanced documentation structure with better organization -- Improved visual layout for better user experience +- Complete Python WiFi-DensePose system with CSI data extraction and router interface +- CSI processing and phase sanitization modules +- Batch processing for CSI data in `CSIProcessor` and `PhaseSanitizer` +- Hardware, pose, and stream services for WiFi-DensePose API +- Comprehensive CSS styles for UI components and dark mode support +- API and Deployment documentation -### Changed -- Updated README.md table of contents to use a two-column layout -- Reorganized documentation sections for better logical flow -- Enhanced readability of navigation structure +### Fixed +- Badge links for PyPI and Docker in README +- Async engine creation poolclass specification -### Documentation -- Restructured table of contents for better accessibility -- Improved visual hierarchy in documentation -- Enhanced user experience for documentation navigation +--- ## [1.0.0] - 2024-12-01 ### Added -- Initial release of WiFi DensePose -- Real-time WiFi-based human pose estimation using CSI data -- DensePose neural network integration -- RESTful API with comprehensive endpoints -- WebSocket streaming for real-time data -- Multi-person tracking capabilities +- Initial release of WiFi-DensePose +- Real-time WiFi-based human pose estimation using Channel State Information (CSI) +- DensePose neural network integration for body surface mapping +- RESTful API with comprehensive endpoint coverage +- WebSocket streaming for real-time pose data +- Multi-person tracking with configurable capacity (default 10, up to 50+) - Fall detection and activity recognition -- Healthcare, fitness, smart home, and security domain configurations -- Comprehensive CLI interface -- Docker and Kubernetes deployment support -- 100% test coverage -- Production-ready monitoring and logging -- Hardware abstraction layer for multiple WiFi devices -- Phase sanitization and signal processing +- Domain configurations: healthcare, fitness, smart home, security +- CLI interface for server management and configuration +- Hardware abstraction layer for multiple WiFi chipsets +- Phase sanitization and signal processing pipeline - Authentication and rate limiting - Background task management -- Database integration with PostgreSQL and Redis -- Prometheus metrics and Grafana dashboards -- Comprehensive documentation and examples - -### Features -- Privacy-preserving pose detection without cameras -- Sub-50ms latency with 30 FPS processing -- Support for up to 10 simultaneous person tracking -- Enterprise-grade security and scalability -- Cross-platform compatibility (Linux, macOS, Windows) -- GPU acceleration support -- Real-time analytics and alerting -- Configurable confidence thresholds -- Zone-based occupancy monitoring -- Historical data analysis -- Performance optimization tools -- Load testing capabilities -- Infrastructure as Code (Terraform, Ansible) -- CI/CD pipeline integration -- Comprehensive error handling and logging +- Cross-platform support (Linux, macOS, Windows) ### Documentation -- Complete user guide and API reference +- User guide and API reference - Deployment and troubleshooting guides - Hardware setup and calibration instructions -- Performance benchmarks and optimization tips -- Contributing guidelines and code standards -- Security best practices -- Example configurations and use cases \ No newline at end of file +- Performance benchmarks +- Contributing guidelines + +[Unreleased]: https://github.com/ruvnet/wifi-densepose/compare/v3.0.0...HEAD +[3.0.0]: https://github.com/ruvnet/wifi-densepose/compare/v2.0.0...v3.0.0 +[2.0.0]: https://github.com/ruvnet/wifi-densepose/compare/v1.1.0...v2.0.0 +[1.1.0]: https://github.com/ruvnet/wifi-densepose/compare/v1.0.0...v1.1.0 +[1.0.0]: https://github.com/ruvnet/wifi-densepose/releases/tag/v1.0.0