MeshMonitor v4.0.0-beta.2
Second beta of the 4.0 series. This release lands the Phase 0 Store & Forward client, completes the Drizzle ORM remediation (Phases 1–3), adds CodeQL security scanning, and ships a critical telemetry performance fix for PostgreSQL/MySQL deployments.
Features
- Store & Forward Phase 0 — MeshMonitor now decodes and displays S&F packets (PortNum 65) received from firmware-based S&F servers on the mesh. ROUTER_TEXT_DIRECT/BROADCAST replays flow into the chat with a
viaStoreForwardindicator; HEARTBEAT/STATS/HISTORY are decoded and logged. (#2671) - Auto-delete-by-distance toggle — Choose between deleting and ignoring nodes outside the configured radius. (#2677, closes #2676)
- Remote Admin Scanner — distance/hop prioritization — Nearby nodes now scanned first. (#2679, closes #2669)
- CodeQL security scanning — New CI workflow surfaces security issues on every PR. (#2678)
Bug Fixes
- Telemetry performance (PG/MySQL) — Added 4 missing indexes on the telemetry table (single-column nodeId/telemetryType, compound
(nodeId, telemetryType, timestamp DESC)and(nodeNum, timestamp DESC)). Fixes timeouts on deployments with 100k+ telemetry rows. Also rewrote 6 MySQL delete methods to useSELECT COUNT(*)instead ofSELECT id(avoids loading 100k+ IDs into memory). Removed channel-lookup debug log spam. (#2697) - Embed map respects Default Map Center / URL params — No longer falls back to world view. (#2673, closes #2668)
- Disabled channels persist in UI — (#2675, closes #2666)
- Remote Admin Scanner uses configured time format — (#2672, closes #2670)
- Sources UI delete option — (Closes #2682)
Drizzle ORM Remediation (Phases 1–3)
Complete migration from raw SQL to Drizzle repositories across all domains. src/services/database.ts is now raw-SQL-free (enforced by ESLint).
- Phase 1 — Delete legacy models, route to AuthRepository: #2683, #2684, #2685, #2687
- Phase 2 — Extract domain repositories: #2688 (audit), #2689 (neighbors), #2690 (settings), #2691 (channels + packetlog), #2692 (telemetry + traceroutes), #2693 (init/import), #2694 (messages), #2695 (nodes + keyrepair + ignored_nodes)
- Phase 3 — Final 14 sites + ESLint enforcement: #2696
- User map preferences to Drizzle: #2681
Other
Upgrade Notes
- Database schema migrates automatically on first start (migration 036 adds telemetry indexes — idempotent on all backends).
- For deployments with very large telemetry tables (450k+ rows), expect first-start to take longer while the indexes build.
- No configuration changes required.
Full Changelog: v4.0.0-beta.1...v4.0.0-beta.2
🚀 MeshMonitor v4.0.0-beta.2
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:4.0.0-beta.2🧪 Testing
✅ All tests passed
✅ TypeScript checks passed
✅ Docker images built for linux/amd64, linux/arm64, linux/arm/v7
📋 Changes
See commit history for detailed changes.