v4.13.3-rc3
Pre-releaseMeshMonitor v4.13.3-rc3
⚠️ Pre-release. This is a release candidate for testing. It does not carry the:latestDocker tag. Run it in production only if you are ready to report bugs.
Summary
This candidate closes out two epics and sweeps up the defects they exposed. The traceroute epic gains a statistical route view: route segments now aggregate across many traceroutes, a union layout engine draws the merged graph, and the result renders in the Node Details strip. The strip also picks up interactive node popups, link tooltips, Copy Forward/Return/Both text links, and a participation picker that finally brings the strip to MQTT sources. The per-source settings epic (#4412) lands in three phases — backend foundation, per-source reads, then the frontend — and ends with MeshCore node-age filtering built on top of it.
That second epic uncovered a cluster of permission bugs worth calling out. Two divergent source-scoped resource lists meant per-source scoping was silently ignored for settings, dashboard, info, audit, and security (#4416), and new-user default grants were written globally when four of six are per-source resources, leaving them inert (#4448). Both are fixed. On the data side, Meshtastic 2.8's periodic rebroadcast of cached packets was inflating node "Last Heard" (#4192), and nodes without a real fix were appearing on the map — position estimates built from a single anchor are now excluded by default (#4450). MeshCore gets guards against overlapping auto-pathfinding calls and a DM permission leak to anonymous users.
Features
- Statistical route aggregation + union layout engine (traceroute epic phase 1) — #4444
- Statistical route view in the Node Details strip (phase 2) — #4451
- Interactive strip: node popup More Details action + link tooltips — #4424
- Participation picker on all sources, bringing the strip to MQTT — #4427
- Copy Forward/Return/Both text links, with an insecure-context fallback — #4429
- Per-source settings foundation and guardrails (#4412 phase 1) — #4417
- Read Node Display settings per-source (phase 2) — #4425
- Per-source Node Display frontend (phase 3) — #4431
- MeshCore per-source node-age filtering and Node Display settings — #4433
Bug Fixes
- Guard
lastHeardagainst replayed position/telemetry packets — #4446 - Exclude single-anchor position estimates by default — #4455
- Purging position history now also clears the global position estimate — #4452
- Make
settingsa per-source permission resource — #4443 - Close five defects the per-source epic uncovered (#4442, #4437, #4438, #4449, #4448) — #4453
- Close the per-source settings defects: global current-value compare, full-table scan — #4441
- Scope MeshCore
/snapshotmessages field tomessages:read— #4423 - Guard MeshCore
startAutoPathfinding()against overlapping calls — #4435 - Disable Convert-to-Automation button for MeshCore sources — #4421
- Route strip edges and labels around unrelated node glyphs — #4430
- Bound
geofenceStateandautoAckCooldownsgrowth — #4413 - Guard MQTT
handleUplinkagainst a client nulled mid-flight — #4414 - Virtual node: fall back to persisted modem preset for the slot-0 channel name — #4415
- Virtual node: stop duplicate MQTT client-proxy publishing — #4418
- Humanize the Dashboard uptime widget and align DM chart padding — #4439
- Unify the sidebar footer across dashboard and per-source views — #4440
- Pass
showListfrom every back-to-dashboard button — #4454
Chores
- Bump version to 4.13.3-rc3 — #4456
Issues Resolved
#3261, #4037, #4192, #4399, #4411, #4412, #4416, #4419, #4420, #4422, #4426, #4428, #4434, #4436, #4437, #4438, #4442, #4445, #4447, #4448, #4449, #4450
Upgrade Notes
No schema migrations and no breaking API changes in this candidate.
One behavior change worth watching: map pins may thin out after upgrading. Position estimates derived from a single anchor are now excluded by default, so nodes that previously showed a speculative location will drop off the map until a second observation backs them up. This is the fix for #4450, not a regression.
Permission behavior also tightens. settings becomes a per-source resource, and default grants for per-source resources are now written per-source rather than globally. If you relied on a global settings grant, re-check that role after upgrading.
Full changelog: v4.13.3-rc2...v4.13.3-rc3
🚀 MeshMonitor v4.13.3-rc3
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:4.13.3-rc3🧪 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.