Releases: Yeraze/meshmonitor
v3.7.0
What's New
Auto Favorite Automation (#2018)
Automatically favorite eligible nearby nodes for zero-cost hop routing on Meshtastic firmware 2.7+. When enabled on a Router, Router Late, or Client Base node, MeshMonitor detects 0-hop nodes and favorites them on your device — preserving hop counts across your mesh infrastructure without manual configuration.
- Event-driven: Nodes are favorited as soon as they are detected
- Periodic cleanup: Stale, out-of-range, or ineligible nodes are automatically unfavorited (configurable threshold, default 72h)
- Manual favorites are never touched — only auto-managed nodes are swept
- New Auto Favorite section in the Automation tab with enable toggle, staleness threshold, and status banners
Other Features
- Position precision accuracy estimates — Channel UI now shows estimated accuracy for position precision settings (#2008)
- Location indicators on all channels — All location-enabled channels now show location sharing indicators (#2007)
Bug Fixes
- Packet routes — Use async DB methods for PostgreSQL/MySQL compatibility (#2016)
- Duplicate chat messages — Prevented duplicate outgoing messages in chat (#2012, #2015)
- Map position updates — Fixed position updates for mobile/tracker nodes and a WebSocket position bug (#2014)
- Homoglyph byte count — Corrected optimized byte count display when homoglyph setting is enabled (#2009)
Maintenance
- Clean up root markdown files (#2011)
- Bump production dependencies (#1992)
- Bump rollup dependencies (#1993, #1996)
Full Changelog: v3.6.6...v3.7.0
🚀 MeshMonitor v3.7.0
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:3.7.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.6.6
What's Changed
Features
- Add homoglyph message optimization setting — New setting to enable homoglyph character normalization for message display. Fixes #1997 (#2000)
- Add HAM Licensed checkbox to Node Identity settings — Restores the missing HAM license checkbox in node identity configuration. Fixes #1998 (#1999)
- Add location sharing status to channel overview — Channel overview now shows whether location sharing is enabled per channel. Fixes #1985 (#1986)
Bug Fixes
- Fix rate limiter IPv4-mapped IPv6 subnet masking — All IPv4 clients were sharing a single rate limit bucket because the default
ipKeyGeneratorapplied a/56subnet mask to::ffff:x.x.x.xaddresses, zeroing out the IPv4 data. Each IPv4 client now gets its own bucket. Fixes #1980 (#2001) - Fix NodeInfo broadcasting settings not saving — Added NodeInfo broadcast settings to the validKeys whitelist so they persist correctly. Fixes #1989 (#1990)
Documentation
- Add Community Add-ons section — New documentation for community add-ons including the AI Responder (#1987)
Dependencies
- Bump @typescript-eslint/eslint-plugin from 8.55.0 to 8.56.0 (#1994)
- Bump development dependencies group with 2 updates (#1991)
Full Changelog: v3.6.5...v3.6.6
🚀 MeshMonitor v3.6.6
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:3.6.6🧪 Testing
✅ All unit tests passed (16/16 rate limiter tests)
✅ All 10 system tests passed
✅ TypeScript checks passed
🚀 MeshMonitor v3.6.6
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:3.6.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.6.5
What's Changed
Features
- Allow disabling rate limits via environment variables — Set
RATE_LIMIT_API,RATE_LIMIT_AUTH, orRATE_LIMIT_MESSAGEStounlimited,0, or-1to disable rate limiting for users behind authenticating reverse proxies or on private networks (#1981)
Bug Fixes
- Fix ignored_nodes.nodeNum BIGINT overflow — Upgraded
ignored_nodes.nodeNumfrom INTEGER to BIGINT for PostgreSQL/MySQL to support full unsigned 32-bit Meshtastic node numbers. Fixes #1973 (#1975) - Fix telemetry icons flickering on map load — Prevent telemetry cache invalidation from clearing cached data, preserving stale data over empty data during cache transitions (#1974)
- Fix auto-upgrade sidecar port mapping loss — Simplified the auto-upgrade sidecar script to prevent Docker port mappings from being lost during upgrades (#1977)
- Fix nodes with default shortName falsely classified as incomplete — Nodes using the default Meshtastic short name are no longer hidden by the "hide incomplete nodes" filter (#1972)
- Fix filter popup Reset All button — The Reset All button in the filter popup now correctly resets all filters (#1971)
- Fix premature new node notifications — New node notifications are now deferred until node info is fully populated, preventing notifications with missing data (#1970)
- Fix map preference persistence —
showAccuracyRegionsandshowEstimatedPositionsmap settings now persist across page reloads (#1969) - Remove incorrect "Desktop Only" label from packet monitor — The packet monitor works on all platforms, not just desktop (#1983)
- Fix MySQL migration idempotency — Fixed MySQL migrations 061 and 077 to correctly detect existing columns and avoid duplicate column/primary key errors (#1982)
CI/Infrastructure
- Add Node.js 25.x to CI test matrix (#1979)
Full Changelog: v3.6.4...v3.6.5
🚀 MeshMonitor v3.6.5
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:3.6.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.6.4
What's Changed
Bug Fixes
- Upgrade telemetry packetId to BIGINT for PostgreSQL/MySQL (#1967) - Fixes #1964
- Resolve MySQL/PostgreSQL node loss during init config sync (#1965)
- Pre-populate MeshCore connection form from env vars (#1963) - Fixes #1960
- Replace GPL session store and add MySQL URL detection (#1961)
- Add processing delays to config import for reliable LoRa preset application (#1958)
- Add DHCP client and networking service enablement to LXC template (#1956)
Tests
- Add database backing consistency test across SQLite/PostgreSQL/MySQL (#1966)
- Fix flaky DB backing consistency test node count check (#1968)
Other
- Fix inaccuracies in Proxmox LXC deployment guide (#1957)
- Translations update from Hosted Weblate - Russian (#1959)
Issues Resolved
- #1964 - Telemetry insert failures on PostgreSQL due to packetId overflow
- #1960 - MeshCore connection settings not pre-populated from env vars
🚀 MeshMonitor v3.6.4
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:3.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.
v3.6.3
What's Changed
Features
- Differentiate own vs others' tapback reactions by color (#1950)
Bug Fixes
- Add networking support to LXC template (#1954) - Fixes #1672
- Consistent map pin click centering and popup positioning (#1953)
- Use actual data tables for node packet type distribution (#1952)
- Increase auto-responder script timeout from 10s to 30s (#1942)
Performance
- Add server-side in-memory cache for link previews (#1944)
Other
- Update deployment guide for accuracy (#1946)
- Clean up LXC template build workflow release notes (#1945)
- Translations update from Hosted Weblate - Russian (#1943)
Issues Resolved
- #1672 - LXC deployment image/scenario on PM 9.1
- #1929 - Short name incorrect
- #1934 - Stations with icons as short name don't update on map
- #1936 - Rounding to integers in graphs is still not fully fixed
- #1949 - Window off screen again
- #1951 - Traceroute results
🚀 MeshMonitor v3.6.3
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:3.6.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.6.2
What's Changed in v3.6.2
Bug Fixes
- fix: hide Show MeshCore toggle when disabled and persist its state - The "Show MeshCore" checkbox in the map Features panel was always visible regardless of
MESHCORE_ENABLEDsetting, and its state was never saved. Now properly hidden when MeshCore is disabled and persists across page loads. (#1940) - fix: prevent fractional values in integer telemetry graphs (#1939, #1936)
- fix: memoize map marker icons to prevent position update interference (#1938)
- fix: render emoji short names as HTML overlay on map markers (#1937, #1934)
- fix: add BASE_URL support to MeshCore API endpoints (#1935)
- fix: derive short name from last 4 hex chars of node ID to match Meshtastic convention (#1932, #1929)
- fix: position history endpoint nodeId parsing and pagination (#1931)
- fix: increase auto-responder and script test timeout from 10s to 30s - All automation script execution paths (auto-responder, timer, geofence, and the UI "Test" popup) now use a consistent 30-second timeout. (#1942)
New Features
- feat: add V1 API position history endpoint (#1930)
Database Migration
This release includes migration 074 which adds the show_meshcore_nodes column to user_map_preferences. This migration runs automatically on startup for SQLite, PostgreSQL, and MySQL.
Full Changelog: v3.6.1...v3.6.2
🚀 MeshMonitor v3.6.2
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:3.6.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.6.1 - Auto-Announce Preview & Audit Log Improvements
What's Changed
Features
- Add feature emojis to
{FEATURES}token and rename popup button (#1923) - Add StatusMessage and TrafficManagement module config (#1925)
- Add Source filter to audit log page to separate UI vs API token events (#1926)
Fixes
- Prevent MeshCore Companion corruption from repeater auto-detection (#1924)
- Live backend preview for auto-announce and complete feature emoji legend (#1927)
Full Changelog: v3.6.0...v3.6.1
Proxmox LXC Template
This release includes a Proxmox-compatible LXC container template for MeshMonitor.
Installation
- Download the
.tar.gztemplate file - Verify the SHA256 checksum (optional but recommended)
- Upload to your Proxmox server:
scp meshmonitor-*.tar.gz root@proxmox:/var/lib/vz/template/cache/ - Create a new LXC container from the template via Proxmox web UI
- Configure
/etc/meshmonitor/meshmonitor.envwith your Meshtastic node IP - Start the container and access the web UI on port 8080
Documentation
See the Proxmox LXC Deployment Guide for detailed instructions.
Limitations
- Auto-upgrade feature is not supported in LXC deployments
- Manual updates required (download new template for each version)
- Community-supported (Docker remains the primary deployment method)
🚀 MeshMonitor v3.6.1
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:3.6.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.6.0 - Auto-Ping & Virtual Node Enhancements
What's Changed
New Features
- Auto-Ping automation — A new DM-command driven ping feature lets mesh users test connectivity and measure latency. Users DM
ping Nto start pings with ACK/NAK/timeout tracking and receive a summary with min/avg/max latency. Admins configure interval, max pings, and timeout in the Automation tab. (#1917, closes #1894) - Telemetry packet ID tracking — Telemetry records now include
packetIdfrom the originating mesh packet, enabling API consumers to de-duplicate data received via multiple mesh paths. (#1921)
Improvements
- Virtual Node firmware branding — VN connections now report firmware as
2.6.6-MM3.6.0, identifying the connection as a Virtual Node running on MeshMonitor. (#1920) - Virtual Node channel stability — Fixed
configCompletebroadcasts during physical radio reconnection causing VN clients to lose their channel list. Disabled channel slots (role=0) are now sent to match real device behavior. (#1920) - Poll/unread optimization — Batch queries for
/api/polland/api/unread-countsreduce database load with MySQL support. (#1909) - Automation documentation — Added missing docs for Auto-Ping, Auto Key Management, and Ignored Nodes. (#1918)
Bug Fixes
- Packet distribution portnum total — Portnum filter now correctly applies to total count in the packet distribution API. (#1919)
- Mobile infinite scroll — Fixed infinite scroll and always-visible virtual channels on mobile. (#1907, closes #1908)
- Hide accuracy region for overridden positions — Position accuracy indicators no longer show for manually overridden node positions. (#1910)
Dependencies
- Bump serialport from 12.0.0 to 13.0.0 (#1915)
- Bump @serialport/parser-readline from 12.0.0 to 13.0.0 (#1913)
- Bump production dependencies (jose, jiti, sass, sharp) (#1911)
- Bump @typescript-eslint/eslint-plugin (#1916)
- Bump @typescript-eslint/parser from 8.54.0 to 8.55.0 (#1912)
- Bump jsdom from 28.0.0 to 28.1.0 (#1914)
Full Changelog: v3.5.1...v3.6.0
Proxmox LXC Template
This release includes a Proxmox-compatible LXC container template for MeshMonitor.
Installation
- Download the
.tar.gztemplate file - Verify the SHA256 checksum (optional but recommended)
- Upload to your Proxmox server:
scp meshmonitor-*.tar.gz root@proxmox:/var/lib/vz/template/cache/ - Create a new LXC container from the template via Proxmox web UI
- Configure
/etc/meshmonitor/meshmonitor.envwith your Meshtastic node IP - Start the container and access the web UI on port 8080
Documentation
See the Proxmox LXC Deployment Guide for detailed instructions.
Limitations
- Auto-upgrade feature is not supported in LXC deployments
- Manual updates required (download new template for each version)
- Community-supported (Docker remains the primary deployment method)
🚀 MeshMonitor v3.6.0
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:3.6.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.5.1
What's Changed
Bug Fixes
- Fix remote admin for ignore/favorite node toggle — The dedicated ignore/favorite methods now support remote nodes by obtaining session passkeys and routing via
sendAdminCommand, matching the existing AdminCommandsTab pattern. (#1904, closes #1901) - Hide private key on Info page — Private key is now hidden by default with a toggle visibility button. (#1900)
- Use apprise venv python for MeshCore bridge and scripts — Fixes script execution in environments where the system Python differs from the venv. (#1899)
- Hide MeshCore sidebar when MESHCORE_ENABLED is not set — The MeshCore sidebar entry no longer appears when the feature is disabled. (#1893)
New Features
- Per-portnum node distribution chart on Info page — Adds more detailed statistics to the packet distribution diagrams. (#1902, closes #1891)
- RayHunter monitor script in script gallery — New community script for RayHunter monitoring. (#1895)
- Server-node clock offset telemetry — Tracks clock drift between the server and the connected node. (#1889)
Maintenance
- Update protobufs to v2.7.19 — Adds
TRAFFICMANAGEMENT_CONFIGsupport. (#1903) - Translation updates — Russian translations updated via Weblate. (#1892)
Full Changelog: v3.5.0...v3.5.1
Proxmox LXC Template
This release includes a Proxmox-compatible LXC container template for MeshMonitor.
Installation
- Download the
.tar.gztemplate file - Verify the SHA256 checksum (optional but recommended)
- Upload to your Proxmox server:
scp meshmonitor-*.tar.gz root@proxmox:/var/lib/vz/template/cache/ - Create a new LXC container from the template via Proxmox web UI
- Configure
/etc/meshmonitor/meshmonitor.envwith your Meshtastic node IP - Start the container and access the web UI on port 8080
Documentation
See the Proxmox LXC Deployment Guide for detailed instructions.
Limitations
- Auto-upgrade feature is not supported in LXC deployments
- Manual updates required (download new template for each version)
- Community-supported (Docker remains the primary deployment method)
🚀 MeshMonitor v3.5.1
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:3.5.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.5.0 - Experimental MeshCore Support
What's New
MeshMonitor v3.5.0 is a milestone release introducing experimental MeshCore protocol support, along with AutoTraceroute scheduling improvements, Remote Admin UI enhancements, and several bug fixes.
Experimental MeshCore Protocol Support
MeshMonitor can now connect to MeshCore repeaters and clients via serial port, enabling monitoring and messaging with MeshCore-based mesh networks alongside standard Meshtastic nodes.
- Serial port connectivity to MeshCore repeaters and clients
- Node discovery and tracking for MeshCore devices on the map
- Two-way messaging between MeshMonitor and MeshCore nodes
- Contact management with automatic discovery
MeshCore support is experimental and requires a compatible MeshCore device connected via serial port. For more information, visit meshcore.co.
Features
- AutoTraceroute & Remote Admin time window scheduling — Restrict scans to specific hours (e.g., off-peak 22:00–06:00) with overnight wrapping support (#1871, #1872)
- Remote Admin icon and filter on map node list — Quickly identify and filter nodes with remote admin access (#1868)
- Show successful nodes first in Remote Admin Scanner log — Improved scan log readability (#1870)
- Expand system tokens in Auto Responder HTTP URLs — Use tokens like
{NODE_ID},{SNR}, etc. in HTTP action URLs (#1867, #1865) - LLM Bridge user script — New community script for connecting LLMs to your mesh (#1878, #1876)
- Highlight selected node during traceroute — Pulsing glow on the selected node on the map (#1847)
- Compact packet charts on Info tab — Combined charts into compact sections (#1846, #1833)
- Gist support for User Scripts Gallery — Plus Earthquake Alerts script (#1845, #1804)
- Combined BLE & WiFi paxcounter graph — Dual-line graph (#1843)
- Compact node list cards and tighter popups (#1842, #1834)
- Document relayNode in V1 API and serve OpenAPI spec publicly (#1855)
- Local node hint banner on Remote Admin page (#1854)
Bug Fixes
- Tapback DM routing fix — Tapback emoji reactions now correctly stay on the original channel instead of being sent as DMs (#1885)
- Outgoing message timestamp fix — Timestamps update to node time on ACK receipt (#1884, #1877)
- Default auto-traceroute interval changed from 3 to 15 minutes (#1883, #1875)
- Persist Auto Acknowledge pattern testing text (#1881, #1879)
- Remove duplicate emoji from Sky and Sea Alert script name (#1882)
- AutoTraceroute schedule settings race condition (#1872)
- MFA verification broken on SQLite — Missing columns in SELECT queries (#1831, #1828)
- Double-issuer in MFA otpauth URI (#1831)
- Snapshot node positions at traceroute time — Fix moving node rendering on traceroute maps (#1864, #1862)
- Broadcast outgoing text messages to virtual node clients (#1863, #1859)
- Always verify auto_traceroute_nodes enabled column on startup (#1861, #1860)
- Improve map node popup grid layout for consistent positioning (#1851, #1841)
- Include network and telemetry configs in Load All button (#1854, #1852)
- Always show local node in Auto Time Sync node list (#1848)
Documentation
- Add MeshCore feature documentation (#1880)
- Add Auto Time Sync section to automation documentation (#1874)
- Update API docs and schema for traceroute position snapshots (#1866)
Translations
Full Changelog: v3.4.9...v3.5.0
Proxmox LXC Template
This release includes a Proxmox-compatible LXC container template for MeshMonitor.
Installation
- Download the
.tar.gztemplate file - Verify the SHA256 checksum (optional but recommended)
- Upload to your Proxmox server:
scp meshmonitor-*.tar.gz root@proxmox:/var/lib/vz/template/cache/ - Create a new LXC container from the template via Proxmox web UI
- Configure
/etc/meshmonitor/meshmonitor.envwith your Meshtastic node IP - Start the container and access the web UI on port 8080
Documentation
See the Proxmox LXC Deployment Guide for detailed instructions.
Limitations
- Auto-upgrade feature is not supported in LXC deployments
- Manual updates required (download new template for each version)
- Community-supported (Docker remains the primary deployment method)
Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/yeraze/meshmonitor:3.5.0Helm:
helm repo add meshmonitor https://yeraze.github.io/meshmonitor
helm install meshmonitor meshmonitor/meshmonitor --version 3.5.0Proxmox LXC Template
This release includes a Proxmox-compatible LXC container template for MeshMonitor.
Installation
- Download the
.tar.gztemplate file - Verify the SHA256 checksum (optional but recommended)
- Upload to your Proxmox server:
scp meshmonitor-*.tar.gz root@proxmox:/var/lib/vz/template/cache/ - Create a new LXC container from the template via Proxmox web UI
- Configure
/etc/meshmonitor/meshmonitor.envwith your Meshtastic node IP - Start the container and access the web UI on port 8080
Documentation
See the Proxmox LXC Deployment Guide for detailed instructions.
Limitations
- Auto-upgrade feature is not supported in LXC deployments
- Manual updates required (download new template for each version)
- Community-supported (Docker remains the primary deployment method)
🚀 MeshMonitor v3.5.0
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:3.5.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.