MeshMonitor 4.0.0-alpha.2
Second alpha of the multi-source architecture. This release completes Phase 7 — Per-Source Virtual Node and tightens multi-source scoping in the polling and nodes APIs.
⚠️ Still pre-release. 4.0 is an active development branch. Expect breaking changes between alphas. Do not run on production meshes.
⚠️ Breaking change — Virtual Node is now per-source
The global Virtual Node singleton and its environment variables are removed. Virtual Node configuration now lives on each source and is managed through the source add/edit UI.
VIRTUAL_NODE_*env vars are no longer read- VN config is part of source configuration and hot-swappable (no restart required)
- The
/api/virtual-node/statusresponse shape now includes per-source data
Anyone using the global VN env vars must reconfigure VN through the new per-source form after upgrading. Migration notes are in docs/virtual-node/.
✨ Phase 7: Per-Source Virtual Node
MeshtasticManagernow owns aVirtualNodeServerper source, with per-source broadcast via the manager (3a3a61c8, 38dab0a)- Validate per-source VN config in source CRUD (1fbd67f)
- Hot-swap VN config without restarting the source (22ad06b)
- Add per-source VN form to the source add/edit UI (7fa9417)
- Remove legacy global singleton and env vars (7070f0b)
- Export
VirtualNodeConfigtype for reuse (5f3c2dc) - Phase 7 design spec and implementation plan (c3f71b7, 25cac7e)
🐛 Multi-source scoping fixes
/api/pollnow scopes nodes by the providedsourceIdso two sources with overlapping meshes no longer bleed into each other (972a5a8)/sources/:id/nodesis now strictly scoped by source (5be4444)nodesdefaultsourceIdand test schemas aligned with the composite PK from migration 029 (056f881)- Migration 029 now auto-creates a default source for v3 → v4 upgrades, so legacy installs migrate cleanly (8f9b2cf)
🧪 Tests & infrastructure
- New
docker-compose.test.ymlplustest:db:up/test:db:down/test:multidbnpm scripts for running the full suite against Postgres and MySQL locally with tmpfs-backed volumes (c4b0809) - Un-skipped
Toast/ToastContainertest suites (d2f9dd5) - Un-skipped
AutoPingSectionsuite (+9 tests);AutoAcknowledgeSection/AutoAnnounceSectiondebt documented in-file for later rewrite (e47a511) - Un-skipped
accessLoggercustom-path test and fixedvi.clearAllMocks→vi.resetAllMocksisolation bug; removed a no-opTelemetryGraphsloading-state test (a7a8c2a) - Virtual Node CLI system test rewritten for per-source API (2b9ce58)
- api-exercise validator updated for per-source
/api/virtual-node/statusshape (9cfbc9a)
Suite status at release: 4502 passed · 108 skipped · 21 todo · 0 failed.
📚 Docs
- Phase 7 per-source VN docs and migration notes (49206e3, dfc007d)
- Drop
MESHTASTIC_NODE_IPfromdocker-simple.yml— single-source installs now use the in-app default source instead of env vars (fd17a4a)
Full changelog
`v4.0.0-alpha.1...v4.0.0-alpha.2`: v4.0.0-alpha.1...v4.0.0-alpha.2
🚀 MeshMonitor v4.0.0-alpha.2
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:4.0.0-alpha.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.