Skip to content

Yeraze/meshmonitor

v4.6.4 Feature

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

Published 13d 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

Affected surfaces

auth

ReleasePort's take

Light signal
editorial:auto 12d

MeshCore now supports persistent per‑contact forwarding paths with out_path and path_len columns (migration 068) and adds a Share Contact action for zero‑hop broadcasts. UI updates include live path debouncing, manual path editing, Passive Mode enhancements, new packet monitor filters, dashboard map toggles, API node‑action endpoints, multi‑response HTTP auto‑responder support, message source attribution, MQTT publicKey storage fixes, iOS keyboard overlay fix, and duplicate‑packet log suppression.

Why it matters: These feature additions enable finer‑grained path control, improve UI stability (1.5 s debounce), expand Passive Mode reliability on large networks, and clarify documentation—critical for developers configuring MeshCore routing and SREs maintaining system health.

Summary

AI summary

Broad release touches Bug Fixes, MeshCore Path Management, Passive Mode Stability, and Migrations.

Changes in this release

Feature Medium

Adds persist and reset per-contact forwarding path with out_path/path_len columns (migration 068).

Adds persist and reset per-contact forwarding path with out_path/path_len columns (migration 068).

Source: llm_adapter@2026-05-22

Confidence: high

Feature Medium

Adds Share Contact action to broadcast saved advert as zero-hop frame.

Adds Share Contact action to broadcast saved advert as zero-hop frame.

Source: llm_adapter@2026-05-22

Confidence: high

Feature Medium

Implements live path updates with 1.5 s debounce to coalesce flurries.

Implements live path updates with 1.5 s debounce to coalesce flurries.

Source: llm_adapter@2026-05-22

Confidence: high

Feature Medium

Adds feature‑flagged manual path editor modal for advanced users.

Adds feature‑flagged manual path editor modal for advanced users.

Source: llm_adapter@2026-05-22

Confidence: high

Feature Medium

Adds per-source Passive Mode and createdAt chat ordering.

Adds per-source Passive Mode and createdAt chat ordering.

Source: llm_adapter@2026-05-22

Confidence: high

Feature Medium

Adds manual Resync action for Passive Mode sources.

Adds manual Resync action for Passive Mode sources.

Source: llm_adapter@2026-05-22

Confidence: high

Feature Medium

Adds startup‑grace fast reconnect for Passive Mode on large TCP networks.

Adds startup‑grace fast reconnect for Passive Mode on large TCP networks.

Source: llm_adapter@2026-05-22

Confidence: high

Feature Medium

Adds per-source resync staleness override for Passive Mode.

Adds per-source resync staleness override for Passive Mode.

Source: llm_adapter@2026-05-22

Confidence: high

Feature Medium

Adds transport‑mechanism filter (UDP/LoRa/MQTT/API) to packet monitor UI.

Adds transport‑mechanism filter (UDP/LoRa/MQTT/API) to packet monitor UI.

Source: llm_adapter@2026-05-22

Confidence: high

Feature Medium

Adds per‑transport visibility toggles for RF, UDP, and MQTT on dashboard map.

Adds per‑transport visibility toggles for RF, UDP, and MQTT on dashboard map.

Source: llm_adapter@2026-05-22

Confidence: high

Feature Medium

Adds Show RF/UDP/MQTT, traceroute, and accuracy toggles to dashboard map.

Adds Show RF/UDP/MQTT, traceroute, and accuracy toggles to dashboard map.

Source: llm_adapter@2026-05-22

Confidence: high

Feature Medium

Adds v1 API node‑action endpoints (contributed by @tanrax).

Adds v1 API node‑action endpoints (contributed by @tanrax).

Source: llm_adapter@2026-05-22

Confidence: high

Feature Medium

Supports multiple responses for HTTP auto‑responder triggers (contributed by @chaykin).

Supports multiple responses for HTTP auto‑responder triggers (contributed by @chaykin).

Source: llm_adapter@2026-05-22

Confidence: high

Feature Medium

Adds per‑message source attribution columns source_ip and source_path (contributed by @rancur).

Adds per‑message source attribution columns source_ip and source_path (contributed by @rancur).

Source: llm_adapter@2026-05-22

Confidence: high

Feature Medium

Adds deployment comparison table to Getting Started documentation.

Adds deployment comparison table to Getting Started documentation.

Source: llm_adapter@2026-05-22

Confidence: low

Feature Medium

Refactors top‑level pages as multi‑protocol documentation (Meshtastic, MeshCore, MQTT).

Refactors top‑level pages as multi‑protocol documentation (Meshtastic, MeshCore, MQTT).

Source: llm_adapter@2026-05-22

Confidence: low

Feature Medium

Adds new MeshCore Routing & Paths section in ARCHITECTURE_LESSONS.md documenting routing distinctions and user actions.

Adds new MeshCore Routing & Paths section in ARCHITECTURE_LESSONS.md documenting routing distinctions and user actions.

Source: llm_adapter@2026-05-22

Confidence: low

Bugfix Medium

Fixes Safari/iOS keyboard overlay hiding text inputs.

Fixes Safari/iOS keyboard overlay hiding text inputs.

Source: llm_adapter@2026-05-22

Confidence: high

Bugfix Medium

Fixes MQTT NodeInfo publicKey storage to use base64 instead of hex, backfilling legacy rows (migration 069).

Fixes MQTT NodeInfo publicKey storage to use base64 instead of hex, backfilling legacy rows (migration 069).

Source: llm_adapter@2026-05-22

Confidence: low

Bugfix Medium

Suppresses duplicate‑packet WARN spam in MQTT ingest.

Suppresses duplicate‑packet WARN spam in MQTT ingest.

Source: llm_adapter@2026-05-22

Confidence: low

Refactor Medium

Adds migration 068 to create out_path and path_len columns in meshcore_nodes table.

Adds migration 068 to create out_path and path_len columns in meshcore_nodes table.

Source: llm_adapter@2026-05-22

Confidence: low

Refactor Medium

Adds migration 069 to backfill publicKey values from hex to base64 across SQLite/PostgreSQL/MySQL (idempotent).

Adds migration 069 to backfill publicKey values from hex to base64 across SQLite/PostgreSQL/MySQL (idempotent).

Source: llm_adapter@2026-05-22

Confidence: low

Full changelog

MeshMonitor v4.6.4

Summary: This release lands the MeshCore path-management series — MeshMonitor can now persist, display, reset, share, live-update, and (optionally) manually edit the forwarding paths between contacts. Alongside it ships major stability work for Passive Mode on large Meshtastic TCP networks (manual resync, startup-grace fast reconnect, per-source staleness override, createdAt-based chat ordering), per-transport visibility toggles on the dashboard map and packet monitor (RF/UDP/MQTT), and a critical bug fix where MQTT-ingested publicKey values were stored as hex while every other path used base64 — silently triggering false-positive "key mismatch" warnings every time a MQTT-seen node later sent NodeInfo over the radio (migration 069 backfills existing hex rows). Also includes new v1 API node-action endpoints, multi-response HTTP auto-responder triggers, per-message source attribution (source_ip/source_path columns), and a Safari/iOS keyboard fix.

Features

MeshCore Path Management (full series)

  • #3123feat(meshcore): persist + reset per-contact forwarding path (slices 1+2). Adds out_path / path_len columns (migration 068), surfaces Hops Away + Path bytes on the contact detail panel, and ships a Reset Path action wrapping CMD_RESET_PATH.
  • #3124feat(meshcore): add Share Contact action. Broadcasts a contact's saved advert as a zero-hop frame via CMD_SHARE_CONTACT.
  • #3127feat(meshcore): live path updates via debounced PathUpdated push. Coalesces flurries from chatty contacts into a single device refresh per 1.5 s window.
  • #3130feat(meshcore): manual path editor, feature-flagged. Adds the meshcoreAdvancedPathEdit setting + an Edit Path… modal for advanced users who want to force a specific hop chain (gated server-side too).

Passive Mode Stability (#3122)

  • #3125fix(stability): per-source Passive Mode + createdAt chat ordering.
  • #3126feat(stability): manual Resync action for Passive Mode sources.
  • #3128feat(stability): startup-grace fast reconnect for Passive Mode.
  • #3129feat(stability): per-source resync staleness override for Passive Mode.

Visibility Toggles

  • #3116feat(packet-monitor): add transport-mechanism filter (UDP/LoRa/MQTT/API).
  • #3117feat(map): per-transport visibility toggles (Show RF / UDP / MQTT).
  • #3118feat(dashboard-map): add Show RF/UDP/MQTT + traceroute + accuracy toggles.

API & Automations

  • #2585feat: add v1 API node action endpoints. Thanks to @tanrax for the contribution.
  • #2881feat: support multiple responses for HTTP auto-responder triggers. Thanks to @chaykin.
  • #3114feat(messages): add source_ip + source_path columns for per-message attribution. Thanks to @rancur.

Bug Fixes

  • #3133fix(mqtt): store ingested publicKey as base64 (not hex). The MQTT NodeInfo ingest path was encoding publicKey as hex while the direct serial/TCP path and the device's security-config handshake both used base64. The mismatch silently broke the key-mismatch detector, firing false-positive 🔐 Key mismatch detected warnings on every NodeInfo arrival for any MQTT-seen node. Migration 069 backfills existing hex-encoded rows (lowercase 32-byte hex matching ^[0-9a-f]{64}$) to base64; idempotent across SQLite / PostgreSQL / MySQL.
  • #3121fix(ios): keep text inputs above Safari keyboard accessory bar. Closes #2994.
  • #3120fix(telemetry): suppress duplicate-packet WARN spam in MQTT ingest. Closes #3119.

Documentation

  • #3115docs: add deployment comparison table to Getting Started.
  • #3131docs: reframe top-level pages as multi-protocol (Meshtastic, MeshCore, MQTT).
  • #3132 — Release housekeeping for 4.6.4 + a new MeshCore Routing & Paths section in docs/ARCHITECTURE_LESSONS.md documenting the load-bearing distinction between Meshtastic traceroute traces and MeshCore sender-supplied forwarding instructions, plus the four user actions (Reset / Share / Set Out-Path / Trace), the 0xFF/-1 sentinel gotcha, and the push-debounce design.

Migrations

  • 068meshcore_nodes_out_path: adds out_path TEXT + path_len INTEGER to meshcore_nodes so the per-contact MeshCore route survives restarts.
  • 069normalize_node_public_keys_to_base64: one-time backfill converting any hex-encoded nodes.publicKey values to base64 to match the canonical encoding used everywhere else. Idempotent.

Issues Resolved

Closes #2994, #3112, #3119, #3122.

Upgrade Notes

Two new migrations run automatically on startup. Migration 069 is the user-visible one: if you've been receiving MeshMonitor's 🔐 Key mismatch detected warnings for nodes whose keys hadn't actually changed (typically nodes you saw via MQTT before they sent direct NodeInfo), those warnings will stop after the migration converts the legacy hex-stored rows. No action required.

Full changelog: https://github.com/Yeraze/meshmonitor/compare/v4.6.3...v4.6.4

🚀 MeshMonitor v4.6.4

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:4.6.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.7.2 Route `destination` field now rejects non‑8‑hex nodeId or 64‑hex publicKey, returning HTTP 400.

Beta — feedback welcome: [email protected]