This release adds 3 notable features for engineering teams evaluating rollout.
Published 23d
Monitoring & Metrics
β No known CVEs patched
✓ No known CVEs patched in this version
Topics
meshcore
meshtastic
mqtt
Summary
AI summaryUpdates π 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-memoryget_self_infonode (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 ownbatteryMv/uptimeSecsas blank even though the telemetry poller was persisting them. The persisted row is now merged as a base, and the poller stampsisLocalNode: trueso 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
About Yeraze/meshmonitor
All releases βRelated context
Related tools
Beta — feedback welcome: [email protected]