MeshMonitor v4.16.1-rc2
⚠️ Pre-release. This is a release candidate for testing. Docker images are published without the
:latesttag. Report anything you find on Discord or as a GitHub issue.
A mobile-focused bugfix candidate. Most of this RC came from one reporter working through MeshMonitor on an iPhone in portrait, and it fixes five separate ways the UI broke at that width: Security page tables that clipped their right-hand columns and dragged the whole layout sideways instead of scrolling, Packet Distribution time-range buttons with an unreachable "All Data", telemetry charts whose fixed-size markers turned a day of samples into a solid band, a donut tooltip cut off mid-value, and issue-card text printing on top of itself. The last of those turned out not to be a Security page bug at all — .node-info and .node-name are claimed by two other global stylesheets that both force display: flex, which collapsed the node name to zero width on every issue-card type. On the backend, NodeInfo Enrichment no longer oscillates: hwModel: 0 is HardwareModel.UNSET, a value the nodes repository refuses to store, so the analyzer kept offering a copy that was silently dropped and the count could never reach zero. The same fix stops a mesh-visible symptom — with "Also push to device NodeDB" enabled, every Fix All press re-sent a NodeInfo request per stuck target, addressed on the donor's channel number rather than the target's, which produced a flood of NO_CHANNEL (6) routing errors. Also in this RC: the Add Widget picker scrolls, Apprise survives an early client disconnect, and the DM list falls back to sorting by lastHeard.
Bug Fixes
- #5200 — Security issue cards printed their node name on top of the node ID on mobile. Two global class collisions (
AppHeader.css.node-info,nodes.css.node-name) forced a flex row; the guard is now scoped to.security-tab .issue-header. - #5199 — Mobile layout and readability across three reports (#5194, #5195, #5196): Security tables scroll inside their own cards, the Packet Distribution toolbar wraps, the donut tooltip escapes its chart box, and telemetry markers scale to the space each point gets — full size when sparse, small when tight, line-only when they would overlap.
- #5198 — NodeInfo Enrichment count oscillated on repeated Fix All (#5193), and the device push addressed the wrong channel.
- #5192 — Add Widget picker modal is scrollable, so widgets past the first viewport are reachable (#5191).
- #5185 — Apprise swallows
BrokenPipeErrorwhen a client disconnects early (#5184). - #5143 — DM list sorts nodes by
lastHearddescending as a fallback. Thanks @joroses!
CI / DevOps
- #5189 — Test suites no longer lose a console-RPC race in release and PR CI.
Issues Resolved
- #5196 — Info page telemetry charts nearly unreadable on mobile due to compressed X-axis
- #5195 — Info page Packet Distribution time-range buttons clip off viewport on mobile
- #5194 — Security page tables clip right-hand columns on mobile with no horizontal scroll
- #5193 — NodeInfo Enrichment count oscillates on repeated Fix All
- #5191 — Mobile: Add Widget picker modal cannot be scrolled
- #5184 — Apprise broken pipe error (embedded)
New Contributors
Upgrade Notes
No breaking changes, no migrations, no configuration changes. Upgrade in place.
Users who had been pressing Fix All on NodeInfo Enrichment against a count that would not settle should see it converge now. If it still does not, the server log will say so directly — a copy that does not survive the write is reported as did not persist rather than passing silently.
Full changelog: v4.16.1-rc1...v4.16.1-rc2
🚀 MeshMonitor v4.16.1-rc2
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:4.16.1-rc2🧪 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.