Skip to content

Yeraze/meshmonitor

v4.6.3 Security

This release includes 1 security fix for security teams reviewing exposed deployments.

Published 14d Monitoring & Metrics
βœ“ No known CVEs patched
Read the diff β†’ Tool health β†’ What is this tool? β†’
This release patches 1 known CVE

Topics

meshcore meshtastic mqtt

Affected surfaces

auth rbac

ReleasePort's take

Light signal
editorial:auto 14d

v4.6.3 fixes blocking Linux LXC and baremetal installation failures and introduces per-source MQTT ACL enforcement on retroactive decryption.

Why it matters: Linux LXC and baremetal deployments must upgrade to install. MQTT users with sensitive channels should enable per-source ACLs and register channel_database permissions immediately.

Summary

AI summary

Broad release touches Bug Fixes, Issues Resolved, πŸš€ MeshMonitor v4.6.3, and meshcore.

Changes in this release

Security Medium

Enforce per-source ACLs on retroactive decrypt and register `channel_database` permission resource.

Enforce per-source ACLs on retroactive decrypt and register `channel_database` permission resource.

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

Confidence: low

β€”
Feature Medium

Optional zero-hop injection mode prevents RF rebroadcast of MQTT-bridged packets.

Optional zero-hop injection mode prevents RF rebroadcast of MQTT-bridged packets.

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

Confidence: high

β€”
Feature Medium

Scroll-position-aware infinite scrollback for MeshCore channels with "Jump to Bottom" button.

Scroll-position-aware infinite scrollback for MeshCore channels with "Jump to Bottom" button.

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

Confidence: high

β€”
Feature Medium

MQTT channel permissions routed through `channel_database`, keyed by channel name across all sources.

MQTT channel permissions routed through `channel_database`, keyed by channel name across all sources.

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

Confidence: low

β€”
Dependency Medium

Bump version to 4.6.3 and add v4.6.3 permissions blog post link.

Bump version to 4.6.3 and add v4.6.3 permissions blog post link.

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

Confidence: low

β€”
Deprecation Medium

Hide per-source `channel_0..7` toggles for MQTT scopes, directing admins to Virtual Channel Permissions.

Hide per-source `channel_0..7` toggles for MQTT scopes, directing admins to Virtual Channel Permissions.

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

Confidence: low

β€”
Bugfix Medium

Skip puppeteer Chrome download via `.npmrc` to fix Linux LXC and baremetal install failures.

Skip puppeteer Chrome download via `.npmrc` to fix Linux LXC and baremetal install failures.

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

Confidence: high

β€”
Bugfix Medium

Cascade bridge prune to parent MQTT broker source for consistent geo-membership state.

Cascade bridge prune to parent MQTT broker source for consistent geo-membership state.

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

Confidence: high

β€”
Bugfix Medium

Preserve tapback metadata across MQTT ingest and cross-source merges, stopping reaction flickering.

Preserve tapback metadata across MQTT ingest and cross-source merges, stopping reaction flickering.

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

Confidence: high

β€”
Bugfix Medium

Persist contact `advType` to `meshcore_nodes` for correct repeater target classification in remote-telemetry scheduler.

Persist contact `advType` to `meshcore_nodes` for correct repeater target classification in remote-telemetry scheduler.

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

Confidence: high

β€”
Bugfix Medium

Stamp `node.channel = CHANNEL_DB_OFFSET + dbId` on MQTT NODEINFO and POSITION ingest; gate `/traceroutes` and `/neighbor-info` endpoints by channel permissions.

Stamp `node.channel = CHANNEL_DB_OFFSET + dbId` on MQTT NODEINFO and POSITION ingest; gate `/traceroutes` and `/neighbor-info` endpoints by channel permissions.

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

Confidence: high

β€”
Bugfix Medium

Use Catppuccin variables for MQTT permissions hint banner, improving readability in light and dark themes.

Use Catppuccin variables for MQTT permissions hint banner, improving readability in light and dark themes.

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

Confidence: low

β€”
Other Medium

Drop worktree restriction from CLAUDE.md documentation.

Drop worktree restriction from CLAUDE.md documentation.

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

Confidence: low

β€”
Full changelog

MeshMonitor v4.6.3

Patch release focused on MQTT-source permissions and map visibility. v4.6.2 reworked MQTT ingest end-to-end so cross-source dedup and channel decryption finally work; v4.6.3 fixes the permission and rendering gaps that release exposed. The MQTT ingest path now stamps node.channel with the channel-database-encoded virtual channel id so the map filter can honor Virtual Channel Permissions; previously anonymous and non-admin viewers saw zero nodes on the map for MQTT sources regardless of what was granted. The traceroute and neighbor-info endpoints are now channel-gated, so the map no longer renders line segments between coordinates of nodes the user has no permission to view ("floating lines"). MeshCore contacts are now mirrored to meshcore_nodes on ingest so the remote-telemetry scheduler can correctly classify repeater targets β€” closes the user-visible part of #3092 for deployments with repeaters that don't anonymously answer LPP requests. Unified Messages now keeps tapback metadata across multi-source merges so reactions stop flickering between rendering as emoji pills and full inline messages. A long-standing puppeteer install failure on Linux LXC / baremetal was fixed by skipping the Chrome download via .npmrc. Companion features include an opt-in MQTT-broker zero-hop injection mode (prevent RF rebroadcast of MQTT-bridged packets), scroll-position-aware infinite scrollback for MeshCore channels, and a Catppuccin restyle of the MQTT permissions hint banner.

Features

  • #3100 feat(mqtt-broker): optional zero-hop injection to prevent RF rebroadcast of MQTT-bridged packets (closes #3084)
  • #3102 feat(meshcore): scroll-position-aware infinite scrollback for MeshCore channels with "Jump to Bottom" button (closes #3101)
  • #3108 feat(mqtt): route MQTT channel permissions through channel_database so MQTT-source access is keyed by channel name across all sources, not by per-source slot. Hides the channel_0..7 toggles for MQTT scopes and directs admins to Virtual Channel Permissions.

Bug Fixes

  • #3098 fix(install): skip puppeteer Chrome download via .npmrc so installs no longer fail on Linux LXC, Raspbian baremetal, and other environments without GUI dependencies (closes #3097)
  • #3103 fix(security): enforce per-source ACLs on retroactive decrypt; register the channel_database permission resource
  • #3104 fix(prune-roi): cascade bridge prune to the parent mqtt_broker source so geo-membership state stays consistent across linked sources
  • #3105 fix(unified): preserve tapback metadata (emoji, replyId) across MQTT ingest + cross-source merge β€” reactions no longer flicker between rendering as emoji pills and as full inline messages
  • #3107 fix(meshcore): persist contact advType to meshcore_nodes so the remote-telemetry scheduler can correctly classify repeater targets and route them through the SendStatusReq + guest-login paths added in #3094 (closes #3092)
  • #3109 fix(users): use Catppuccin variables for the MQTT permissions hint banner so it's readable in both light and dark themes
  • #3110 fix(mqtt): stamp node.channel = CHANNEL_DB_OFFSET + dbId on MQTT NODEINFO and POSITION ingest so the map filter honors Virtual Channel Permissions, and channel-gate the /traceroutes and /neighbor-info endpoints so non-admins no longer see traceroute / neighbor lines floating between hidden nodes

Docs

  • #3106 docs(claude): drop worktree restriction from CLAUDE.md
  • #3111 chore(release): bump version to 4.6.3 (this release) β€” also adds the v4.6.3 permissions blog post

Issues Resolved

  • #3084 β€” [FEAT] MQTT Broker: Optional zero-hop injection
  • #3092 β€” [BUG] MeshCore telemetry retrieval fails on every repeater (meshcore-only setup) β€” final fix; the in-memory contact advType is now persisted so the scheduler picks the repeater paths
  • #3097 β€” 4.6.2-1 install fails on Linux LXC: Puppeteer Chrome extraction error
  • #3101 β€” MeshCore channel display: implement infinite scrollback

Upgrade notes

Action required if you have anonymous or non-admin map viewers on MQTT sources:

  1. Open Users β†’ Permissions β†’ scope to each MQTT source. The channel_0..7 grid is now hidden for MQTT scopes; a banner directs you to Virtual Channel Permissions below.
  2. Scroll down to Virtual Channel Permissions and grant View on Map and Read on the relevant channel_database rows (e.g. LongFast, MediumFast) for each user (including Anonymous if applicable).
  3. Existing nodes with channel=NULL will recover as each MQTT node re-broadcasts NODEINFO (typically every few hours). If you don't want to wait, restart the MQTT broker / bridge container.

MeshCore repeater telemetry: if you have repeaters with Telemetry Retrieval enabled and were seeing only LPP timeouts on v4.6.2 (issue #3092), 4.6.3 finally activates the SendStatusReq + guest-login paths shipped in v4.6.2's #3094 β€” they were never being invoked because advType wasn't being persisted to the database.

Full Changelog

https://github.com/Yeraze/meshmonitor/compare/v4.6.2-1...v4.6.3

πŸš€ MeshMonitor v4.6.3

πŸ“¦ Installation

Docker (recommended):

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

Security Fixes

  • Fix #3103: enforce per-source ACLs on retroactive decrypt and register `channel_database` permission resource

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]