Skip to content

Yeraze/meshmonitor

v4.11.3 Breaking

This release includes breaking changes for platform teams planning a safe upgrade.

Published 1mo Monitoring & Metrics
βœ“ No known CVEs patched
Read the diff β†’ Tool health β†’ What is this tool? β†’

✓ No known CVEs patched in this version

Topics

meshcore meshtastic mqtt

Summary

AI summary

Updates Issues Resolved, Bug Fixes, and πŸš€ MeshMonitor v4.11.3 across a mixed release.

Full changelog

MeshMonitor v4.11.3

This release adds a Dead Drop / Mailbox auto-responder β€” asynchronous "mesh voicemail" where a node can leave a message for another node that need not be online, retrieved later with inbox commands β€” contributed by new contributor @TheWISPRer. It also brings MeshCore node favoriting (pin any MeshCore node to the top of the list, stored server-side), FEM LNA Mode LoRa configuration surfaced on both the Device Configuration and Remote Admin panels for amplified hardware, and the MeshCore CLI bundled into the Docker image alongside the Meshtastic CLI. On the fixes side, a PostgreSQL/MySQL crash in the MeshCore neighbor query is resolved by widening the neighbor_info timestamp columns to BIGINT (they overflowed signed int32 with millisecond-epoch values), and a proto3 boolean-elision bug that silently re-enabled uplinkEnabled/downlinkEnabled after a container restart is fixed. Position history now captures and displays SNR for directly-heard (0-hop) nodes, the intermittently-blank MeshCore auto-ack {SNR}/{ROUTE} tokens are corrected, mesh-request endpoints return a meaningful 503 (not a generic 500) when the node is disconnected, and the macOS x64 desktop build no longer ships an arm64 re2.node that crashed on Intel Macs. Upgrades are automatic β€” three idempotent migrations (094–096) run on boot.

Features

  • Dead Drop / Mailbox auto-responder β€” async "mesh voicemail" (#3538, @TheWISPRer) β€” a fifth auto-responder type. DM msg <name> <text> to leave a message; retrieve with inbox, inbox play [name], inbox delete <id>, inbox clear. Per-source, configured entirely through the Auto Responder UI, messages marked played only on delivery-success, expired rows purged by the maintenance sweep.
  • MeshCore node favoriting β€” pin to top of list (#3595) β€” favorite any MeshCore node (Companion, Repeater, Room Server, …); stored server-side only (firmware has no native favorite concept), consistent with Meshtastic favorites.
  • FEM LNA Mode LoRa configuration (#3600) β€” surfaces Config.LoRaConfig.fem_lna_mode (Disabled / Enabled / Not Present, firmware β‰₯ v2.7.20) on both the Device Configuration and Remote Admin LoRa panels.
  • MeshCore CLI bundled in the Docker image (#3591) β€” ships meshcore-cli / meshcli alongside the Meshtastic Python CLI for a complete in-container toolkit.

Bug Fixes

  • MeshCore neighbor query crashed on PostgreSQL/MySQL (#3602) β€” meshcore_neighbor_info.timestamp / .createdAt were 32-bit INTEGER/INT but store millisecond-epoch values that overflow int32; widened to BIGINT (migration 096).
  • downlinkEnabled/uplinkEnabled: false reverted to true after restart (#3598) β€” proto3 elides boolean false, and a ?? true fallback re-inflated user-disabled channel flags on device reconnect; both now default to false.
  • Position history dropped SNR for directly-heard (0-hop) nodes (#3593) β€” SNR is now captured per-fix and shown in the tooltip; the same 0 dB-drop guard was fixed on the central snr_local telemetry path.
  • MeshCore auto-ack {SNR} / {ROUTE} tokens intermittently blank (#3592) β€” buffered SNR/route data is now correlated to the matching packet (freshness + pathLen, consumed once) instead of leaking across messages.
  • macOS x64 (Intel) desktop crashed on launch (#3604) β€” the x64 DMG shipped an arm64 re2.node (ERR_DLOPEN_FAILED); the build now rebuilds re2 from source as x86_64 and backfills the missing CI arch flags.
  • Mesh-request endpoints return 503 (not 500) when disconnected (#3597) β€” /api/traceroute, /api/position/request, /api/nodeinfo/request, /api/neighborinfo/request, /api/telemetry/request now return a meaningful 503 with the v1-API error shape.

Internationalization

  • Translations update from Hosted Weblate (#3579, @weblate)

Issues Resolved

  • #3587 β€” Add MeshCore CLI Python application to Docker image
  • #3588 β€” MeshCore node favoriting (pin to top of node list)
  • #3589 β€” {SNR}/{ROUTE} tokens intermittently missing in MeshCore auto-ack
  • #3590 β€” Position history: SNR not captured when node heard directly (0 hops)
  • #3594 β€” downlinkEnabled: false reverts to true after container restart
  • #3596 β€” Error on Traceroute when node not connected
  • #3599 β€” Support FEM LNA Mode configuration (LoRa)
  • #3603 β€” macOS x64 DMG bundles re2.node as arm64 instead of x86_64

New Contributors

  • @TheWISPRer made their first contribution in #3538 β€” the Dead Drop / Mailbox feature. Thank you! πŸŽ‰

Upgrade Notes

No breaking changes. Three idempotent migrations (094 MeshCore favorites, 095 Dead Drop store, 096 neighbor-timestamp BIGINT) run automatically on first boot across SQLite / PostgreSQL / MySQL.

Full Changelog: https://github.com/Yeraze/meshmonitor/compare/v4.11.2...v4.11.3

πŸš€ MeshMonitor v4.11.3

πŸ“¦ Installation

Docker (recommended):

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

πŸ§ͺ 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.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Yeraze/meshmonitor

Get notified when new releases ship.

Sign up free

About Yeraze/meshmonitor

All releases β†’

Related context

Earlier breaking changes

  • v4.13.0 Source‑scoped API endpoints now require an explicit `sourceId` parameter.
  • v4.13.0 Auto-Upgrade is retired; remove upgrade sidecar and related config.
  • v4.7.2 Route `destination` field now rejects non‑8‑hex nodeId or 64‑hex publicKey, returning HTTPβ€―400.

Beta — feedback welcome: [email protected]