github Yeraze/meshmonitor v4.7.3

6 hours ago

MeshMonitor v4.7.3

This release brings significant MQTT bridge enhancements, multi-source bug fixes, and UI improvements. The MQTT bridge now supports per-gateway publisher pools, upstream identity modes, direction mode control for quiet publish-only servers, and honors the ok_to_mqtt bit on uplink. Several per-source scoping bugs were fixed including security key display in Device Configuration, channel database visibility, and permission grid rendering. Message sorting now uses server-side receipt time rather than the sender clock, preventing out-of-order displays. MeshCore sources gain a collapsible node list on the Direct Messages view and improved telemetry labels. The user permission system has been refined with separate Read/Write checkboxes for Connection permissions. Unified pages can now be set as the default landing page.

Features

  • feat(mqtt-bridge): per-gateway publisher pool (default on) (#3200)
  • feat(mqtt-bridge): honor ok_to_mqtt bit on uplink (default on) (#3204)
  • feat(mqtt-bridge): direction mode dropdown — quiet publish-only public servers (#3189)
  • feat(dashboard): bridge form control for upstream identity mode (#3202)
  • feat(dashboard): per-gateway publisher status badge on bridge cards (#3203)
  • feat(mqtt): bridge topic rewrites managed from broker settings (#3173)
  • feat(meshcore): collapsible node list on Direct Messages view (#3193)
  • feat(channel-db): import channels from a Meshtastic URL (#3191)
  • feat(settings): allow unified pages as default landing destinations (#3194)

Bug Fixes

  • fix(config): scope security key fetch by sourceId (#3207)
  • fix(mqtt-bridge): resolve save hang and add reconnect backoff (#3206)
  • fix(meshcore): pretty telemetry labels + auto-login spam + DM page-scroll layout (#3205)
  • fix(users): render only configured channels in the permission grid (#3201)
  • fix(users): split Connection permission into separate Read/Write checkboxes (#3199)
  • fix(server): skip auto-upgrade check while migrations are still running (#3196)
  • fix(messages): sort by server-side receipt time, not sender clock (#3190)
  • fix(nodes): reject out-of-range nodeNum + resolve publicKey destinations (#3188)
  • fix(channel-db): drop legacy psk_length CHECK constraint blocking MQTT bootstrap (#3185)
  • fix(channels): hide global Channel Database entries in per-source view (#3175)

Refactoring

  • revert(mqtt): restore v4.6.6 per-source dashboard (#3172)

Dependencies

  • chore(deps): bump the production-dependencies group with 9 updates (#3182)
  • chore(deps): bump protobufjs from 8.3.0 to 8.4.2 (#3181)
  • chore(deps): bump pg from 8.20.0 to 8.21.0 (#3180)
  • chore(deps): bump helmet from 8.1.0 to 8.2.0 (#3179)
  • chore(deps-dev): bump the development-dependencies group with 3 updates (#3176)

Translations

  • Translations update from Hosted Weblate (#2996)

Issues Resolved

  • #3197 — MQTT bridge: per-gateway identity for upstream connections
  • #3192 — Collapsible node list on Node DM page for MeshCore sources
  • #3187 — Nodes with bad time stay at the bottom of channels tab
  • #3186 — nodeNum overflow causes DrizzleQueryError for bigint
  • #3184 — MQTT channel_database bootstrap fails with CHECK constraint
  • #3183 — Option to set Unified Messages as default landing page

Full Changelog: v4.7.2...v4.7.3

🚀 MeshMonitor v4.7.3

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:4.7.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.

Don't miss a new meshmonitor release

NewReleases is sending notifications on new releases.