MeshMonitor v4.16.1-rc6
⚠️ Pre-release. This is a release candidate for testing. Expect rough edges and report problems before 4.16.1 ships.
Summary
This candidate is mostly about scripts and channels. Script authors can now declare a version in their script's mm_meta block, the User Scripts Gallery reads it straight from the author's repository, and Settings → Scripts can ask each script's source which version it publishes. When one is newer an admin sees the offer and presses Update; the replaced file is kept so it can be rolled back. Nothing updates on its own, so third-party code never changes under an operator without a click. Module config sections now follow the device's own excluded_modules bitmask instead of a firmware version guess, so a reduced build no longer offers settings for modules it does not carry. On the channels side, a channel that moved slots no longer leaves its messages behind, edits made in MeshMonitor show up without a restart, and the mobile Channels view gets its own action row and a one-line composer. Saving an MQTT broker source no longer wedges for minutes when clients are connected. The MeshCore admin console now explains itself when a proxy hands back a web page instead of JSON.
Upgrade notes
- No migration in this candidate.
- Script updates are opt-in by hand. A script is only checkable when MeshMonitor can tell where it came from: a
source:line in itsmm_meta, a GitHub path an admin enters in Settings → Scripts, or a gallery entry matched by filename. - Updates and rollbacks need
settings:write; seeing update status needssettings:read.
Features
- feat(scripts): check installed scripts for updates, and install one on request (#5255) — #5274
- feat(scripts): show script versions in the gallery, read from the author's mm_meta (#5255) — #5272
- feat(config): gate module sections on the device's excluded_modules bitmask (#5065) — #5273
- feat(channels): give mobile its own action row, collapse the composer to one line (#5265) — #5267
Bug Fixes
- fix(channels): stop shared-key channels swallowing history; show local edits without a restart (#5183) — #5269
- fix(mqtt): stop the broker without hanging on connected clients (#5264) — #5266
- fix(meshcore): surface a clear error when admin console gets HTML instead of JSON (#5268) — #5270
CI/DevOps
- chore(release): bump to 4.16.1-rc6 — #5278
Issues Resolved
- #5065 Gate module config sections on DeviceMetadata.excluded_modules instead of firmware version checks
- #5264 MQTT broker save wedges for ~6 min after repeated saves
- #5265 Mobile: re-layout Channels header + composer row for better fit
- #5268 Unexpected token '<', "<!DOCTYPE "... is not valid JSON
Still open: #5255 covers optional auto-update. This candidate ships the manual half only — checking, updating on request, and rollback. Whether MeshMonitor should ever apply an update without a human is still undecided.
Full Changelog: v4.16.1-rc5...v4.16.1-rc6
🚀 MeshMonitor v4.16.1-rc6
📦 Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:4.16.1-rc6🧪 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.