Skip to content

Yeraze/meshmonitor

v4.0.2 Feature

This release adds 1 notable feature for engineering teams evaluating rollout.

Published 1mo Monitoring & Metrics
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

meshcore meshtastic mqtt

Affected surfaces

breaking_upgrade

Summary

AI summary

Fixed PostgreSQL migration failure and MySQL upgrade crash that blocked saving notification preferences on secondary sources.

Full changelog

MeshMonitor v4.0.2

Summary

This release is a follow-up to the v4.0.1 hotfix and continues hardening the new multi-source architecture introduced in 4.0. It fixes a Postgres upgrade failure where migration 028 left a legacy single-column UNIQUE constraint on user_notification_preferences.userId that blocked saving notification preferences on any non-default source. It scopes several remaining tabs and queries to the active source — Notifications, Settings, the Virtual Node info panel, and the latest-telemetry-value rollup — fixing cases where users on Source 2+ saw default-source data. It resolves an upgrade-time crash on MySQL where migration 037 attempted to recreate a foreign key with a duplicate name, plus a startup crash in the packet-log retention timer. The unified channel/messages experience now correctly saves channel names, routes cross-source actions to the right node, and stops the source picker from drifting. The Messages composer now supports multi-line input (Enter sends, Shift+Enter inserts a newline). On the database side, composite indexes back the hot per-source query patterns and the default Postgres/MySQL pool size has been raised to keep up with per-source polling fan-out.

Bug Fixes

  • fix(notifications): scope channels per-source + drop legacy unique constraint (#2843)
  • fix(settings): scope per-source reads to per-source namespace only (#2842)
  • fix(upgrade): MySQL migration 037 FK + packet-log timer crash (#2838)
  • fix(unified): channel-name save, cross-source routing, picker drift (#2837)
  • fix(info): show per-source admin commands status in Virtual Node panel (#2835)
  • fix(telemetry): scope getLatestTelemetryValueForAllNodes by sourceId (#2834)
  • fix(sources): remove FE virtualNode port == source port block (#2832)

Features

  • feat(messages): multi-line compose — Enter sends, Shift+Enter inserts a newline (#2841)

Performance

  • perf(db): composite indexes for hot query patterns + raise default PG/MySQL pool size (#2833)

Release

  • chore(release): bump version to 4.0.2 (#2844)

Issues Resolved

  • #2836 — v4.0.1 hotfix: migration 32/33 hang on MySQL upgrade
  • #2768 — Incorrect value on last-traced time
  • #2723 — v4.0.0-beta5: all connected nodes use the same script settings

Upgrade Notes

  • PostgreSQL users who saw duplicate key value violates unique constraint "user_notification_preferences_userId_key" when saving notification preferences on a secondary source: this is fixed by new migration 051, which runs automatically at startup and drops the legacy single-column UNIQUE.
  • MySQL users upgrading from 3.12 → 4.0 who hit the migration 037 foreign-key error or a server crash from the packet-log timer: this is fixed by #2838 and the upgrade should now complete cleanly.
  • No manual action required for either fix — both are covered by the automatic migration runner on startup.

Full Changelog: https://github.com/Yeraze/meshmonitor/compare/v4.0.1...v4.0.2

🚀 MeshMonitor v4.0.2

📦 Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:4.0.2

🧪 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.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Yeraze/meshmonitor

Get notified when new releases ship.

Sign up free

About Yeraze/meshmonitor

All releases →

Related context

Earlier breaking changes

  • v4.7.2 Route `destination` field now rejects non‑8‑hex nodeId or 64‑hex publicKey, returning HTTP 400.

Beta — feedback welcome: [email protected]