Skip to content

Yeraze/meshmonitor

v4.6.2 Breaking

This release includes 1 breaking change for platform teams planning a safe upgrade.

Published 15d 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

auth

Summary

AI summary

Broad release touches Refactoring, Issues Resolved, Upgrade notes After upgrading, and πŸš€ MeshMonitor v4.6.2.

Changes in this release

Feature Medium

Full source-scoped MQTT ingest with channel decryption and unified-view fixes.

Full source-scoped MQTT ingest with channel decryption and unified-view fixes.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: high

β€”
Feature Medium

Apply modem-preset display name to per-source channels view for empty-name slot 0.

Apply modem-preset display name to per-source channels view for empty-name slot 0.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: high

β€”
Feature Medium

Remove Meshtastic IP requirement from Desktop first-run setup.

Remove Meshtastic IP requirement from Desktop first-run setup.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: low

β€”
Dependency Medium

Bump lucide-react from 1.14.0 to 1.16.0.

Bump lucide-react from 1.14.0 to 1.16.0.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: low

β€”
Dependency Medium

Bump protobufjs from 8.2.0 to 8.3.0.

Bump protobufjs from 8.2.0 to 8.3.0.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: low

β€”
Dependency Medium

Bump better-sqlite3 from 12.9.0 to 12.10.0.

Bump better-sqlite3 from 12.9.0 to 12.10.0.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: low

β€”
Bugfix Medium

Fix repeater telemetry via SendStatusReq and guest-login fallback.

Fix repeater telemetry via SendStatusReq and guest-login fallback.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: high

β€”
Bugfix Medium

Clear recovery message on SQLITE_CORRUPT migration failure.

Clear recovery message on SQLITE_CORRUPT migration failure.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: low

β€”
Refactor Medium

Drop dead sourceId column from channel_database and move UI to Global Settings.

Drop dead sourceId column from channel_database and move UI to Global Settings.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: high

β€”
Other Medium

Refresh CLAUDE.md, README, and CHANGELOG for version 4.6.1 accuracy.

Refresh CLAUDE.md, README, and CHANGELOG for version 4.6.1 accuracy.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: low

β€”
Other Medium

Bump version to 4.6.2 including release blog post and news.json entry.

Bump version to 4.6.2 including release blog post and news.json entry.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: low

β€”
Other Medium

Bump puppeteer from 24.43.0 to 25.0.2.

Bump puppeteer from 24.43.0 to 25.0.2.

Source: granite4.1:8b-q6_K@2026-05-20

Confidence: low

β€”
Full changelog

MeshMonitor v4.6.2

Patch release focused on MQTT ingest completeness and channel-name UX. MQTT bridges and brokers now ingest the full set of Meshtastic portnums (text, telemetry, position, nodeinfo, traceroute, neighbor info, paxcounter, store-and-forward) with proper per-source attribution and server-side channel decryption β€” receptions of the same mesh packet on TCP and MQTT now dedup into a single Unified Messages entry with all sources listed. Empty-named slot 0 now displays as the modem preset's firmware label (MediumFast, LongFast, etc.) instead of the synthetic "Primary", matching what MQTT gateways publish under and collapsing the TCP and MQTT views of the same channel into one picker entry. The Channel Database is now genuinely global (PSKs apply to decryption across all sources), with the dead sourceId column dropped and management moved from the per-source Channels tab to Global Settings. A Meshcore repeater-telemetry regression was fixed via SendStatusReq + guest-login fallback. The Desktop first-run flow no longer requires a Meshtastic IP. See the release blog post for the three user-visible changes you'll notice immediately.

Features

  • #3089 feat(mqtt): full source-scoped ingest with channel decryption and unified-view fixes β€” Auto-bootstraps the LongFast PSK into channel_database, decrypts encrypted packets server-side, adds TRACEROUTE_APP / NEIGHBORINFO_APP / PAXCOUNTER_APP / STORE_FORWARD_APP handlers, pre-seeds the geo-membership cache with trusted local-mesh nodes and in-bbox positions, fixes telemetry source attribution in /api/unified/telemetry, and aligns MQTT message row IDs with the TCP convention so cross-source dedup collapses TCP + MQTT receptions of the same packet into one Unified Messages entry.
  • #3093 feat(channels): apply modem-preset display name to per-source channels view β€” transformChannel now emits a displayName field that uses the source's persisted lora.preset for empty-name slot 0 (firmware-spec label MediumFast / LongFast / etc.), falling back to "Primary" only when no preset is known.
  • #3088 feat(desktop): remove Meshtastic IP requirement from first-run setup β€” Desktop can now start with no source configured and add one through the UI.

Bug Fixes

  • #3094 fix(meshcore): repeater telemetry via SendStatusReq + guest-login fallback β€” Resolves #3092 (telemetry retrieval failing on every Meshcore repeater).
  • #3086 fix: clear recovery message on SQLITE_CORRUPT migration failure β€” The recovery message now clears correctly when migrations succeed after a prior corruption.

Refactoring

  • #3091 refactor(channel-db): drop dead sourceId column (migration 063) and move UI to Global Settings β€” channel_database PSKs were already global (decryption tries every enabled row regardless of source), so the per-row sourceId was misleading dead weight. Drops the column, removes the Channels-tab UI entry point, and surfaces management under Global Settings.

Dependencies

  • #3069 chore(deps): bump lucide-react from 1.14.0 to 1.16.0
  • #3070 chore(deps): bump protobufjs from 8.2.0 to 8.3.0
  • #3072 chore(deps): bump better-sqlite3 from 12.9.0 to 12.10.0
  • #3071 chore(deps-dev): bump puppeteer from 24.43.0 to 25.0.2

Docs

  • #3090 docs: refresh CLAUDE.md, README, CHANGELOG for 4.6.1 accuracy

Release

  • #3095 chore(release): bump version to 4.6.2 β€” includes the v4.6.2 release blog post and news.json entry.

Issues Resolved

  • #3092 [BUG] MeshCore telemetry retrieval fails on every repeater (meshcore-only setup, v4.6.1)
  • #3085 [SUPPORT] 4.6.1 on Raspbian baremetal
  • #3042 [BUG] No upgrade since 4.5.0

Upgrade notes

After upgrading:

  1. Glance at your Channels tab so the rename from "Primary" to your preset's label isn't a surprise.
  2. Open Global Settings β†’ Channel Database to confirm the auto-seeded LongFast row landed. Add any private-channel PSKs you want MeshMonitor to decrypt.
  3. Re-check Unified Messages and Unified Telemetry β€” your feed should now include MQTT-sourced data for nodes inside your configured bbox.

Full Changelog: https://github.com/Yeraze/meshmonitor/compare/v4.6.1...v4.6.2

πŸš€ MeshMonitor v4.6.2

πŸ“¦ Installation

Docker (recommended):

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

Breaking Changes

  • Dropped `sourceId` column from `channel_database` and moved channel management to Global Settings

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]