@@ -5,68 +5,238 @@ All notable changes to this project will be documented in this file.
55The format is based on [ Keep a Changelog] ( https://keepachangelog.com/en/1.0.0/ ) ,
66and this project adheres to [ Semantic Versioning] ( https://semver.org/spec/v2.0.0.html ) .
77
8- ## [ 1.1.0 ] - 2025-06-07
8+ ## [ Unreleased ]
99
1010### Added
11- - Multi-column table of contents in README.md for improved navigation
12- - Enhanced documentation structure with better organization
13- - Improved visual layout for better user experience
11+ - ** Cross-platform RSSI adapters** — macOS CoreWLAN (` MacosCoreWlanScanner ` ) and Linux ` iw ` (` LinuxIwScanner ` ) Rust adapters with ` #[cfg(target_os)] ` gating
12+ - macOS CoreWLAN Python sensing adapter with Swift helper (` mac_wifi.swift ` )
13+ - macOS synthetic BSSID generation (FNV-1a hash) for Sonoma 14.4+ BSSID redaction
14+ - Linux ` iw dev <iface> scan ` parser with freq-to-channel conversion and ` scan dump ` (no-root) mode
15+ - ADR-025: macOS CoreWLAN WiFi Sensing (ORCA)
16+
17+ ### Fixed
18+ - Removed synthetic byte counters from Python ` MacosWifiCollector ` — now reports ` tx_bytes=0, rx_bytes=0 ` instead of fake incrementing values
19+
20+ ---
21+
22+ ## [ 3.0.0] - 2026-03-01
23+
24+ Major release: AETHER contrastive embedding model, Docker Hub images, and comprehensive UI overhaul.
25+
26+ ### Added — AETHER Contrastive Embedding Model (ADR-024)
27+ - ** Project AETHER** — self-supervised contrastive learning for WiFi CSI fingerprinting, similarity search, and anomaly detection (` 9bbe956 ` )
28+ - ` embedding.rs ` module: ` ProjectionHead ` , ` InfoNceLoss ` , ` CsiAugmenter ` , ` FingerprintIndex ` , ` PoseEncoder ` , ` EmbeddingExtractor ` (909 lines, zero external ML dependencies)
29+ - SimCLR-style pretraining with 5 physically-motivated augmentations (temporal jitter, subcarrier masking, Gaussian noise, phase rotation, amplitude scaling)
30+ - CLI flags: ` --pretrain ` , ` --pretrain-epochs ` , ` --embed ` , ` --build-index <type> `
31+ - Four HNSW-compatible fingerprint index types: ` env_fingerprint ` , ` activity_pattern ` , ` temporal_baseline ` , ` person_track `
32+ - Cross-modal ` PoseEncoder ` for WiFi-to-camera embedding alignment
33+ - VICReg regularization for embedding collapse prevention
34+ - 53K total parameters (55 KB at INT8) — fits on ESP32
35+
36+ ### Added — Docker & Deployment
37+ - Published Docker Hub images: ` ruvnet/wifi-densepose:latest ` (132 MB Rust) and ` ruvnet/wifi-densepose:python ` (569 MB) (` add9f19 ` )
38+ - Multi-stage Dockerfile for Rust sensing server with RuVector crates
39+ - ` docker-compose.yml ` orchestrating both Rust and Python services
40+ - RVF model export via ` --export-rvf ` and load via ` --load-rvf ` CLI flags
41+
42+ ### Added — Documentation
43+ - 33 use cases across 4 vertical tiers: Everyday, Specialized, Robotics & Industrial, Extreme (` 0afd9c5 ` )
44+ - "Why WiFi Wins" comparison table (WiFi vs camera vs LIDAR vs wearable vs PIR)
45+ - Mermaid architecture diagrams: end-to-end pipeline, signal processing detail, deployment topology (` 50f0fc9 ` )
46+ - Models & Training section with RuVector crate links (GitHub + crates.io), SONA component table (` 965a1cc ` )
47+ - RVF container section with deployment targets table (ESP32 0.7 MB to server 50+ MB)
48+ - Collapsible README sections for improved navigation (` 478d964 ` , ` 99ec980 ` , ` 0ebd6be ` )
49+ - Installation and Quick Start moved above Table of Contents (` 50acbf7 ` )
50+ - CSI hardware requirement notice (` 528b394 ` )
51+
52+ ### Fixed
53+ - ** 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 )
54+ - ** Docker port mismatch** — server now binds 3000/3001 inside container as documented (` 44b9c30 ` )
55+ - Added ` /ws/sensing ` WebSocket route to the HTTP server so UI only needs one port
56+ - Fixed README API endpoint references: ` /api/v1/health ` → ` /health ` , ` /api/v1/sensing ` → ` /api/v1/sensing/latest `
57+ - Multi-person tracking limit corrected: configurable default 10, no hard software cap (` e2ce250 ` )
58+
59+ ---
60+
61+ ## [ 2.0.0] - 2026-02-28
62+
63+ Major release: complete Rust sensing server, full DensePose training pipeline, RuVector v2.0.4 integration, ESP32-S3 firmware, and 6 security hardening patches.
64+
65+ ### Added — Rust Sensing Server
66+ - ** Full DensePose-compatible REST API** served by Axum (` d956c30 ` )
67+ - ` GET /health ` — server health
68+ - ` GET /api/v1/sensing/latest ` — live CSI sensing data
69+ - ` GET /api/v1/vital-signs ` — breathing rate (6-30 BPM) and heartbeat (40-120 BPM)
70+ - ` GET /api/v1/pose/current ` — 17 COCO keypoints derived from WiFi signal field
71+ - ` GET /api/v1/info ` — server build and feature info
72+ - ` GET /api/v1/model/info ` — RVF model container metadata
73+ - ` ws://host/ws/sensing ` — real-time WebSocket stream
74+ - Three data sources: ` --source esp32 ` (UDP CSI), ` --source windows ` (netsh RSSI), ` --source simulated ` (deterministic reference)
75+ - Auto-detection: server probes ESP32 UDP and Windows WiFi, falls back to simulated
76+ - Three.js visualization UI with 3D body skeleton, signal heatmap, phase plot, Doppler bars, vital signs panel
77+ - Static UI serving via ` --ui-path ` flag
78+ - Throughput: 9,520–11,665 frames/sec (release build)
79+
80+ ### Added — ADR-021: Vital Sign Detection
81+ - ` VitalSignDetector ` with breathing (6-30 BPM) and heartbeat (40-120 BPM) extraction from CSI fluctuations (` 1192de9 ` )
82+ - FFT-based spectral analysis with configurable band-pass filters
83+ - Confidence scoring based on spectral peak prominence
84+ - REST endpoint ` /api/v1/vital-signs ` with real-time JSON output
85+
86+ ### Added — ADR-023: DensePose Training Pipeline (Phases 1-8)
87+ - ` wifi-densepose-train ` crate with complete 8-phase pipeline (` fc409df ` , ` ec98e40 ` , ` fce1271 ` )
88+ - Phase 1: ` DataPipeline ` with MM-Fi and Wi-Pose dataset loaders
89+ - Phase 2: ` CsiToPoseTransformer ` — 4-head cross-attention + 2-layer GCN on COCO skeleton
90+ - Phase 3: 6-term composite loss (MSE, bone length, symmetry, joint angle, temporal, confidence)
91+ - Phase 4: ` DynamicPersonMatcher ` via ruvector-mincut (O(n^1.5 log n) Hungarian assignment)
92+ - Phase 5: ` SonaAdapter ` — MicroLoRA rank-4 with EWC++ memory preservation
93+ - Phase 6: ` SparseInference ` — progressive 3-layer model loading (A: essential, B: refinement, C: full)
94+ - Phase 7: ` RvfContainer ` — single-file model packaging with segment-based binary format
95+ - Phase 8: End-to-end training with cosine-annealing LR, early stopping, checkpoint saving
96+ - CLI: ` --train ` , ` --dataset ` , ` --epochs ` , ` --save-rvf ` , ` --load-rvf ` , ` --export-rvf `
97+ - Benchmark: ~ 11,665 fps inference, 229 tests passing
98+
99+ ### Added — ADR-016: RuVector Training Integration (all 5 crates)
100+ - ` ruvector-mincut ` → ` DynamicPersonMatcher ` in ` metrics.rs ` + subcarrier selection (` 81ad09d ` , ` a7dd31c ` )
101+ - ` ruvector-attn-mincut ` → antenna attention in ` model.rs ` + noise-gated spectrogram
102+ - ` ruvector-temporal-tensor ` → ` CompressedCsiBuffer ` in ` dataset.rs ` + compressed breathing/heartbeat
103+ - ` ruvector-solver ` → sparse subcarrier interpolation (114→56) + Fresnel triangulation
104+ - ` ruvector-attention ` → spatial attention in ` model.rs ` + attention-weighted BVP
105+ - Vendored all 11 RuVector crates under ` vendor/ruvector/ ` (` d803bfe ` )
106+
107+ ### Added — ADR-017: RuVector Signal & MAT Integration (7 integration points)
108+ - ` gate_spectrogram() ` — attention-gated noise suppression (` 18170d7 ` )
109+ - ` attention_weighted_bvp() ` — sensitivity-weighted velocity profiles
110+ - ` mincut_subcarrier_partition() ` — dynamic sensitive/insensitive subcarrier split
111+ - ` solve_fresnel_geometry() ` — TX-body-RX distance estimation
112+ - ` CompressedBreathingBuffer ` + ` CompressedHeartbeatSpectrogram `
113+ - ` BreathingDetector ` + ` HeartbeatDetector ` (MAT crate, real FFT + micro-Doppler)
114+ - Feature-gated behind ` cfg(feature = "ruvector") ` (` ab2453e ` )
115+
116+ ### Added — ADR-018: ESP32-S3 Firmware & Live CSI Pipeline
117+ - ESP32-S3 firmware with FreeRTOS CSI extraction (` 92a5182 ` )
118+ - ADR-018 binary frame format: ` [0xAD, 0x18, len_hi, len_lo, payload] `
119+ - Rust ` Esp32Aggregator ` receiving UDP frames on port 5005
120+ - ` bridge.rs ` converting I/Q pairs to amplitude/phase vectors
121+ - NVS provisioning for WiFi credentials
122+ - Pre-built binary quick start documentation (` 696a726 ` )
123+
124+ ### Added — ADR-014: SOTA Signal Processing
125+ - 6 algorithms, 83 tests (` fcb93cc ` )
126+ - Hampel filter (median + MAD, resistant to 50% contamination)
127+ - Conjugate multiplication (reference-antenna ratio, cancels common-mode noise)
128+ - Phase sanitization (unwrap + linear detrend, removes CFO/SFO)
129+ - Fresnel zone geometry (TX-body-RX distance from first-principles physics)
130+ - Body Velocity Profile (micro-Doppler extraction, 5.7x speedup)
131+ - Attention-gated spectrogram (learned noise suppression)
132+
133+ ### Added — ADR-015: Public Dataset Training Strategy
134+ - MM-Fi and Wi-Pose dataset specifications with download links (` 4babb32 ` , ` 5dc2f66 ` )
135+ - Verified dataset dimensions, sampling rates, and annotation formats
136+ - Cross-dataset evaluation protocol
137+
138+ ### Added — WiFi-Mat Disaster Detection Module
139+ - Multi-AP triangulation for through-wall survivor detection (` a17b630 ` , ` 6b20ff0 ` )
140+ - Triage classification (breathing, heartbeat, motion)
141+ - Domain events: ` survivor_detected ` , ` survivor_updated ` , ` alert_created `
142+ - WebSocket broadcast at ` /ws/mat/stream `
143+
144+ ### Added — Infrastructure
145+ - Guided 7-step interactive installer with 8 hardware profiles (` 8583f3e ` )
146+ - Comprehensive build guide for Linux, macOS, Windows, Docker, ESP32 (` 45f8a0d ` )
147+ - 12 Architecture Decision Records (ADR-001 through ADR-012) (` 337dd96 ` )
148+
149+ ### Added — UI & Visualization
150+ - Sensing-only UI mode with Gaussian splat visualization (` b7e0f07 ` )
151+ - Three.js 3D body model (17 joints, 16 limbs) with signal-viz components
152+ - Tabs: Dashboard, Hardware, Live Demo, Sensing, Architecture, Performance, Applications
153+ - WebSocket client with automatic reconnection and exponential backoff
154+
155+ ### Added — Rust Signal Processing Crate
156+ - Complete Rust port of WiFi-DensePose with modular workspace (` 6ed69a3 ` )
157+ - ` wifi-densepose-signal ` — CSI processing, phase sanitization, feature extraction
158+ - ` wifi-densepose-core ` — shared types and configuration
159+ - ` wifi-densepose-nn ` — neural network inference (DensePose head, RCNN)
160+ - ` wifi-densepose-hardware ` — ESP32 aggregator, hardware interfaces
161+ - ` wifi-densepose-config ` — configuration management
162+ - Comprehensive benchmarks and validation tests (` 3ccb301 ` )
163+
164+ ### Added — Python Sensing Pipeline
165+ - ` WindowsWifiCollector ` — RSSI collection via ` netsh wlan show networks `
166+ - ` RssiFeatureExtractor ` — variance, spectral bands (motion 0.5-4 Hz, breathing 0.1-0.5 Hz), change points
167+ - ` PresenceClassifier ` — rule-based 3-state classification (ABSENT / PRESENT_STILL / ACTIVE)
168+ - Cross-receiver agreement scoring for multi-AP confidence boosting
169+ - WebSocket sensing server (` ws_server.py ` ) broadcasting JSON at 2 Hz
170+ - Deterministic CSI proof bundles for reproducible verification (` v1/data/proof/ ` )
171+ - Commodity sensing unit tests (` b391638 ` )
14172
15173### Changed
16- - Updated README.md table of contents to use a two-column layout
17- - Reorganized documentation sections for better logical flow
18- - Enhanced readability of navigation structure
174+ - Rust hardware adapters now return explicit errors instead of silent empty data (` 6e0e539 ` )
19175
20- ### Documentation
21- - Restructured table of contents for better accessibility
22- - Improved visual hierarchy in documentation
23- - Enhanced user experience for documentation navigation
176+ ### Fixed
177+ - Review fixes for end-to-end training pipeline (` 45f0304 ` )
178+ - Dockerfile paths updated from ` src/ ` to ` v1/src/ ` (` 7872987 ` )
179+ - IoT profile installer instructions updated for aggregator CLI (` f460097 ` )
180+ - ` process.env ` reference removed from browser ES module (` e320bc9 ` )
181+
182+ ### Performance
183+ - 5.7x Doppler extraction speedup via optimized FFT windowing (` 32c75c8 ` )
184+ - Single 2.1 MB static binary, zero Python dependencies for Rust server
185+
186+ ### Security
187+ - Fix SQL injection in status command and migrations (` f9d125d ` )
188+ - Fix XSS vulnerabilities in UI components (` 5db55fd ` )
189+ - Fix command injection in statusline.cjs (` 4cb01fd ` )
190+ - Fix path traversal vulnerabilities (` 896c4fc ` )
191+ - Fix insecure WebSocket connections — enforce wss:// on non-localhost (` ac094d4 ` )
192+ - Fix GitHub Actions shell injection (` ab2e7b4 ` )
193+ - Fix 10 additional vulnerabilities, remove 12 dead code instances (` 7afdad0 ` )
194+
195+ ---
196+
197+ ## [ 1.1.0] - 2025-06-07
198+
199+ ### Added
200+ - Complete Python WiFi-DensePose system with CSI data extraction and router interface
201+ - CSI processing and phase sanitization modules
202+ - Batch processing for CSI data in ` CSIProcessor ` and ` PhaseSanitizer `
203+ - Hardware, pose, and stream services for WiFi-DensePose API
204+ - Comprehensive CSS styles for UI components and dark mode support
205+ - API and Deployment documentation
206+
207+ ### Fixed
208+ - Badge links for PyPI and Docker in README
209+ - Async engine creation poolclass specification
210+
211+ ---
24212
25213## [ 1.0.0] - 2024-12-01
26214
27215### Added
28- - Initial release of WiFi DensePose
29- - Real-time WiFi-based human pose estimation using CSI data
30- - DensePose neural network integration
31- - RESTful API with comprehensive endpoints
32- - WebSocket streaming for real-time data
33- - Multi-person tracking capabilities
216+ - Initial release of WiFi- DensePose
217+ - Real-time WiFi-based human pose estimation using Channel State Information (CSI)
218+ - DensePose neural network integration for body surface mapping
219+ - RESTful API with comprehensive endpoint coverage
220+ - WebSocket streaming for real-time pose data
221+ - Multi-person tracking with configurable capacity (default 10, up to 50+)
34222- Fall detection and activity recognition
35- - Healthcare, fitness, smart home, and security domain configurations
36- - Comprehensive CLI interface
37- - Docker and Kubernetes deployment support
38- - 100% test coverage
39- - Production-ready monitoring and logging
40- - Hardware abstraction layer for multiple WiFi devices
41- - Phase sanitization and signal processing
223+ - Domain configurations: healthcare, fitness, smart home, security
224+ - CLI interface for server management and configuration
225+ - Hardware abstraction layer for multiple WiFi chipsets
226+ - Phase sanitization and signal processing pipeline
42227- Authentication and rate limiting
43228- Background task management
44- - Database integration with PostgreSQL and Redis
45- - Prometheus metrics and Grafana dashboards
46- - Comprehensive documentation and examples
47-
48- ### Features
49- - Privacy-preserving pose detection without cameras
50- - Sub-50ms latency with 30 FPS processing
51- - Support for up to 10 simultaneous person tracking
52- - Enterprise-grade security and scalability
53- - Cross-platform compatibility (Linux, macOS, Windows)
54- - GPU acceleration support
55- - Real-time analytics and alerting
56- - Configurable confidence thresholds
57- - Zone-based occupancy monitoring
58- - Historical data analysis
59- - Performance optimization tools
60- - Load testing capabilities
61- - Infrastructure as Code (Terraform, Ansible)
62- - CI/CD pipeline integration
63- - Comprehensive error handling and logging
229+ - Cross-platform support (Linux, macOS, Windows)
64230
65231### Documentation
66- - Complete user guide and API reference
232+ - User guide and API reference
67233- Deployment and troubleshooting guides
68234- Hardware setup and calibration instructions
69- - Performance benchmarks and optimization tips
70- - Contributing guidelines and code standards
71- - Security best practices
72- - Example configurations and use cases
235+ - Performance benchmarks
236+ - Contributing guidelines
237+
238+ [ Unreleased ] : https://github.com/ruvnet/wifi-densepose/compare/v3.0.0...HEAD
239+ [ 3.0.0 ] : https://github.com/ruvnet/wifi-densepose/compare/v2.0.0...v3.0.0
240+ [ 2.0.0 ] : https://github.com/ruvnet/wifi-densepose/compare/v1.1.0...v2.0.0
241+ [ 1.1.0 ] : https://github.com/ruvnet/wifi-densepose/compare/v1.0.0...v1.1.0
242+ [ 1.0.0 ] : https://github.com/ruvnet/wifi-densepose/releases/tag/v1.0.0
0 commit comments