Maintenance release: Traffic Management detection fix and a round of bug fixes.
Bug Fixes
- Traffic Management / Status Message shown "Unsupported" on capable firmware (#3457) — support is now gated on firmware version (Status Message ≥ 2.7.19, Traffic Management ≥ 2.7.22) instead of an unreliable presence check, so the modules show correctly on e.g. v2.7.24.
- MQTT nodes appeared nameless (#3456) — the per-packet "last heard" refresh no longer clobbers saved NodeInfo with blanks; MQTT-sourced node names now persist.
- Local-node module config refreshes were discarded (#3460) — the response handler was remote-node-only; local refreshes are now stored.
- Phantom channel swaps when two channels share a PSK and name (#3453) — ambiguous
(psk, name)pairs are skipped, preventing recurring message-attribution scrambling. - MeshCore auto-ack
{SNR}always blank (#3454) — RX SNR is now carried onto MeshCore message events so{SNR}resolves. - MeshCore device name stripped parentheses and emoji on save (#3450) — printable Unicode is preserved (capped to the 32-byte field on a character boundary).
Features
- Bridged-node detection disables OTA firmware update (#3455) and bridged-node advisories on MQTT/Network configuration (#3458) — MeshMonitor detects serial/BLE-only radios fronted by a TCP proxy and guides operators accordingly.
Docs
- LoRa Transmit Power help text clarified (#3459) — 0 = hardware default max safe power; negative values are permitted (signed field) but radio-dependent.
Full details in the changelog.
🤖 Generated with Claude Code
🚀 MeshMonitor v4.10.3
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:4.10.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.