What's Changed
New Features
- Custom MapLibre style JSON upload & switcher — Upload or fetch MapLibre GL style JSON files and switch between them via a dropdown on the map when using vector tilesets. Styles are persisted as server default with per-browser override. (#2492)
- Native desktop notifications for Tauri app — Replaces web push (which requires SSL) with native OS notifications via node-notifier. Same user preference filtering, triggered server-side. (#2518)
Bug Fixes
- Tile server CORS fix — Test Connection now routes through the backend proxy, eliminating the add-bogus-URL-reload-edit workaround when adding custom tileservers (#2493)
- Node list timestamp accuracy —
lastHeardnow uses server time instead of devicerxTime, fixing incorrect "last seen" times when the local node's clock drifts (#2494) - Neighbor timestamp normalization — Handles mixed seconds/milliseconds in old
neighbor_infodata so "Last Seen" in neighbor popups no longer shows 1970 dates (#2514, closes #2458) - SNR 0 dB MQTT misclassification — Pure RF links with SNR exactly 0 dB are no longer incorrectly classified as MQTT/IP (#2515, closes #2512)
- TypeScript 6 compatibility — Added CSS type declarations required by TS 6's stricter import checking (#2517)
- Desktop build path length — Fixed NSIS installer failure on Windows by using production-only node_modules (#2519)
Maintenance
- Protobufs v2.7.20 — New hardware models (TBEAM_BPF, MINI_EPAPER_S3, TDISPLAY_S3_PRO), LORAWAN_BRIDGE port, SCD30 sensor, TAKConfig module (#2495)
- MySQL service in release pipeline — Fixes release test failures (#2491)
- Dependency updates — TypeScript 6, i18next 26, react-i18next 17, lucide-react 1.x, xmldom 0.9, rollup patch, CI action bumps
- Translations — Updated from Hosted Weblate (#2482)
- Docs — Emacs client added to README (#2513)
Full Changelog: v3.11.0...v3.11.1
🚀 MeshMonitor v3.11.1
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:3.11.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.