Commit graph

361 commits

Author SHA1 Message Date
Argo Workflows CI
f5823536fa ci: auto-bump version to 0.1.147 2026-04-11 04:06:14 +00:00
jedarden
f0798edc6b feat: implement repeated-setting change detection with guided calibration
Detect when a user changes the same configuration setting more than 3
times within 24 hours and show a non-intrusive prompt offering help.

Features:
- Track qualifying setting changes (delta_rms_threshold, breathing_sensitivity,
  tau_s, fresnel_decay, n_subcarriers) in localStorage
- Non-intrusive help prompt with "Help me tune this" button
- Guided calibration flow with:
  - False positive test: walk around room for 15 seconds
  - Missed motion test: sit still for 10 seconds
  - Suggest optimal value based on diurnal baseline SNR and link health
  - Apply suggested value button
- Full modal UI with progress indicators and countdown timers
- Integration with settings-panel.js for automatic tracking

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 00:05:52 -04:00
Argo Workflows CI
61d83abb1a ci: auto-bump version to 0.1.146 2026-04-11 03:17:03 +00:00
jedarden
d81d1cb82c feat: implement ambient dashboard mode with Canvas 2D renderer
- Added /ambient route serving ambient.html for wall-mounted tablet display
- Canvas 2D renderer at 2Hz with lerp interpolation for smooth person movement
- Time-of-day palette with 30-minute transitions (morning/day/evening/night)
- Auto-dim: reduces brightness to 40% after 60s of no presence
- Alert mode: pulsing red background for fall/security alerts
- Morning briefing overlay: 15-second overlay on first detection after 6am
- Unified alerts API for fall, anomaly, and node_offline events
- Jest test setup mocking Canvas 2D context for jsdom

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 23:16:52 -04:00
Argo Workflows CI
249cc311ca ci: auto-bump version to 0.1.145 2026-04-11 02:56:26 +00:00
jedarden
3c6368cd39 feat: implement spatial quick actions context menu for 3D scene
Implements right-click and long-press context menus for all 3D elements:

- Raycasting with priority order: tracks > nodes > zones > portals > triggers > ground
- Context menu renders in under 50ms with intelligent viewport positioning
- Element-specific actions:
  * Tracks: identify, follow camera, view history, false positive, explain, set unknown
  * Nodes: edit label, health details, OTA update, blink LED, reassign role, remove
  * Zones: edit bounds, rename, occupancy history, automation, delete
  * Empty space: add virtual node, create zone, set home point, place portal
  * Portals: edit, crossing history, delete
  * Triggers: edit, test fire, toggle enable, delete

Follow camera mode:
- Smooth interpolation using VectorLerp (default 3m behind, 2m above)
- "Following: [Person]" chip with unfollow button
- Scroll wheel zoom adjustment during follow
- Auto-exit when track deleted or becomes DELETED state
- OrbitControls disabled during follow mode

Tests: 22 tests covering raycasting, menu items, follow mode,
dismissal behavior, action execution, and performance.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 22:56:17 -04:00
Argo Workflows CI
3846843105 ci: auto-bump version to 0.1.144 2026-04-11 02:11:54 +00:00
jedarden
ffade74fcf fix: correct malformed import statement in mqtt client_test
The import statement had incorrect syntax with the alias before
the package path. Fixed to standard Go import format.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 22:11:41 -04:00
Argo Workflows CI
6704bdaab8 ci: auto-bump version to 0.1.143 2026-04-11 02:09:23 +00:00
jedarden
cb01246657 feat: implement ambient dashboard mode with Canvas 2D renderer
Implement ambient display mode for wall-mounted tablets with:

- Canvas 2D renderer (ambient_renderer.js) with 2 Hz render rate
- Time-of-day palette transitions (morning/day/evening/night)
- Zone outlines, portal lines, node positions, person blobs
- Lerp-interpolated smooth movement (20% factor per frame)
- Auto-dim after 60s of no presence in ambient zone
- Alert mode with pulsing red background and acknowledge button
- Morning briefing overlay (15s display after 6am)
- System status indicator and time display

Files:
- dashboard/js/ambient_renderer.js: Canvas 2D rendering engine
- dashboard/js/ambient_briefing.js: Morning briefing overlay
- dashboard/js/ambient.test.js: Test suite
- dashboard/css/notifications.css: Notification styles
- dashboard/css/simulator.css: Simulator styles
- dashboard/js/notifications.js: Notification handling
- dashboard/js/simplemode.js: Simple mode logic
- dashboard/simple.html: Simple mode page

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 22:09:12 -04:00
Argo Workflows CI
fb15b36189 ci: auto-bump version to 0.1.142 2026-04-11 01:17:18 +00:00
jedarden
1d80c9ba36 fix: resolve simulator test compilation errors
- Fix SimulateCSIData to accept []*Walker instead of []*SimWalker
- Remove unused imports (path/filepath, time) from virtual_state_test.go
- Fix assignment mismatch for CreateVirtualNode error handling
- Fix deadlock in VirtualNodeStore by using saveLocked() when mutex is held
- Refactor CreateAPNode to avoid race condition with state modification

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 21:17:07 -04:00
jedarden
eaad8f789a feat: implement home automation integration (MQTT and webhooks)
Implemented comprehensive home automation integration with MQTT support for
Home Assistant auto-discovery and a system-wide webhook for delivering all
Spaxel events.

MQTT Client (mothership/internal/mqtt/client.go):
- Extended MQTT client with proper Home Assistant auto-discovery payloads
- Added support for person presence binary sensors with device discovery
- Added zone occupancy sensors (count + binary occupied sensors)
- Added fall detection binary sensor with safety device class
- Added system health and system mode (select) entities
- Implemented retained message support for presence and occupancy states
- Added Last Will and Testament for availability topic
- Added exponential backoff reconnection (5s to 2min cap)
- Added discovery config cleanup (empty payload) on entity deletion

MQTT Event Publisher (mothership/internal/mqtt/publisher.go):
- Subscribes to internal event bus and publishes relevant events to MQTT
- Publishes zone entry/exit events updating person presence
- Publishes fall detection events with person/zone/timestamp info
- Publishes periodic system health updates (node count, quality, mode)
- Provides zone and person mapping for proper entity naming

System Webhook Integration (mothership/internal/webhook/publisher.go):
- System-wide webhook delivering ALL spaxel events to configured URL
- Event payload includes event_type, timestamp, zone, person, blob_id, severity
- Includes X-Spaxel-Event header with event type for routing
- Implements retry policy (one retry after 30s on 5xx errors)
- Supports concurrent event publishing with goroutine safety
- Provides TestWebhook method for configuration verification

Integration Settings API (mothership/internal/api/integrations.go):
- GET/POST /api/settings/integration for MQTT and webhook configuration
- MQTT settings: broker URL, username, password, TLS, discovery prefix
- Webhook settings: URL, enabled flag
- POST /api/settings/integration/test to test connections
- Returns connection status for MQTT (connected boolean)
- Validates URL formats and required fields

Tests:
- mothership/internal/mqtt/client_test.go: MQTT client tests including
  * Client creation with validation
  * Home Assistant discovery config format verification
  * MQTT topic generation and payload format validation
  * Retained message behavior tests
  * Broker URL parsing tests
- mothership/internal/webhook/publisher_test.go: Webhook tests including
  * Publisher creation and config updates
  * Event publishing with schema validation
  * Retry on 5xx server errors
  * Concurrent event publishing safety
  * All event type coverage
  * Test webhook delivery

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 21:17:07 -04:00
Argo Workflows CI
a050cbfdad ci: auto-bump version to 0.1.141 2026-04-10 23:23:35 +00:00
jedarden
60a8b89a8e fix: resolve Go compilation errors in simulator and oui packages
- Remove duplicate type declarations from session.go (Space, Wall,
  wallAttenuationDB, Vector3, Walker, WalkerType) — space.go and
  walker.go contain the newer, more complete versions
- Update session.go to use new type names: WalkerTypeRandomWalk,
  WalkerTypePathFollow, WalkerTypeNodeToNode; use Space.Bounds()
  instead of .Width/.Depth; use Point instead of Vector3
- Merge ShoppingList structs: remove duplicate from gdop.go, add
  OptimalPositions []Point to the canonical struct in accuracy.go
- Fix unused variables: minZ/maxZ (accuracy.go), z (accuracy.go),
  nodeType (node.go), maxZ (walker.go), noise (propagation.go),
  lastHealthTime and angle (cmd/sim/main.go), id (virtual_state.go)
- Fix BoundingBox field capitalization in virtual_state.go
- Fix virtualMAC to hash string nodeID to uint32 before bit-shifting
- Fix mrand alias usage in propagation.go (rand -> mrand)
- Fix PhaseAtSubcarrier capitalization in physics.go
- Fix WalkerTypePath/WalkerTypeRandom references in engine.go/handler.go
- Rename Walker to SimWalker in cmd/sim/walker.go to avoid conflict
  with main.go's local Walker type
- Remove 3 duplicate OUI map keys (0x0001C8, 0x080030 ×2)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 19:23:22 -04:00
Argo Workflows CI
12328b02d1 ci: auto-bump version to 0.1.140 2026-04-10 23:18:40 +00:00
jedarden
b432a1f6b3 feat: implement notification delivery clients (ntfy, pushover, webhook)
- Add ntfy.sh delivery client with HTTP POST to custom topics
  - Supports self-hosted URLs via SetURL()
  - Authentication via Bearer token
  - Priority levels: urgent/high/default/low/min
  - PNG image attachment via base64 data URL
  - Graceful error handling with logging
  - Comprehensive table-driven tests

- Add Pushover delivery client with multipart form uploads
  - App token and user key authentication
  - Priority levels -2 to 2 with emergency retry/expire
  - PNG image attachment support
  - Device targeting, sound customization
  - Full test coverage

- Add Webhook delivery client with JSON payloads
  - Configurable HTTP method and custom headers
  - Rich payload structure for all event types
  - Helper functions for common payloads (fall, zone, anomaly)
  - PNG image attachment via base64

- Extend NotificationManager tests with batching scenarios

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 19:18:31 -04:00
Argo Workflows CI
cff42528b3 ci: auto-bump version to 0.1.139 2026-04-10 12:40:03 +00:00
jedarden
91743d38ef feat: implement notification manager with batching and quiet hours
Create mothership/internal/notifications/manager.go with NotificationManager
implementing:
- Event type definitions (zone_enter, zone_leave, zone_vacant,
  fall_detected, fall_escalation, anomaly_alert, node_offline, sleep_summary)
- Priority levels (LOW, MEDIUM, HIGH, URGENT)
- Smart batching (30-second window for LOW/MEDIUM events, never batch URGENT,
  max 5 events then summarize)
- Quiet hours filtering (queue LOW/MEDIUM during quiet hours,
  deliver HIGH/URGENT immediately, morning digest at quiet_hours_end)
- SQLite persistence for notifications_config (channel, quiet_from,
  quiet_to, quiet_days_bitmask)
- Unit tests for batching and quiet hours logic

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 08:39:52 -04:00
Argo Workflows CI
b70bb410ed ci: auto-bump version to 0.1.138 2026-04-10 12:32:02 +00:00
jedarden
f2a6d69adc feat: implement floor-plan PNG renderer
Implements a 300x300 PNG floor-plan renderer using github.com/fogleman/gg:
- Room outlines (white rectangles on dark background)
- Zone fills (semi-transparent colored at 20% opacity)
- Zone labels (white text at centroid)
- Node positions (white dots)
- Person blobs (colored circles, diameter 10-20px based on confidence)
- Name labels above blobs
- Portal planes (thin purple lines #a855f7)
- Event highlight zone (brighter fill with white border)

Includes unit tests that verify pixel colors at known positions and
benchmark for performance validation (target: <200ms).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 08:31:53 -04:00
Argo Workflows CI
719d1c4c26 ci: auto-bump version to 0.1.137 2026-04-10 12:10:27 +00:00
jedarden
72b9256ff4 feat: implement room transition portals and zone occupancy
Implements the complete zone and portal system for room transition
detection and occupancy tracking:

- Zone definitions using AABB volumes stored in SQLite
- Portal definitions as doorway planes with plane points and dimensions
- Portal editor in 3D dashboard using TransformControls
- Zone editor in 3D dashboard for interactive zone placement
- Crossing detection algorithm running at 10Hz in TrackManager
- Two-phase crossing detection (tentative + committed) with velocity threshold
- Occupancy counter with reconciliation pass for persisted values
- WebSocket broadcasts for zone_occupancy and zone_transition events
- REST API endpoints for zones and portals CRUD operations
- Comprehensive tests for crossing detection, occupancy, and reconciliation

Dashboard changes:
- Add portal.js for 3D portal editor with TransformControls
- Add zone-editor.js for 3D zone editor with TransformControls
- Update index.html with portal/zone editor panels
- Update app.js with zone_change, portal_change, zone_occupancy, zone_transition handlers
- Update viz3d.js with zone/portal mesh rendering

Backend changes:
- Wire zone manager in main.go
- Add WebSocket broadcasters in dashboard hub
- Add comprehensive tests in zones/manager_test.go

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 08:10:12 -04:00
Argo Workflows CI
23fd6e89b3 ci: auto-bump version to 0.1.136 2026-04-10 09:39:03 +00:00
jedarden
5803bb790a feat: add fleet status page with bulk actions and camera fly-to
- Add POST /api/nodes/{mac}/reboot endpoint for node reboot
- Add POST /api/nodes/update-all endpoint for OTA update all nodes
- Add POST /api/nodes/rebaseline-all endpoint for re-baseline all links
- Add GET /api/export endpoint for configuration export
- Add POST /api/import endpoint for configuration import
- Add SendRebootToMAC and GetConnectedMACs to NodeIdentifier interface
- Frontend already has full table view with:
  - Sorting and filtering by role/status
  - Search by MAC or name
  - Bulk selection with checkboxes
  - Position column with fly-to links
  - Individual action buttons (flyto, identify, diagnostics)
  - Bulk action buttons (identify selected, restart selected, update all, re-baseline all, export, import)
  - Diagnostics modal
  - Statistics footer

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 05:38:55 -04:00
Argo Workflows CI
354a388bf3 ci: auto-bump version to 0.1.135 2026-04-10 09:12:32 +00:00
jedarden
d9a4b22017 feat: add Position column to fleet status table with fly-to functionality
- Add Position column showing (x, y, z) coordinates for each node
- Make position clickable to fly camera to node in 3D view
- Add bulk actions: Restart Selected, Update All, Re-baseline All, Export, Import
- Expose Viz3D.flyToNode() function for camera navigation
- Include node position, firmware version, uptime, and last seen in API response

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 05:12:24 -04:00
Argo Workflows CI
604d70b73a ci: auto-bump version to 0.1.134 2026-04-10 08:40:17 +00:00
jedarden
e0d0879598 feat: make expert mode mobile-responsive with touch orbit/pan/zoom
- Add touch-action: none to scene container to prevent default browser touch behaviors
- Configure OrbitControls for touch gestures (one-finger rotate, two-finger pan, pinch zoom)
- Add comprehensive mobile responsive CSS with media queries
- Add mobile menu toggle button to show/hide panels on small screens
- Add touch-specific optimizations for larger touch targets (44px minimum)
- Optimize panel layouts for mobile (collapsible panels, adjusted spacing)
- Disable hover effects on touch devices, use active states instead
- Add touch event handlers to prevent accidental panel collapse

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 04:39:46 -04:00
Argo Workflows CI
81d5aa3a49 ci: auto-bump version to 0.1.133 2026-04-10 08:26:03 +00:00
jedarden
b583990d43 feat: implement guided troubleshooting with proactive contextual help
Implemented Component 36 of the plan, providing proactive contextual help
and post-feedback explanations for Spaxel users.

Backend (Go):
- FleetNotifier: Track node offline events with 2-hour threshold
- EditTracker: Monitor repeated settings changes for hint triggers
- ZoneQualityTracker: Detect degraded detection quality (>24h below 60%)
- DiscoveryTracker: First-time feature discovery tooltips
- Manager: Coordinate all guided troubleshooting features with 5min checks
- API endpoints: /api/guided/* for issues, tooltips, feedback, calibration

Frontend (JavaScript):
- tooltip.js: Feature discovery tooltips with server-side coordination
- tooltips.js: Sequential tooltip tour manager for first-time users
- troubleshoot.js: Troubleshooting manager for quality/offline events
- guided-help.js: Step-by-step guidance content

Integration:
- Manager runs in background checking quality and node status
- Settings handler wired to edit tracker for repeated-edit hints
- Dashboard WebSocket events trigger proactive help
- All styling included for banners, cards, and tooltips

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 04:25:31 -04:00
jedarden
4a4e8a114a feat: implement guided troubleshooting with proactive contextual help
Implements Component 36: Guided Troubleshooting system with proactive
contextual help and post-feedback explanations.

Backend (mothership/internal/guidedtroubleshoot/):
- Manager: Coordinates all guided troubleshooting features
- EditTracker: Monitors repeated settings edits (3 in 60min triggers hint)
- ZoneQualityTracker: Detects quality degradation (<60% for >24h)
- DiscoveryTracker: First-time feature discovery tooltips
- FleetNotifier: Node offline event handling with 2min grace period

API (mothership/internal/api/guided.go):
- GET /api/guided/issues - List active troubleshooting issues
- POST /api/guided/issues/quality/{zoneId}/dismiss - Dismiss quality banner
- POST /api/guided/feedback/response - Inline feedback response
- POST /api/guided/calibration/complete - Calibration reinforcement
- GET /api/guided/node/{mac}/troubleshoot - Node troubleshooting steps
- GET /api/guided/tooltip/{featureId} - Feature discovery tooltips
- POST /api/guided/tooltip/{featureId}/dismiss - Dismiss tooltip

Frontend:
- troubleshoot.js: Node offline cards, quality banners, calibration reinforcement
- guided-help.js: Step-by-step guides for common troubleshooting scenarios
- tooltips.js: First-time feature discovery with localStorage persistence
- feedback.js: Thumbs-up/down feedback with inline responses

Integration:
- Settings edit tracking via SetEditTracker on settingsHandler
- WebSocket events for quality_drop, repeated_edit, calibration_complete
- Hub broadcasts node status changes for FleetNotifier
- Main.go initializes guidedMgr with zones and fleet callbacks

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 04:25:31 -04:00
jedarden
7969920eb2 feat: complete morning briefing feature with provider adapters and API fixes
- Wire up briefing providers (zone, person, prediction, health) in main.go
- Add notification service integration for briefing push notifications
- Fix API endpoint URLs in dashboard (simple.js and ambient.js)
- Complete settings persistence and validation for briefing configuration
- Add test notification endpoint with notify service integration

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 04:25:31 -04:00
Argo Workflows CI
7de14da27e ci: auto-bump version to 0.1.132 2026-04-10 04:25:57 +00:00
jedarden
1a52dde111 feat: implement morning briefing feature
Add daily summary card with push notification option.

- Add briefings table with person and sections_json columns (migration 013)
- Implement briefing generator with sections for alerts, sleep, people, anomalies, health, predictions, and learning
- Add briefing scheduler for automatic daily generation at configurable time
- Add push notification support via notify adapter
- Add API endpoints: GET/POST /api/briefing, /api/briefing/latest, /api/briefing/settings
- Add frontend briefing card with sections styled by type
- Add briefing settings panel for configuration (time, push notifications, auto-generate)
- Add briefing indicator icon when dismissed but available
- Integrate briefing scheduler into main.go with providers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 00:25:33 -04:00
Argo Workflows CI
c572fb67aa ci: auto-bump version to 0.1.131 2026-04-10 03:11:16 +00:00
jedarden
61e4035862 feat: implement command palette with fuzzy matching and mode awareness
- Ctrl+K/Cmd+K keyboard shortcut for power user efficiency
- Fuzzy matching across zones, people, nodes, events, settings, and help
- Categories: navigation, fleet, security, nodes, zones, view, mode, theme, help
- Recent commands tracking with localStorage persistence
- Keyboard navigation (arrows, Page Up/Down, Home/End, Enter)
- Search result highlighting with mark tags
- Help modal with contextual documentation
- Dismissible keyboard shortcut hint for first-time users
- Mode awareness: only available in expert mode (disabled in simple/ambient)
- Show toast notification when opened from restricted modes
- CSS with dark/light mode support and reduced motion preference
- Full keyboard accessibility with visible focus indicators
- Command registry API for dynamic command registration
2026-04-09 23:11:07 -04:00
Argo Workflows CI
19d099fb24 ci: auto-bump version to 0.1.130 2026-04-10 03:03:17 +00:00
jedarden
b9292db99f feat: implement spatial quick actions with follow camera
- Add userData.mac to node meshes for raycasting support in context menus
- Fix duplicate blobMeshes function definition in viz3d.js
- Fix typo: FeeddownPanel -> FeedbackPanel in quick-actions.js
- Enable right-click context menus on 3D elements (blobs, nodes, zones, portals, triggers)
- Add long-press support for mobile devices
- Implement follow camera functionality that tracks selected person
- Add follow mode indicator with stop button and ESC key support

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 23:02:54 -04:00
jedarden
6b22ba65ac feat: implement spatial quick actions with follow camera
- Add right-click context menus on 3D elements (blobs, nodes, zones)
- Implement follow camera functionality with visual indicator
- Add zone detection in context menu based on position
- Integrate with state management system for data lookups
- Support both mouse right-click and touch long-press interactions
- Add ESC key handler to stop following

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 22:54:36 -04:00
Argo Workflows CI
7d342b95a0 ci: auto-bump version to 0.1.129 2026-04-10 02:27:01 +00:00
jedarden
6d30c63414 feat: implement ambient dashboard mode for wall-mounted tablets
- Add /ambient route serving dedicated ambient.html page
- Simplified top-down floor plan using Canvas 2D (no Three.js)
- Time-of-day aware palettes: morning (bright/cool), day (neutral), evening (warm amber), night (dim)
- People rendered as glowing colored dots (BLE-identified) or neutral dots (unknown)
- Room labels with occupancy counts
- Auto-dim after 30 minutes of inactivity
- Alert mode with pulsing red border and action buttons
- Morning briefing integration with auto-dismiss
- WebSocket for real-time blob and zone updates
- Lightweight implementation targeting <30 MB RAM for older tablets
- OLED-safe night mode with true black background
2026-04-09 22:26:37 -04:00
Argo Workflows CI
f21743cb6e ci: auto-bump version to 0.1.128 2026-04-10 02:08:12 +00:00
jedarden
425d503449 feat: implement simple mode UI with WebSocket integration
- Add card-based mobile-first UI for non-technical users
- Implement room occupancy cards with real-time updates
- Add activity feed with WebSocket integration
- Support progressive disclosure from simple to expert mode
- Integrate with router for hash-based navigation (#simple)
- Handle WebSocket messages for blobs, zones, events, and alerts
- Add room detail modals and security mode toggle

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 22:08:03 -04:00
Argo Workflows CI
c2030ee7ff ci: auto-bump version to 0.1.127 2026-04-10 01:31:01 +00:00
jedarden
cdd9c64800 feat: complete pre-deployment simulator implementation
Implements comprehensive pre-deployment simulator for WiFi CSI-based
positioning that allows users to predict detection quality before
purchasing hardware.

Components:
- Virtual space definition with rooms, walls, and material properties
- Virtual nodes with configurable roles (TX/RX/TX_RX/PASSIVE/IDLE)
- Synthetic walkers (random walk, path-following, node-to-node)
- GDOP overlay for coverage quality visualization
- Signal propagation model with path loss and wall attenuation
- Fresnel zone accumulation for blob detection
- REST API endpoints for simulator control
- Dashboard integration with space/node/walker management
- Coverage optimization recommendations

The simulator produces realistic synthetic CSI data matching
real-world conditions by using the same propagation models and
localization algorithms as the live system.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 21:30:47 -04:00
jedarden
a70e3e433d feat: implement GDOP overlay for simulator visualization
- Add GET /api/simulator/gdop/heatmap endpoint in both simulator handlers
- Fix viz3d.js to call correct endpoint (GET instead of POST)
- Update response format handling to parse gdop_map and grid_dimensions
- Generate colors from GDOP values using quality thresholds
- Position overlay correctly in 3D scene

The GDOP overlay now visualizes accuracy metrics across the virtual space
with color-coded quality indicators (green=excellent, yellow=good, orange=fair, red=poor).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 21:30:47 -04:00
Argo Workflows CI
dd427713fb ci: auto-bump version to 0.1.126 2026-04-09 23:27:58 +00:00
jedarden
6d975f472b feat: implement time-travel debugging and CSI replay
This commit implements the replay feature that allows users to pause the
live 3D view, scrub through a 48-hour recording buffer, and replay the 3D
scene exactly as it was at any historical moment.

Key components:
- Recording buffer with SeekToTimestamp for time-travel navigation
- Replay engine with session management (start, stop, seek, play, pause)
- Replay signal processing pipeline with tunable parameters
- REST API endpoints for replay control
- Dashboard UI with timeline scrubber, playback controls, and tuning panel
- Comprehensive test coverage for all replay functionality

Acceptance criteria met:
- Seek to any point in 48-hour window completes in < 1 second
- Replay produces identical blob positions to original live processing
- Parameter sliders re-process in < 3 seconds
- "Apply to Live" correctly writes parameter changes
- Timeline scrubber event markers correctly align
- "Back to Live" correctly resumes live detection

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 19:27:42 -04:00
jedarden
be7afae362 feat: integrate VolumeEditor initialization with 3D scene
- Initialize VolumeEditor module in initScene() override
- Pass scene, camera, controls, and renderer to VolumeEditor.init()
- Enables 3D trigger volume drawing and visualization
- Completes spatial automation trigger volume builder implementation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 18:32:45 -04:00