Skip to content

v4.9.4

Latest

Choose a tag to compare

@Yeraze Yeraze released this 09 Jun 20:36
· 2 commits to main since this release
00095a7

MeshMonitor v4.9.4

This release headlines local-node impersonation detection (#2584): MeshMonitor now flags packets and messages that spoof your own connected node's identity — claiming to be "you" but arriving over RF — instead of silently rendering them as your outgoing messages. The Channels tab got a full-height chat layout with a single compact controls bar (and a "⋯" overflow menu on mobile), and the MeshCore Packet Monitor can now export its log as JSONL. Automation gained {DATE}/{TIME} tokens for Auto Announce and a clearer airtime-cutoff readout that lists the infrastructure nodes driving the decision, plus a system appearance theme option. On the fix side: auto-ack {LONG_NAME}/{SHORT_NAME} and {NODECOUNT}/{DIRECTCOUNT} tokens now resolve correctly and agree with the UI, telemetry charts no longer distort from nodes with bad clocks, the dashboard map honors the Map Pin Style setting, MeshCore shows "Connecting…" while status loads, and a Map Analysis security gate now enforces viewOnMap/private-position permissions on the positions endpoint. Rounded out by 11 dependency updates.

Features

  • Local-node impersonation detection (#2584, #3390) — heuristic detection of packets/messages spoofing your locally-connected node (RF-reception markers + packet-id echo suppression, per-source); flagged with a ⚠️ badge in the channel view and Packet Monitor.
  • Full-height Channels tab layout (#3385, #3387) — single compact controls bar and a message pane that fills the viewport; mobile collapses the controls into a "⋯" overflow menu.
  • Export MeshCore packet monitor log as JSONL (#3391, #3394).
  • {DATE} and {TIME} tokens for Auto Announce (#3382, #3383).
  • Airtime cutoff: contributing infrastructure nodes (#3392) — shows the 3 nodes whose ChUtil was averaged, and trims the percentage to 2 decimals.
  • System appearance theme selection (#3344).

Bug Fixes

  • Auto-ack {LONG_NAME}/{SHORT_NAME} resolved as Unknown/???? (#3384, #3386) — the sender lookup is now scoped to the correct source.
  • {NODECOUNT}/{DIRECTCOUNT} disagreed with the Sources "active" badge (#3388, #3389) — tokens now use the same 2-hour active-node window.
  • Telemetry charts distorted by nodes with bad hardware clocks (#3362, #3363) — future-dated timestamps are sanitized at ingest.
  • Dashboard map ignored Map Pin Style (#3364, #3381).
  • MeshCore showed "Disconnected" while status was still loading (#3380) — now shows "Connecting…" (#3379).

Security

  • Map Analysis positions endpoint now enforces channel viewOnMap and private-position gates (#3365, #3366) — closes a path that could expose GPS history to users lacking the required permissions.

Dependencies

  • Bump react-router-dom 7.16.0 → 7.17.0 (#3378), @tanstack/react-query 5.100.14 → 5.101.0 (#3377), protobufjs 8.4.2 → 8.6.1 (#3376), react-query-devtools (#3375), morgan 1.10.1 → 1.11.0 (#3374), i18next 26.2.0 → 26.3.1 (#3373), lucide-react 1.16.0 → 1.17.0 (#3372), @tanstack/react-virtual 3.13.26 → 3.14.2 (#3371), the production-dependencies group (9 updates, #3370), @types/node (#3368), and codecov-action 6 → 7 (#3367).

Issues Resolved

#2584, #3385, #3384, #3382, #3388, #3362, #3364, #3365, #3379, #3391

Full changelog: v4.9.3...v4.9.4

🚀 MeshMonitor v4.9.4

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:4.9.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.