MeshMonitor v4.14.1-rc1
⚠️ Pre-release. This is a release candidate for 4.14.1. It ships on the
:devDocker tag, not:latest. Run it if you want the fixes early and can tolerate rough edges; report anything you hit.
Summary
This candidate is mostly MeshCore work plus two map-interaction fixes. The headline feature is strict receive-only mode for MeshCore Companion sources — a per-source switch that holds every transmitting command, scheduler and automation while leaving receive, the packet log, the Analyzer Observer and local serial configuration fully working. Because MeshCore firmware has no radio-level transmit switch, this is enforced in software; link-layer acknowledgements and any advert schedule configured outside MeshMonitor are unaffected, and the UI says so plainly. The Analyzer Observer gained battery, uptime and noise-floor reporting, and it now hot-swaps its publisher when you import a signing key instead of demanding a source disable/re-enable cycle. On the permissions side, MeshCore contact positions now honor canViewOnMap, matching how Meshtastic nodes have always behaved — a migration backfills the flag so no existing user loses map access on upgrade. Two map fixes: clicking a marker now zooms in first only when the marker is genuinely crowded (isolated markers open their popup immediately at any zoom), and the threshold that governs it is configurable rather than hardcoded at z13. The zoom-to-fit button also stopped wearing a crosshair icon, which everyone reasonably read as "center on my GPS location."
Features
- MeshCore strict receive-only mode — per-source enforcement (#4550), UI (#4552), and Virtual Node gating plus docs (#4555). Closes #4547.
- Analyzer Observer publishes battery, uptime and noise floor in its status payload (#4557). Closes #4556.
Bug Fixes
- MeshCore map positions now require
canViewOnMapinstead of onlynodes:read, so a read-only user can see the contact list without learning where those nodes are (#4560). Closes #4559. - Marker clicks gate on density, not zoom alone — an isolated marker opens its popup on the first click at any zoom, and the crowding threshold is now a setting (#4563). Closes #4551.
- Zoom-to-fit no longer uses the locate-me crosshair icon (#4564). Closes #4562.
- MeshCore contact Last Heard updates on incoming direct messages (#4554). Closes #4553.
- Analyzer Observer hot-swaps its publisher on a signing-key change — no more disable/re-enable dance after importing a key (#4544). Closes #4543.
- DeviceMetadata arriving before MyNodeInfo is buffered rather than dropped (#4548).
- Remote admin stops implying it knows a remote node's favorite/ignored state — the admin protocol has no readback for those flags, so the UI no longer pretends otherwise (#4542). Closes #4511.
Documentation
- Documented the new Map Click Zoom Gate setting and the MeshCore
canViewOnMapchange, including the upgrade backfill (#4565). - Site gallery: added Norway Østlandet Mesh (#4546). Closes #4545.
Tests / CI
- System tests moved off the v1 API root paths removed in 4.14 (#4565). The
/api/v1/nodes-style root paths were deleted in 4.14 (#4117); because a 404 body isn't JSON, every assertion was dying insidejqwith an opaque parse error. The same change corrects/api/upgrade/*from the transitional410to its post-removal404. Nothing user-facing — but the suite is honest again.
Translations
Upgrade Notes
- Migration 135 backfills
canViewOnMapon existingnodesgrants for MeshCore sources that already had read access, so current users keep map visibility across the upgrade. New grants must set the flag explicitly. - Receive-only mode is per source and defaults to off. Nothing changes unless you turn it on.
Thanks
- @wilhel1812 for reporting the zoom-to-fit icon confusion in Discord (#4562).
Full changelog: v4.14.0...v4.14.1-rc1
🚀 MeshMonitor v4.14.1-rc1
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:4.14.1-rc1🧪 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.