github Yeraze/meshmonitor v4.6.0

5 hours ago

MeshMonitor v4.6.0

Summary

MeshMonitor 4.6 introduces the embedded MQTT broker — a built-in MQTT server that bridges packets bidirectionally between Meshtastic sources, with optional geographic bounding-box filtering for incoming MQTT traffic. The bridge gains an interactive map editor for drawing the bbox visually and a smart initial-bbox heuristic that seeds the filter from your already-detected node positions. The MeshCore stack closes several gaps: channel and DM messages now persist to the database (so history survives restarts), the TCP-transport default port is fixed, and the channels view picks up a CRUD UI for create/edit/delete. The Meshtastic neighbor-info display is fixed for multi-source deployments — the frontend now correctly scopes the fetch to the active source, and the backend defensively refreshes lastHeard on MyNodeInfo and configComplete so the freshness filter doesn't drop entries from the local node mid-session. MeshCore radio parameters are no longer corrupted on save: the native backend now correctly scales between UI MHz/kHz and the wire-format kHz/Hz integers the meshcore.js library expects. Desktop bundle improvements: fresh installs no longer auto-create a phantom Meshtastic source against the old 192.168.1.100 placeholder when only MeshCore companions are configured, and MeshCore connect errors now surface a real diagnostic instead of undefined. The auto-upgrade watchdog health-check timeout grows from 120s to 600s (configurable via env var) so larger DBs on ARM-class hardware don't flap during boot. The API gains a server-side fix for duplicate packets reported by multi-source consumers. CI now fails fast on the first failing system test, and a MESHTASTIC_NODE_PORT synonym is now honoured on fresh installs alongside MESHTASTIC_TCP_PORT.

Features

  • Embedded MQTT broker + bidirectional bridges#3053
  • MQTT bridge: mqttClientProxyMessage to the embedded broker#3054 (follow-up to #3003)
  • MQTT bridge: interactive map editor for the filter geographic bounding box#3064
  • MQTT bridge: seed bbox from detected node positions on first enable#3066

Bug Fixes

  • Neighbor info missing in UI: scope the frontend fetch to the current source + defensively refresh local-node lastHeard on MyNodeInfo / configComplete#3049 (fixes #3025)
  • MeshCore radio parameters can't be saved: scale between UI MHz/kHz and wire-format kHz/Hz integers in the native backend — #3050 (fixes #3048)
  • API: duplicate packets in /api/packet-logs for multi-source deployments — #3052 (fixes #3051)
  • MeshCore: persist channel + DM messages to the DB; fix TCP-transport default port — #3058 (fixes #3057)
  • Auto-upgrade watchdog: raise health-check timeout to 600s and make it configurable via env var — #3056 (fixes #3055)
  • MESHTASTIC_NODE_PORT env var not respected on fresh installs — #3062 (fixes #3061)
  • Desktop: stop creating a phantom Meshtastic source on MeshCore-only installs; surface a real MeshCore connect error instead of undefined#3065
  • UI: drop the "(USB)" suffix from the MeshCore source-type label — #3043

CI / DevOps

  • System tests: fail-fast on first failing test, drop retry attempt — #3060

Docs

  • Embedded MQTT broker — configurator option, feature documentation, blog post — #3063

Issues Resolved

  • #2600 — [FEAT] More Meshcore support
  • #3025 — [BUG] Meshtastic NeighborInfo: response received but not shown in UI
  • #3048 — [BUG] Meshcore shows wrong radio parameters and can't be updated
  • #3051 — [BUG] API: duplicate packets
  • #3055 — Auto-upgrade watchdog 120s health-check timeout too short for large-DB instances on slow ARM hardware
  • #3057 — [MeshCore] MeshCore, channels and persistence
  • #3061 — [BUG] MESHTASTIC_NODE_PORT not respected

Upgrade Notes

Desktop bundle behaviour change (#3065). Fresh installs that don't set MESHTASTIC_NODE_IP in the environment now create the auto-default Meshtastic source as enabled=0 instead of enabled=1. Users upgrading from 4.5.x desktop builds keep their existing sources as-is, but a fresh install / fresh DB will require explicitly enabling the Meshtastic source via the Sources page. Docker users who set MESHTASTIC_NODE_IP themselves are unaffected.

Embedded MQTT broker (#3053) is opt-in. Existing installs without an MQTT broker source configured see no behaviour change.

Full Changelog

v4.5.2...v4.6.0

🚀 MeshMonitor v4.6.0

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:4.6.0

🧪 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.