* fix: migrate frontend dependencies for #61
* fix(frontend): maplibre 6 migration — react-is peer dep, worker resolution, e2e timing
- Add react-is ^19.2.8 as a direct dependency: recharts 3 declares it as
a peer dep (recharts 2 bundled it), so vite's dep optimizer 500'd on
'Failed to resolve import "react-is"' and the whole dashboard failed
to mount (error boundary).
- Exclude maplibre-gl from vite optimizeDeps: v6 loads its worker via
new URL(..., import.meta.url); pre-bundling rewrote that to
node_modules/.vite/deps/maplibre-gl-worker.mjs (404) killing the
worker and all custom raster protocols (hopreach-rf tiles never
fetched) in dev.
- Harden two dashboard e2e assertions from the default 5s to 15s:
maplibre 6's larger ESM bundle makes initial map mount slower under
4-worker parallel CI load; the app behavior is unchanged (verified
vs main's pass).
Verified locally: 84/84 unit tests, tsc + vite build, full e2e
(public-desktop + dashboard-desktop + dashboard-mobile) 27 passed.
---------
Co-authored-by: gadgethd <111318106+gadgethd@users.noreply.github.com>
Co-authored-by: hermes-gadget <hermes-gadget@users.noreply.github.com>
* Fix map node freshness consistency
* Harden output, ingest, caches, and WebSocket limits
* Enforce public visibility across derived data
* Harden proxy and operator deployment boundary
* Make owner grants authoritative and reconcile ACLs safely
* Bound path, spam, and statistics analysis
* Make link and coverage jobs crash-safe
* Implement strategic security remediation
* Fix production cutover configuration
* Fix disabled viewshed worker health signal
* Serve stale stats during background refresh
* Retain stale stats through refresh windows
* Bound analytics work to protect ingestion
* Prioritize summary warmup over chart scans
* Throttle path history rebuilds
* Bound path history result memory
* Stream path history aggregation
* Give bounded path rebuild one CPU
* Serve stale charts during bounded refresh
* Prioritize startup stats before chart scans
* Bound path history segment cardinality
* Pin path rebuild context to privacy generation
* Self-host original frontend fonts
* Allow bounded path rebuild to complete
* Improve live map UI and low-latency group feed
- Dock node details on the right with selection highlight and collapsible layers
- Add node legend, 24h activity sparkline, copy-link, and layout/overlap fixes
- Keep all repeaters visible during Live Path focus
- Send GroupText feed packets immediately over WebSocket (no batch delay)
- Cache expensive stats/observer activity more aggressively to protect ingest
- Remove stale local planning/audit markdown from the tree
* fix(ci): supply OPERATOR_SITE_TOKEN for compose validation
Workers/Compose CI failed because docker-compose requires
OPERATOR_SITE_TOKEN. Add CI placeholders for that and MQTT_PASSWORD.
Consolidates the stacked backend, privacy, network-intelligence, frontend, operations, mobile, and owner-cache changes after resolving main conflicts and passing the full CI suite.