Skip to content

v4.15.2-rc9

Pre-release
Pre-release

Choose a tag to compare

@Yeraze Yeraze released this 31 Aug 23:47
· 2 commits to main since this release
9eed368

MeshMonitor v4.15.2-rc9

⚠️ Pre-release — this is a release candidate. Please test in a non-production environment first and report issues.

Summary

This RC focuses on the Mesh Issues report and key-security correctness. The report page gets a full reorganization — a dashboard-style landing, sortable per-type tables, a by-node view, and bulk actions — plus a new test-reference doc explaining every A1/B2/C3 designator. Node references in findings are now clickable everywhere they appear (headers, member chips, "shared with" lists), open the DM thread on the right source, and a source picker fires when a node exists on multiple sources. B1 Router Cluster is tightened twice: it now requires the members' non-cluster clients to overlap significantly (a well-sited backbone stops flagging as redundant), and edges must be within the configurable distance guard so MQTT can't glue routers 100+ km apart into one finding. On the C1 side, source-blind reads in the key-mismatch path were producing false-positive keyMismatchDetected warnings and leaving old flags stuck forever; both are fixed, and migration 155 cleans up the stale rows. The 2.8-firmware renumber suppressor now also fires on a temporal-handoff signal, catching the MQTT-replay case where a gateway keeps rebroadcasting a node's pre-2.8 identity. Long free-text cells in the report now wrap at 28rem instead of stretching the table into horizontal scroll. Elsewhere: MQTT violations no longer false-positive on private brokers, MeshCore neighbours show a real "last heard" age, map-analysis trails render cleaner and autozoom correctly, measuring distance no longer intercepts map panning, and Indonesian joins the language picker.

Features

  • feat(i18n): ship the Indonesian translation and offer it in the picker (#5003)
  • feat(mesh-issues): clickable node references with source picker + Details-column wrap + 2.8 renumber MQTT-replay fix (#5002)
  • feat(mesh-issues): reorganize the report — dashboard, tables, by-node view, bulk actions (#4964) (#4981)

Bug Fixes

  • fix(key-security): scope keyMismatch reads by source; clear stale flags (#5001)
  • fix(mesh-issues): B1 requires client-overlap evidence, not just mutual audibility (#5000)
  • fix(map-analysis): improve trail rendering and autozoom (#3788) (#4999)
  • fix: preserve map panning while measuring distance (#4965) (#4998)
  • fix(analysis): annotate ok_to_mqtt violations with broker classification (#4982) (#4996)
  • fix(meshcore): age stored neighbour "last heard" instead of showing 0s ago (#4978) (#4979)
  • fix(mesh-issues): B1 router clusters are mutually-audible cliques with a distance guard (#4976) (#4977)

Docs

  • docs: add mesh issues test reference page (#4997)
  • docs: note known mqtt-proxy TLS field-name bug (#4995)

Dependencies

  • chore(deps): bump maplibre-gl from 6.4.1 to 6.6.0 (#4993)
  • chore(deps): bump the codeql-action group with 4 updates (#4992)
  • chore(deps-dev): bump @tanstack/react-query-devtools from 5.101.4 to 5.102.8 (#4991)
  • chore(deps): bump lucide-react from 1.33.0 to 1.35.0 (#4990)
  • chore(deps-dev): bump @typescript-eslint/parser from 8.67.0 to 8.68.0 (#4989)
  • chore(deps): bump @rollup/rollup-linux-arm64-musl from 4.62.5 to 4.63.1 (#4988)
  • chore(deps): bump otplib from 13.4.1 to 13.5.0 (#4987)
  • chore(deps): bump @rollup/rollup-linux-arm-gnueabihf from 4.62.5 to 4.63.0 (#4986)
  • chore(deps): bump protobufjs from 8.7.2 to 8.8.0 (#4985)
  • chore(deps): bump the production-dependencies group with 2 updates (#4984)
  • chore(deps-dev): bump the development-dependencies group with 6 updates (#4983)

Chore

  • chore: bump version to 4.15.2-rc9 (#5004)
  • chore: bump version to 4.15.2-rc8 (#4980)

Issues Resolved

  • #4994 [BUG] MQTT proxy does not recognize Meshtastic tls_enabled configuration
  • #4982 ok_to_mqtt Violations report: false positives for private MQTT brokers
  • #4978 [BUG] Meshcore Neighbors bug
  • #4976 B1 Router cluster merges far-apart routers via transitive chains
  • #4965 [BUG] Measure Distance: map pan intercepted as node selection

Upgrade Notes

  • Migration 155 runs automatically on first boot and clears stale keyMismatchDetected flags whose fingerprint matches the fixed source-blind read path (lastMeshReceivedKey IS NULL). Genuine current PKI failures will re-set the flag on the next failed DM.
  • The Mesh Issues report evidence for C1_key_security now includes a structured sharedWithNodes array alongside the legacy details string; the UI prefers the structured list and hides the raw string when both are present. Backward-compatible for consumers reading either field.

Full Changelog: v4.15.2-rc8...v4.15.2-rc9

🚀 MeshMonitor v4.15.2-rc9

📦 Installation

Docker (recommended):

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

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