github Yeraze/meshmonitor v4.5.1
MeshMonitor v4.5.1 — MeshCore TCP Support

5 hours ago

MeshMonitor v4.5.1 — MeshCore TCP Support

A focused follow-up to v4.5.0 — MeshCore Levels Up, closing the last two big gaps called out in the 4.5 announcement: TCP transport for MeshCore Companions from the UI, and a native JavaScript MeshCore backend that replaces the Python bridge entirely. TCP-attached Companions (esp-link, ser2net, or native TCP firmware) are now added through the same Sources sidebar flow as everything else — no env-var bootstrap, no container restart. The new in-process meshcore.js integration removes the Python sidecar from the container, cutting startup time, memory footprint, and a whole class of cross-process serialization bugs. Two small bugs from 4.5 are also fixed: a MeshCore TCP source that wouldn't appear in the source list and a Meshtastic NeighborInfo link that disappeared when the neighbor row had a NULL lastHeard despite a fresh NI report.

✨ Features

  • #3027MeshCore TCP transport from the UI. The Sources sidebar now offers USB and TCP for MeshCore Companions (default port 4403); works with esp-link, ser2net, or any native TCP-capable MeshCore firmware. Closes #3028.
  • #3029Native JavaScript MeshCore backend. Initial port of the MeshCore protocol layer onto meshcore.js, running in-process inside the Node server.
  • #3031Python bridge and 3.x addon removed. The native JS backend is now the only path; the Python sidecar process, its requirements, and the legacy 3.x firmware addon are gone.

🐛 Bug Fixes

  • #3026NeighborInfo links survive NULL lastHeard. When a neighbor row has no lastHeard but the NeighborInfo report itself is fresh, the link is now kept in the topology view instead of being filtered out. Closes #3025.

📝 Documentation

  • #3032MeshCore TCP transport documentation added to the MeshCore feature page, covering host/port form fields, common deployment patterns (native TCP firmware / ser2net / esp-link), container-networking guidance, and updated USB-vs-TCP troubleshooting.

🧹 Architecture

The MeshCore subsystem is now considerably simpler:

  • One process — the entire MeshCore stack (companion protocol, channel/contact state, telemetry collection) runs inside the Node server. No more Python sidecar to coordinate with, no more cross-process JSON shuttling.
  • Two transports for Companions — USB serial and TCP, both wired through the same per-source manager registry that handles Meshtastic sources. Hot connect/disconnect, source create/update/delete, no container restart for any of it.
  • Repeater path unchanged — Repeater is still USB-only and still uses the direct-serial text CLI path.

⬆️ Upgrade Notes

  • No migrations. Database schema is unchanged from 4.5.0.
  • Python is no longer required. If you maintain a custom image or compose override that mounted Python deps for the MeshCore bridge, you can drop them.
  • MeshCore env-var bootstrap stays removed. The MESHCORE_* env vars that 3.x used were already gone in 4.5.0; configure MeshCore sources from the Sources sidebar.

Issues Resolved

  • #3028 — TCP/WiFi MeshCore source not showing in source list
  • #3025 — Meshtastic NeighborInfo response received but not shown in UI

Full Changelog

v4.5.0...v4.5.1

🚀 MeshMonitor v4.5.1

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:4.5.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.

Don't miss a new meshmonitor release

NewReleases is sending notifications on new releases.