Skip to content

Releases: Yeraze/meshmonitor

MeshMonitor v3.8.6

10 Mar 19:27
73ba411

Choose a tag to compare

What's New

Features

  • Configurable Analytics Provider Settings — Add optional web analytics to your MeshMonitor instance. Supports Google Analytics (GA4), Cloudflare Web Analytics, PostHog, Plausible, Umami, Matomo, and custom scripts. Configured via the Settings tab with automatic CSP integration. #2200 — closes #2198
  • Last Hop Filter for Packet Monitor — Filter packets by the last relay node that forwarded them. #2199
  • Analytics Documentation — New docs page covering all supported analytics providers, configuration, CSP handling, and privacy considerations. #2203

Bug Fixes

  • Upgrade Watchdog — Accept both .yml and .yaml extensions for Docker Compose files, fixing auto-upgrade failures for some users. #2201 — closes #2197
  • Packet Monitor UI — Improve button contrast and detail popup readability. #2195
  • Virtual Node — Match physical radio's channel protobuf encoding exactly. #2193
  • Virtual Node Config — Only suppress duplicate wantConfigId requests, not new ones. #2192 — closes #2191
  • Dashboard Widgets — Filter empty distance buckets from dashboard widgets. #2190
  • Message Queue — Fix message queue service bugs and unskip all tests. #2189

Performance

  • Batch SQL Operations — Convert N+1 delete loops to batch DELETE operations and optimize COUNT queries. #2187, #2188
  • SQL COUNT Optimization — Use SQL COUNT(*) instead of loading entire tables for count queries. #2185

Other

  • Translations update from Hosted Weblate. #2168
  • Remove unused legacy functions from meshtasticManager.ts. #2186

Full Changelog: v3.8.5...v3.8.6

🚀 MeshMonitor v3.8.6

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:3.8.6

🧪 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.

MeshMonitor v3.8.5

09 Mar 19:14
b7527a9

Choose a tag to compare

What's New

Features

  • Packet Monitor as Sidebar Tab — The Packet Monitor is now available as a dedicated sidebar tab in addition to the map panel (#2180, closes #2179)
  • Dedicated Packet Monitor Permission — New packetmonitor:read permission controls access to the Packet Monitor. Packets are filtered server-side based on channel and DM permissions (#2181)
  • Dashboard Widgets — Added hop distribution, distance distribution, and heatmap dashboard widgets (#2164, closes #2162)

Bug Fixes

  • Virtual Node config loop — Fixed config request loop caused by cached rebooted messages (#2182)
  • MeshCore contacts — Fixed contacts not auto-updating on map and monitor page (#2165)
  • Backup modal UI — Wider modal, styled buttons, improved spacing (#2163)
  • Mobile message input — Full-width text input with buttons below (#2161)

Performance

  • SQL COUNT optimization — Use COUNT(*) instead of loading entire tables for count queries (#2185)
  • Batch DELETE operations — Convert N+1 delete loops to batch DELETE statements (#2187)

Maintenance

  • Removed 1,182 lines of unused legacy functions from meshtasticManager.ts (#2186)
  • Removed debug leftovers and fixed desktop version (#2183)
  • Added tested hardware configurations documentation (#2166, #2167)
  • Translation updates from Weblate (#2128)

Dependency Updates

  • mysql2 3.18.2 → 3.19.0 (#2178)
  • express-rate-limit 8.2.1 → 8.3.0 (#2177)
  • pg 8.19.0 → 8.20.0 (#2176)
  • recharts 3.7.0 → 3.8.0 (#2175)
  • puppeteer 24.37.5 → 24.38.0 (#2174)
  • Production dependencies group update (#2173)
  • Development dependencies group update (#2172)
  • docker/login-action 3 → 4 (#2171)
  • docker/setup-buildx-action 3 → 4 (#2170)
  • docker/setup-qemu-action 3 → 4 (#2169)
  • actions/upload-artifact 4 → 7 (#2094)
  • actions/download-artifact 7 → 8 (#2095)

Action Required for Admins

The new packetmonitor:read permission is granted to all users (including Anonymous) by default. If you need to restrict Packet Monitor access, review user permissions in Settings → Users.


System Test Results

Test Run: 2026-03-09

Test Suite Result
Configuration Import ✅ PASSED
Quick Start Test ✅ PASSED
Security Test ✅ PASSED
V1 API Test ✅ PASSED
Reverse Proxy Test ✅ PASSED
Reverse Proxy + OIDC ✅ PASSED
Virtual Node CLI Test ✅ PASSED
Backup & Restore Test ✅ PASSED
Database Migration Test ✅ PASSED
DB Backing Consistency ✅ PASSED

Unit Tests: 139 test files, 2,938 tests passed

Full Changelog: v3.8.4...v3.8.5

🚀 MeshMonitor v3.8.5

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:3.8.5

🧪 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.

MeshMonitor v3.8.4

08 Mar 15:48
20e3495

Choose a tag to compare

MeshMonitor v3.8.4

MeshCore hotfix release.

What's Changed

Bug Fixes

  • fix: add defensive guards to MeshCore node rendering (#2158) — Closes #2157
  • fix: MeshCore repeater serial protocol — three bugs (#2159)

Details

MeshCore Nodes crash (#2158):
Enabling "Show MeshCore" on the Nodes page crashed when contacts had null SNR/RSSI values. Added type validation in mapContactsToNodes() and defensive guards in the render path.

MeshCore Repeater protocol (#2159) — contributed by @NearlCrews:
Three bugs prevented MESHCORE_FIRMWARE_TYPE=repeater from working:

  • firmwareType env var was ignored when connecting via API
  • Wrong line terminator (\n instead of \r) caused repeater to ignore all commands
  • Missing wake-up sequence and wrong response parsing for repeater CLI format

Issues Resolved

  • #2157 — [BUG] Connecting Meshcore device results to "Nodes failed to Load" error

Full Changelog: v3.8.3...v3.8.4

🚀 MeshMonitor v3.8.4

📦 Installation

Docker (recommended):

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

MeshMonitor v3.8.3

08 Mar 03:41
038cb82

Choose a tag to compare

MeshMonitor v3.8.3

What's Changed

Bug Fixes

  • fix: resolve MeshCore display issues on Nodes page (#2151) — Closes #2154
  • fix: enable receiving incoming messages on MeshCore companion devices (#2150) — Closes #2149

Refactoring

  • refactor: reorganize Settings page into focused sections (#2148)
  • refactor: frontend review batch 1 — shared modal, toast theming, accessibility (#2152)
  • refactor: frontend review batch 2 — design tokens, CSS split, lucide icons (#2153)
  • refactor: frontend review batch 3 — error boundaries, context splitting (#2155)

Features

  • feat: add favorite lock toggle and filter (#2147)

Documentation

  • docs: add better-sqlite3 rebuild troubleshooting to LXC guide (#2146)

Issues Resolved

  • #2149 — [BUG] Meshcore Messaging only sends but cannot receive
  • #2154 — [BUG] Telemetry Dashboard Search Broken

Full Changelog: v3.8.2...v3.8.3

🚀 MeshMonitor v3.8.3

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:3.8.3

🧪 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.

v3.8.2

07 Mar 02:48
513e3dc

Choose a tag to compare

What's Changed

New Features

  • Chat auto-scroll to new messages — When near the bottom of a chat, new incoming messages automatically scroll the view. Works for both channel messages and DMs. Also adds a "Jump to Bottom" button to the DM tab. (#2143, #2142)

Bug Fixes

  • Fix lock icon on auto-favorites — Auto-favorited nodes no longer show a lock icon; only manually-locked favorites display 🔒 (#2144)
  • Enable save for Dim Inactive Nodes settings — Fix save button not enabling when changing dim inactive node settings (#2140, #2138)
  • Normalize homoglyphs in autoresponder matching — Autoresponder now matches messages with homoglyph characters (#2137, #2136)

Other

  • docs: fix outdated paths and values in ARCHITECTURE_LESSONS.md (#2139)
  • chore: bump version to 3.8.2 (#2145)

🚀 MeshMonitor v3.8.2

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:3.8.2

🧪 Testing

✅ All unit tests passed (2921 tests)
✅ All system tests passed
✅ TypeScript checks passed

🚀 MeshMonitor v3.8.2

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:3.8.2

🧪 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.

MeshMonitor v3.8.1

05 Mar 15:48
e40d237

Choose a tag to compare

What's Changed

New Features

  • Time Offset Security Detection — Detect and flag mesh nodes whose clock is significantly out of sync (default threshold: 30 minutes, configurable via TIME_OFFSET_THRESHOLD_MINUTES env var). Displays in a new "Time Offset" section on the Security tab with human-readable offset and the node's reported time. (#2130)
  • LOG_LEVEL environment variable — Configure server log verbosity via environment variable (#2124)

Bug Fixes

  • Suppress ghost node resurrection after reboot — Prevents nodes from reappearing after server restart (#2129, #2123)
  • Resolve test upgrade staying pending with Invalid Date — Fix firmware upgrade test getting stuck (#2127, #2125)

Other

  • Translated using Weblate (Russian) (#2069)
  • Bump version to 3.8.1 (#2131)

🚀 MeshMonitor v3.8.1

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:3.8.1

🧪 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.

MeshMonitor v3.8.0

04 Mar 03:52
300e44d

Choose a tag to compare

MeshMonitor v3.8.0

Highlights

Gateway OTA Firmware Updates (Experimental) — Administrators can now check for, download, and flash Meshtastic firmware updates directly from the MeshMonitor UI via a step-by-step wizard in System Settings. Supports Stable, Alpha, and custom firmware URLs with automatic config backup, live progress streaming, and hardware-matched binary selection. Docker deployments only.

New Features

Bug Fixes

  • Disable OTA firmware updates on Tauri desktop builds (#2120)
  • Prevent auto-favorites from overriding manual favorites (#2115) — Closes #2111

Documentation

  • Message delivery status icon documentation and confirmed CSS fix (#2121) — Closes #2118
  • Add Utilization Alert to user scripts gallery (#2112) — Closes #2109

Full Changelog: v3.7.6...v3.8.0

🚀 MeshMonitor v3.8.0

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:3.8.0

🧪 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.

MeshMonitor v3.7.6

02 Mar 21:10
3801f15

Choose a tag to compare

What's Changed

Bug Fixes

  • Accept new nodeNum on same-device reboot — when firmware reboots with a different nodeNum, MeshMonitor now accepts it and merges the old node's metadata instead of rejecting it. The old approach caused identity mismatches where MeshMonitor used the old nodeNum while the firmware broadcast on the new one (#2106)
  • Fix isLocked desync for node names changed outside MeshMonitor — node names changed via the Meshtastic app (or after factory reset) are now properly picked up. The isLocked flag was incorrectly blocking NodeInfo updates, the authoritative source for node identity (#2106)
  • Prevent duplicate outgoing messages in chat (#2104) — closes #2027

New Features

  • Per-node cooldown for geofence triggers — prevent repeated geofence alerts for the same node within a configurable time window (#2105) — closes #2103

Dependencies

  • Bump mysql2 from 3.17.4 to 3.18.2 (#2102)
  • Bump maplibre-gl from 5.18.0 to 5.19.0 (#2101)
  • Bump @types/supertest from 6.0.3 to 7.2.0 (#2100)
  • Bump pg and @types/pg (#2099)
  • Bump globals from 17.3.0 to 17.4.0 (#2098)
  • Bump production-dependencies group with 4 updates (#2097)
  • Bump development-dependencies group with 3 updates (#2096)

Full Changelog: v3.7.5...v3.7.6

🚀 MeshMonitor v3.7.6

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/app/data \
  ghcr.io/yeraze/meshmonitor:latest

Upgrade: Pull the latest image and restart your container.

🚀 MeshMonitor v3.7.6

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:3.7.6

🧪 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.

MeshMonitor v3.7.5

02 Mar 02:39
a2f04a0

Choose a tag to compare

What's Changed

New Features

  • Resizable node list sidebar — drag to resize the sidebar to your preference (#2079)
  • Multi-channel AutoAnnounce and AutoResponder — configure automation on any channel, not just primary (#2078)
  • Search filtered by user permissions — search results now respect channel/resource permissions (#2090)
  • Purge position history — new action to clear position history for a node, plus taller actions dropdown (#2086) — closes #2082
  • Dedicated chat bubble theme variables — improved text contrast and theming support for chat bubbles (#2088) — closes #2084

Bug Fixes

  • Prevent ghost duplicate node on reboot — fix for devices that reboot with a different nodeNum creating phantom entries (#2091)
  • Exclude MQTT-bridged nodes from auto-favourite — nodes with 0 hops via MQTT are no longer auto-favourited (#2087) — closes #2085
  • Sort dropdown overflow with long translations — fix sidebar overflow with long i18n strings (#2083) — closes #2081
  • Allow commas in embed allowed origins — input field now correctly accepts comma-separated origins (#2077)

Maintenance

  • Extract channel checkbox inline styles to CSS classes (#2089)
  • Replace trivy-action with direct Trivy install for security scan CI (#2080)
  • Stop system tests from rebuilding Docker image redundantly — eliminates redundant builds and potential BuildKit cache corruption (#2092)

Full Changelog: v3.7.4...v3.7.5

🚀 MeshMonitor v3.7.5

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:3.7.5

🧪 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.

v3.7.4

28 Feb 21:35
a1b00b9

Choose a tag to compare

What's Changed

Bug Fixes

  • fix: allow any origin when embed allowedOrigins is blank (#2075) — Closes #2070
  • fix: prevent stale position broadcasts from overwriting fixed position (#2071)
  • fix: add embed.html to armv7 Dockerfile (#2067)
  • fix: use --entrypoint in Docker smoke tests (#2068)

Documentation

  • docs: exclude design plans from published docs (#2074)
  • docs: fix embed maps URL examples to match actual route (#2072)

Issues Resolved

  • #2070 [SUPPORT] Embed Maps
  • #2065 v3.7.3 isn't tagged with latest

Full Changelog: v3.7.3...v3.7.4

🚀 MeshMonitor v3.7.4

📦 Installation

Docker (recommended):

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