diff --git a/CHANGELOG.md b/CHANGELOG.md index ea1114b..6843661 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,43 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). --- +## [1.0.0] - 2026-02-01 + +### Added + +- **Multi-Scanner Peer Sync** - Multiple scanner instances share device metadata + - Peer registration API (`/api/peers/register`) + - Bidirectional sync (`/api/sync/devices`) + - Background sync thread (30s default interval) + - Automatic mutual registration between peers +- **Source scanner tracking** - Synced devices retain original detector info + - Devices positioned relative to detecting scanner, not local scanner + - Moving local scanner doesn't affect synced device positions +- **Peer scanner markers** - Show peer scanners on 3D map (cyan icons) +- Scanner identity configuration (id, name, floor, position) +- Timestamp-based conflict resolution for sync + +### Changed + +- Device positions now use peer's current position (live lookup) +- Popup shows "Source: " for remotely-synced devices + +--- + +## [0.4.0] - 2026-02-01 + +### Added + +- **Home Assistant Integration** - Webhook-based presence tracking + - Scan results webhook (`rf_mapper_scan`) + - New device alerts webhook (`rf_mapper_new_device`) + - Device departure webhook (`rf_mapper_device_gone`) + - Configurable timeout for departure detection +- Scanner identity (id, name, floor) in webhooks +- Absence checker background thread + +--- + ## [0.3.0] - 2026-02-01 ### Added diff --git a/PROJECT.md b/PROJECT.md index 9f6eec8..9fb86a3 100644 --- a/PROJECT.md +++ b/PROJECT.md @@ -32,6 +32,10 @@ Understanding the RF environment around you is useful for: - **Auto-scan** - Scheduled background scanning - **Data Export** - JSON scan history with timestamps - **Home Assistant Integration** - Webhook-based presence tracking, new device alerts, departure notifications +- **Multi-Scanner Peer Sync** - Multiple scanner instances share device metadata automatically + - Bidirectional sync with timestamp-based conflict resolution + - Source scanner tracking (devices positioned relative to detecting scanner) + - Peer scanner markers on 3D map ## Architecture @@ -74,6 +78,15 @@ Understanding the RF environment around you is useful for: │ │ Webhook │ │ Webhook │ │ Webhook │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────┘ + +┌─────────────────────────────────────────────────────────────┐ +│ Peer Scanner Sync │ +│ ┌──────────────┐ ┌──────────────┐ │ +│ │ Scanner A │◄── sync ──►│ Scanner B │ │ +│ │ (rpios) │ │ (grokbox) │ │ +│ └──────────────┘ └──────────────┘ │ +│ Shared: floors, labels, favorites, notes │ +└─────────────────────────────────────────────────────────────┘ ``` ## Dependencies @@ -131,9 +144,13 @@ gps: longitude: 4.3978 scanner: + id: rpios + name: "RPi OS Scanner" wifi_interface: wlan0 bt_scan_timeout: 10 path_loss_exponent: 2.5 + sync_interval_seconds: 30 + accept_registrations: true building: enabled: true diff --git a/ROADMAP.md b/ROADMAP.md index 4346aef..cbaed75 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,6 +1,6 @@ # RF Mapper Roadmap -## Current Version: v0.3.0-dev +## Current Version: v1.0.0 --- @@ -30,7 +30,7 @@ --- -## v0.3.0 - 3D Visualization (IN PROGRESS) +## v0.3.0 - 3D Visualization (COMPLETED) - [x] MapLibre GL JS integration - [x] 3D building extrusion @@ -45,7 +45,21 @@ - [x] Position smoothing/averaging (statistical, 5-sample + stddev) - [x] Floor persistence in SQLite database - [x] Popup persistence during live updates -- [ ] Device trails/history visualization +- [x] Device trails/history visualization + +--- + +## v1.0.0 - Multi-Scanner Peer Sync (COMPLETED) + +- [x] Scanner identity configuration (id, name, floor, position) +- [x] Peer registration API (`/api/peers/register`) +- [x] Bidirectional device sync (`/api/sync/devices`) +- [x] Timestamp-based conflict resolution +- [x] Source scanner tracking for synced devices +- [x] Device positions relative to detecting scanner +- [x] Peer scanner markers on 3D map +- [x] Background sync thread with configurable interval +- [x] Automatic mutual registration between peers --- @@ -95,7 +109,7 @@ --- -## v1.0.0 - Production Ready +## v1.1.0 - Production Hardening - [ ] Comprehensive test suite - [ ] Performance optimization @@ -110,7 +124,7 @@ ## Future Ideas (v2.0+) -- [ ] Multiple scanner nodes (distributed scanning) +- [x] Multiple scanner nodes (distributed scanning) - Done in v1.0.0 - [ ] Mesh network visualization - [ ] Spectrum analyzer integration - [ ] RTL-SDR support for wider RF @@ -128,4 +142,6 @@ |---------|------|------------| | v0.1.0 | 2026-01 | Initial CLI scanner | | v0.2.0 | 2026-01 | Web dashboard | -| v0.3.0 | TBD | 3D visualization | +| v0.3.0 | 2026-02 | 3D visualization, floor positioning | +| v0.4.0 | 2026-02 | Home Assistant integration | +| v1.0.0 | 2026-02 | Multi-scanner peer sync | diff --git a/TASKS.md b/TASKS.md index 58ea4bd..0cab806 100644 --- a/TASKS.md +++ b/TASKS.md @@ -1,7 +1,8 @@ # RF Mapper - Active Tasks -**Sprint:** v0.3.0 - 3D Visualization +**Sprint:** v1.1.0 - Production Hardening **Updated:** 2026-02-01 +**Current Version:** v1.0.0 --- @@ -43,6 +44,11 @@ | [x] | Document API endpoints | docs/API.md | | [x] | Create CHEATSHEET.md | Quick reference guide | | [x] | Home Assistant webhook integration | Scan results, new device, departure alerts | +| [x] | Multi-scanner peer sync | Bidirectional sync between scanner instances | +| [x] | Source scanner tracking | Synced devices positioned relative to source | +| [x] | Peer scanner markers | Show peer scanners on 3D map | +| [ ] | Unit test coverage | pytest for core modules | +| [ ] | Docker container | Containerized deployment | --- @@ -92,6 +98,12 @@ | Device trails for moving devices | 2026-02-01 | | Manual position override (drag-drop) | 2026-02-01 | | Home Assistant webhook integration | 2026-02-01 | +| Multi-scanner peer sync | 2026-02-01 | +| Peer registration API | 2026-02-01 | +| Bidirectional device sync | 2026-02-01 | +| Source scanner tracking | 2026-02-01 | +| Peer scanner markers on 3D map | 2026-02-01 | +| v1.0.0 release | 2026-02-01 | --- @@ -118,3 +130,8 @@ - Floor assignments persist in database across page reloads - Popups stay open during live tracking updates - Manual position override: drag floor-assigned device markers to set custom position +- **Peer Sync**: Multiple scanner instances can share device metadata + - Devices synced from peers retain source scanner info + - Positions calculated relative to detecting scanner (not local scanner) + - Peer scanners shown on 3D map as cyan markers + - Background sync every 30 seconds (configurable) diff --git a/TODO.md b/TODO.md index 5d7c6e5..e2315b5 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,7 @@ # RF Mapper - TODO / Backlog **Last Updated:** 2026-02-01 +**Current Version:** v1.0.0 --- @@ -24,6 +25,23 @@ --- +## Multi-Scanner / Peer Sync + +- [x] Scanner identity configuration +- [x] Peer registration API +- [x] Bidirectional device sync +- [x] Timestamp-based conflict resolution +- [x] Source scanner tracking for synced devices +- [x] Peer scanner markers on map +- [x] Background sync thread +- [ ] WebSocket real-time sync (instead of polling) +- [ ] Automatic peer discovery via mDNS/Bonjour +- [ ] Sync RSSI history for trilateration +- [ ] Web UI for peer management +- [ ] Sync conflict resolution UI + +--- + ## Scanning - [ ] Support multiple WiFi interfaces @@ -222,6 +240,10 @@ - [x] Popup persistence during live updates - [x] Manual position override (drag-drop for floor-assigned devices) - [x] Home Assistant webhook integration (scan, new device, departure) +- [x] Multi-scanner peer sync (v1.0.0) +- [x] Bidirectional device metadata sync +- [x] Source scanner tracking for synced devices +- [x] Peer scanner markers on 3D map ---