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