Repository navigation
What's New
Full 3D Agent Office dashboard achieving feature parity with the reference implementation.
Dashboard Features
- 10 office zones with zone-specific furniture (server racks, conference table, whiteboard, bookshelves, tool benches, barrier gate, alarm bell, mail stations, break room, war room screens)
- 56-waypoint A* pathfinding with zone entry points and path interruption handling
- 6-state avatar FSM (idle, walking, typing, reading, chatting, waiting) with smooth blending
- Real-time day/night cycle with Sky shader, Stars, light/fog lerping
- Weather system with Open-Meteo live data, rain/snow particles, thunderstorm flash
- WASD camera controls coexisting with OrbitControls
- Post-processing with Bloom, Outline, ACES tone mapping, PerformanceMonitor auto-disable
- Dashboard chrome — sidebar, header with agent count/relay status, session selector
- 10 rich zone-specific panels (server room health, agent roster, tool usage, idle agents, recordings, security, etc.)
- Agent detail panel with Overview/Messages/Events/Tools tabs
- Session recording (event sourcing to JSONL) and timeline replay with scrubber
- Bidirectional WebSocket command/ack protocol for agent control plane
- Domain-sliced architecture with Zustand composition (7 slices)
Security Hardening
- WebSocket relay origin validation and command message validation/re-serialization
- Per-client WebSocket rate limiting (100 msgs/min)
- Cortex API route disabled in production
- CORS headers on relay HTTP endpoints
- Weather API fetch timeout + response schema validation
- Geolocation rounded to ~1km precision for privacy
- Relay log output sanitization
Performance Fixes
- Eliminated per-frame Color allocations in DayNightCycle
- Agent position Map updates use mutate-in-place with version counter
- GPU resource disposal on unmount (textures, geometries)
- Weather particles conditionally rendered only when active
- SessionRecorder notifications debounced
Architecture Improvements
- OfficeScene decomposed into reusable hooks (useHoverHighlight, useSpeechBubbles)
- Zustand slice types reference full OfficeStoreState for cross-slice safety
- UI store shim properly typed (no unsafe casts)
- Shared composed-store type avoids circular dependencies
Test Results
- 636/636 tests passing
- All CI checks green (test, label, scan, shellcheck)
Full Changelog: v0.9.3...v0.10.0