Skip to content

v4.12.0-rc2

Pre-release
Pre-release

Choose a tag to compare

@Yeraze Yeraze released this 26 Jun 02:20
· 9 commits to main since this release
d36cf11

MeshMonitor v4.12.0-rc2

⚠️ Pre-release / release candidate. Built for testing the 4.12.0 line — not recommended for production. Please report issues.

Summary

This second 4.12.0 release candidate rolls up a large body of multi-source, MeshCore, and Automation work on top of rc1. MeshCore region discovery now actually works end-to-end: it queries only nearby (0-hop) repeaters and routes the request directly so repeaters answer it, and received messages now show the scope/region, hop count, and relay route they arrived on. The Automation Engine gains a "Run a script" action with JSON result variables, cron-scheduled triggers, a geofence map editor, multi-source/unified-channel sends, and {{ }} token highlighting/validation. A cluster of multi-source correctness and security fixes landed — cross-source permission and channel-scoping leaks closed, the "messages vanish after ~1 minute" dedup regression fixed, node identity hidden from unauthenticated users, and manual backups scoped to the selected source. MQTT channel handling was consolidated to identify channels by name + key (no more duplicate raw-slot entries), and a PostgreSQL channel_database tombstone-exhaustion migration failure was fixed. Traceroutes now route over the correct default-keyed channel, and the Map/Map-Analysis views got richer multi-source popups plus a spiderfy auto-collapse fix. Also includes the unmessagable-node DM-UI fix and a dashboard rate-limit (429) fix when toggling sources.

Features

  • MeshCore: query only 0-hop repeaters for region discovery + route the query direct (#3765, #3743)
  • MeshCore: show the scope/region a received message was sent with (#3762) and hop count + relay route below received messages (#3750) — #3742
  • MeshCore: per-message scope/region override (#3704, #3701)
  • MeshCore: unread message indicator on the Channels view (#3716, #3703)
  • MeshCore: channel "heard repeaters" via self-echo correlation (#3707, #3700)
  • Automations: "Run a script" action + JSON result variables (#3746, #3653)
  • Automations: fire trigger.schedule on a cron schedule (#3726)
  • Automations: geofence map editor, multi-source/unified-channel send, builder/test-panel UX (#3721)
  • Automations: highlight {{ }} tokens + flag typos in builder text fields (#3727)
  • Map: filter out Null Island (0,0) positions (#3764, #3763)
  • Map Analysis: rich multi-source node popups matching the Unified map (#3692)

Bug Fixes

  • Messaging: no DM UI for MeshCore repeaters & Meshtastic unmessagable nodes (#3760, #3766, #3755)
  • Unified feed: append-only message feed so windowing can't evict a seen message (#3738) and prevent messages vanishing in multi-source feed (#3736) — #3719, #3720
  • Security: scope channel-permission node filter by sourceId (#3749, #3745); scope dashboard local-node injection lookup to the source (#3757)
  • Channels: scope channel queries, mark-read & message migration by sourceId (#3717, #3712)
  • Auth: hide node identity from unauthenticated users in header and poll API (#3730, #3729)
  • MQTT: consolidate channels by name (#3708, #3709); identify channels by name AND key (#3713); attribute same-key channels by packet hash (#3754)
  • Migration: rebuild channel_database on PostgreSQL tombstone exhaustion (#3753, #3751)
  • Traceroute: route over the default-keyed channel + channel dropdowns (#3723); always send on Primary (#3699) — #3696
  • MeshCore: keep CLI command-line focus after send (#3761, #3752); resolve room-server author full public key (#3733); {ROUTE}/{SNR} resolve on routed channel messages (#3737, #3715, #3710); unified radio-op lock (#3728, #3725); serialize 0x8C binary-response consumers (#3722); Discover Regions Sent-payload fix (#3702); stop virtual node server on teardown (#3706); honor packet-monitor Max count (#3693, #3690)
  • Meshtastic: resolve position-packet channel from decryption context (#3694, #3682)
  • Map: spiderfy fix + stop auto-collapse on Map Analysis & Unified maps (#3687, #3685)
  • Automations: don't flag valid-but-wrong-trigger {{ }} tokens as typos (#3739)

Performance

  • Dashboard: batch per-source reads to fix source-toggle 429s without exempting GETs (#3748, #3735)

CI / Chore

  • watch-ci.sh inspects only runs for the current head commit (#3747)
  • Version bumps to 4.12.0-rc1 (#3695) and 4.12.0-rc2 (#3767)

Issues Resolved

Closes #3763, #3755, #3752, #3751, #3745, #3744, #3743, #3740, #3735, #3734, #3732, #3729, #3725, #3720, #3719, #3712, #3711, #3710, #3709, #3703, #3701, #3700, #3698, #3696, #3690, #3689, #3685, #3682.

Thanks

Thanks to the community testers and issue reporters who drove the MeshCore region/scope and multi-source work this cycle — especially @m0urs for detailed, persistent reports on region discovery and channel behavior.

Full changelog: v4.12.0-rc1...v4.12.0-rc2

🚀 MeshMonitor v4.12.0-rc2

📦 Installation

Docker (recommended):

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

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