MeshMonitor v4.0.0-beta.1
First beta for the v4.0 release. Major focus on per-source permissions, multi-source isolation, and bug fixes.
New Features
- Per-source permissions — All permissions are now scoped per-source. Users page moved to main dashboard with tooltips, descriptive labels, and per-source channel permission grants. (#2647, #2639)
- Unified messages view — Cross-source message browsing with per-source isolation. (#2632)
- Packet monitor source filtering — Filter raw packets by source in multi-source setups. (#2643)
- PKI encryption for web UI DMs — Messages sent from the web UI are now properly PKI-encrypted. (#2640)
- Global settings page — Accessible from the dashboard sidebar. (#2625)
- Collapsible sidebar — Dashboard sidebar collapses on mobile viewports. (#2627)
Bug Fixes
- Push notification subscribe error — Fixed
ON CONFLICTmismatch when enabling push notifications. (#2648) - Auto-delete by distance broken — Delete cycle was reading global settings instead of per-source settings. (#2649)
- Duplicate auto-ack/auto-responder DMs — Prevented duplicate DMs when multiple active channels are enabled. (#2644, fixes #2642)
- Ground speed unit conversion — Removed flawed heuristic that misinterpreted already-correct values. (#2641, fixes #2636)
- Telemetry dedup — DB-level unique constraint backstop prevents duplicate telemetry rows from multi-path mesh routing. (#2635, fixes #2629)
- SQLite telemetry
source_idcolumn error — Converted raw SQL to Drizzle sync helpers to match schema column naming. (#2634, fixes #2631) - Unified routes hardening — Migration 031 verification and unified route stability fixes. (#2633)
- Unified telemetry — Fixed ms timestamps, added labels, search/sort/source filter. (#2628)
- Seed-only channel writes — Device NodeDB sync no longer writes to seed-only channels. (#2626)
Resolved Issues
- #2642 — Auto Acknowledge fires duplicate DMs per packet
- #2638 — Messages sent from WebUI are not encrypted
- #2636 — Speed is inaccurate when position broadcast is spotty
- #2631 — Error fetching telemetry: no such column: source_id
- #2629 — Duplicate telemetry packets logged with new timestamps
- #2609 — Stale connection detector causes rapid disconnect/reconnect cycling
Dependencies
- Bumped
lewagon/wait-on-check-actionfrom 1.6.0 to 1.6.1 (#2651)
Full Changelog: v4.0.0-alpha.3...v4.0.0-beta.1
🚀 MeshMonitor v4.0.0-beta.1
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:4.0.0-beta.1🧪 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.