github Yeraze/meshmonitor v4.0.0-alpha.2

pre-release18 hours ago

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/status response 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

  • MeshtasticManager now owns a VirtualNodeServer per 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 VirtualNodeConfig type for reuse (5f3c2dc)
  • Phase 7 design spec and implementation plan (c3f71b7, 25cac7e)

🐛 Multi-source scoping fixes

  • /api/poll now scopes nodes by the provided sourceId so two sources with overlapping meshes no longer bleed into each other (972a5a8)
  • /sources/:id/nodes is now strictly scoped by source (5be4444)
  • nodes default sourceId and 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.yml plus test:db:up / test:db:down / test:multidb npm scripts for running the full suite against Postgres and MySQL locally with tmpfs-backed volumes (c4b0809)
  • Un-skipped Toast / ToastContainer test suites (d2f9dd5)
  • Un-skipped AutoPingSection suite (+9 tests); AutoAcknowledgeSection / AutoAnnounceSection debt documented in-file for later rewrite (e47a511)
  • Un-skipped accessLogger custom-path test and fixed vi.clearAllMocksvi.resetAllMocks isolation bug; removed a no-op TelemetryGraphs loading-state test (a7a8c2a)
  • Virtual Node CLI system test rewritten for per-source API (2b9ce58)
  • api-exercise validator updated for per-source /api/virtual-node/status shape (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_IP from docker-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.

Don't miss a new meshmonitor release

NewReleases is sending notifications on new releases.