Skip to content

Yeraze/meshmonitor

v4.12.4 Feature

This release adds 3 notable features for engineering teams evaluating rollout.

Published 23d 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 πŸš€ MeshMonitor v4.12.4, Dashboard, and recommended across a mixed release.

Full changelog

Added

  • MeshCore Virtual Node: configure the physical node from a companion app β€” Config/admin commands sent from a companion app connected to a MeshCore Virtual Node are now forwarded to the real node (gated on the source's Allow admin commands setting), instead of being silently dropped with an unhandled frame: code=142. Covers node rename, radio params, TX power, advertised position, channel setup, and the "other params" bundle (telemetry-visibility modes, advert location policy, manual-add-contacts). When the flag is off, the app now receives an explicit rejection rather than a hang. Also adds the previously-missing Allow admin commands checkbox to the MeshCore Edit Source dialog (it was absent and hardcoded off, so the setting could never be enabled from the web UI). (#3904, #3905, #3906, #3907, #3910)
  • Map: fade node markers by age instead of a hard cutoff β€” On both the Dashboard map and Map Analysis, node markers now fade smoothly toward transparent as they age instead of popping in/out at the max-age threshold (Dashboard) or ignoring the time slider entirely (Map Analysis). Favorites stay fully opaque. (#3886, #3903)
  • MeshCore: node-type filter on the Node Details contact list β€” A compact "Filter by node type" dropdown next to the search/sort controls lets users with many repeaters/sensors narrow the list to just their companions (or any node type). (#3890, #3897)
  • MeshCore: explicit "Unscoped" button when composing a channel message β€” The channel "Send scope" control gains a discoverable one-click Unscoped option to send a channel message with no region scope. (#3888, #3898)
  • MeshCore: unread red-dot indicators on Channels + Node Details β€” The MeshCore sub-toolbar now shows the unread red-dot on its Channels and Node Details icons (matching Meshtastic), and gains unread tracking for direct messages, which it previously lacked entirely. (#3891, #3895)
  • Automation: consolidated token reference block + MeshCore Auto-Responder token parity β€” Each source's expansion tokens are consolidated into a single grouped reference block near the top of the Automation page (instead of drifting per-field legends), and MeshCore Auto-Responder can now expand reply-context tokens like {HOPS}/{ROUTE} that it previously couldn't. (#3892, #3894)

Fixed

  • MeshCore: local companion node showed blank battery β€” getAllNodes() pushed the live in-memory get_self_info node (which has no battery field) over the DB-persisted row instead of merging onto it, so the Node Info panel and dashboard saw the companion's own batteryMv/uptimeSecs as blank even though the telemetry poller was persisting them. The persisted row is now merged as a base, and the poller stamps isLocalNode: true so the flag reflects reality. Adds low-battery diagnostics. (#3884, #3896)
  • MeshCore: "Notify on Low Battery" never fired for Apprise-only / companion setups β€” Closes two concrete gaps found by tracing the low-battery scan-and-deliver pipeline end-to-end, including making companion battery persistence observable and covering the Apprise-only delivery path. (#3884, #3899)
  • Auto-delete-by-distance was not truly per-source β€” Only meshtastic_tcp sources ran a per-source scheduler; mqtt_broker, mqtt_bridge, and meshcore fell through to a global singleton that scanned nodes across all sources with the global threshold/home coordinate. Auto-delete-by-distance is now genuinely per-source for every source type. (#3901, #3902)
  • MeshCore Auto-Acknowledge: unresolvable trigger scope replied with the channel default instead of unscoped β€” When a triggering message's scope couldn't be recovered at all (raw OTA bytes not correlated), "trigger" Reply Scope mode fell back to the channel default, so a genuinely-unscoped message from a peer repeater got a scoped reply back that the peer wouldn't forward. An unresolvable scope is now treated the same as a confirmed-unscoped trigger (reply unscoped); the same fix is mirrored in the Automation Engine's "match the triggering message's scope" mode. (#3887, #3889)

πŸš€ MeshMonitor v4.12.4

πŸ“¦ Installation

Docker (recommended):

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

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