Skip to content

Yeraze/meshmonitor

v4.9.2 Feature

This release adds 2 notable features 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

Summary

AI summary

Updates Bug Fixes, Issues Resolved, and πŸš€ MeshMonitor v4.9.2 across a mixed release.

Changes in this release

Feature Medium

Adds drag-and-drop reordering of Sources list on Unified View.

Adds drag-and-drop reordering of Sources list on Unified View.

Source: llm_adapter@2026-06-06

Confidence: high

β€”
Feature Medium

Introduces MeshCore Notifications tab with inactive-node and new-node alerts.

Introduces MeshCore Notifications tab with inactive-node and new-node alerts.

Source: llm_adapter@2026-06-06

Confidence: high

β€”
Bugfix Medium

Fixes `migrate-db` table ordering drift and missing tables in schema migration.

Fixes `migrate-db` table ordering drift and missing tables in schema migration.

Source: llm_adapter@2026-06-06

Confidence: high

β€”
Bugfix Medium

Repairs Channels tab layout on installed iOS PWAs.

Repairs Channels tab layout on installed iOS PWAs.

Source: llm_adapter@2026-06-06

Confidence: high

β€”
Bugfix Medium

Prevents channel reordering from mixing MeshCore and Meshtastic channels.

Prevents channel reordering from mixing MeshCore and Meshtastic channels.

Source: llm_adapter@2026-06-06

Confidence: high

β€”
Full changelog

MeshMonitor v4.9.2

A focused follow-up to v4.9.1 that adds drag-and-drop reordering of the Sources list on the Unified View and brings the Notifications experience to MeshCore sources, plus three fixes. Admins can now reorder source cards in the Dashboard sidebar, with the order persisted server-side and shared across all viewers. MeshCore sources gain a dedicated, source-type-aware Notifications tab and now fire inactive-node and new-node alerts. The release also corrects the migrate-db table ordering, repairs the Channels tab layout on installed iOS PWAs, and prevents channel reordering from bleeding channels between MeshCore and Meshtastic sources.

Features

  • Reorderable Sources list on the Unified View (#3342) β€” Admins can drag-and-drop the source cards in the Dashboard / Unified View sidebar to control their order, mirroring the existing channel-reorder UX. The order is stored server-side (new sources.displayOrder column, migration 081) so it is shared across all viewers; a grab handle only appears for users with sources:write. The Unified aggregate card stays pinned at the top and is not draggable, and new sources append to the end of the list. Resolves #3338.
  • MeshCore Notifications space + inactive-node & new-node alerts (#3339) β€” MeshCore sources now have a dedicated, source-type-aware Notifications tab showing only the controls that apply (voltage mV low-battery threshold, inactive-node, new-node, server events, monitored-node picker, Web Push / Apprise). Inactive-node alerts now fire for MeshCore (reading meshcore_nodes.lastHeard in ms), and "new node discovered" alerts trigger on the first real-time contact advert (de-duplicated per public key, with device-type labels). The Meshtastic notifications page no longer shows the irrelevant mV field. Relates to #3331.

Bug Fixes

  • migrate-db TABLE_ORDER out of sync with the schema (#3341) β€” The SQLite β†’ PostgreSQL/MySQL migration CLI's explicit table ordering had drifted: nine 4.x tables were missing and a stale key_repair_state entry referenced a table that never existed. They now have explicit FK-safe positions, the new source-scoped tables participate in the sourceId backfill, and a regression test enumerates the Drizzle schema to fail CI if a future table is added without being registered. Resolves #3337.
  • Channels tab layout broken on installed iOS PWAs (#3336) β€” On the Channels tab in an installed iOS PWA the message list grew without bound and a large dead-space gap remained below the input. Fixed with iOS-WebKit-specific corrections: min-height: 0 on .app-main, a deterministic measured pixel height for the message list (ResizeObserver), and removal of the position: sticky send bar that resolved against the safe-area-inset viewport. Regression from the #3307 PWA dead-space fix.
  • Channel reorder could replace a Meshtastic channel with a MeshCore one (#3335) β€” The POST /api/channels/reorder handler read channels with an unscoped getAllChannels() and keyed them into a slot-indexed map; since MeshCore and Meshtastic channels share the channels table and both use slot ids 0-7, a MeshCore channel could win the lookup and be written to the Meshtastic device. The reorder read and writes are now scoped to the source being edited.

Other

  • Translations update from Hosted Weblate (#3244)

Issues Resolved

  • #3338 β€” Reorderable Sources list on the Unified View page
  • #3337 β€” migrate-db.ts TABLE_ORDER out of sync with the current schema

Full changelog: https://github.com/Yeraze/meshmonitor/compare/v4.9.1...v4.9.2

πŸš€ MeshMonitor v4.9.2

πŸ“¦ Installation

Docker (recommended):

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

πŸ§ͺ Testing

βœ… All tests passed (Node 20/22/24/25, SQLite/PostgreSQL/MySQL)
βœ… TypeScript checks passed
βœ… Hardware system tests passed
βœ… Docker images built for linux/amd64, linux/arm64, linux/arm/v7

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.13.0 Source‑scoped API endpoints now require an explicit `sourceId` parameter.
  • v4.13.0 Auto-Upgrade is retired; remove upgrade sidecar and related config.
  • v4.7.2 Route `destination` field now rejects non‑8‑hex nodeId or 64‑hex publicKey, returning HTTPβ€―400.

Beta — feedback welcome: [email protected]