Skip to content

v4.14.1

Latest

Choose a tag to compare

@Yeraze Yeraze released this 13 Aug 12:27
· 2 commits to main since this release
87bbf72

MeshMonitor v4.14.1

The headline of this release is the Meshtastic ↔ MeshCore Automation Bridge, you can now relay text between a Meshtastic channel and a MeshCore channel with a single click, built entirely on the Automation Engine rather than a native bridge. A new in-app Automation Template Gallery ships click-to-install templates (an MT↔MC Bridge and an Auto-Ack), a new {{ trigger.protocolShort }} token tags relayed messages MT@/MC@, and layered loop/flood safeguards (a per-automation rate limit, a MeshCore cross-source self-guard, and a content guard) protect against the amplifying-loop failure mode. The release also completes a large theme-system overhaul: colors are now named by role rather than by swatch, with new categorical and sequential color scales and a full migration off hardcoded palette values. MeshCore gains a strict receive-only mode, Analyzer Observer battery/uptime/noise reporting, static MQTT auth, and several delivery/pathing fixes. Messaging picks up an unread divider with jump-to-first-unread and channel-list unread badges. Rounding it out: position "last updated" display and estimate-anchor rationale, a fistful of map and MQTT fixes, a Windows startup fix, ESM/build hardening, and the usual dependency and translation updates.

🌉 Meshtastic ↔ MeshCore Automation Bridge (#4577)

  • In-app Automation Template Gallery, click-to-install templates that land disabled for review (#4679)
  • MT↔MC Bridge template, scaffolds a matched automation pair with a built-in loop guard (#4681); wizard pickers scoped per-protocol (#4683)
  • Auto-Ack template, acknowledge direct/zero-hop messages with a tapback or reply (#4679)
  • {{ trigger.protocolShort }} token → MT / MC (#4675)
  • Loop & flood safety: per-automation rate limit + MeshCore cross-source self-guard + content guard (#4676)
  • User docs & recipe with flood-safety guidance (#4682)

✨ Features

  • Automation Engine: became-mobile & left-home triggers for tamper/theft monitoring (#4648, thanks @gztproject)
  • Automation Engine: distinct reaction emoji for MQTT-sourced pings (#4601)
  • MeshCore: strict receive-only mode, backend enforcement, frontend UX, and Virtual Node gating (#4550, #4552, #4555)
  • MeshCore: Analyzer Observer publishes battery / uptime / noise floor (#4557); static MQTT username/password auth (#4602)
  • Messages: unread divider + jump-to-first-unread for both protocols (#4615); channel-list unread bell badge (#4669)
  • Packet inspection detail view on message hop-count click (#4664)
  • Show when a node's position was last updated (#4663); record & expose the anchors behind an estimated position (#4613)
  • Security: set a node's private key from Device Configuration (#4654)
  • Themes: categorical color scale (#4605) and sequential scale (#4611)
  • Ko-fi support links in the sidebar and site nav (#4666, #4665); User Scripts Gallery, Border Wait Times (#4686)

🐛 Bug Fixes

  • MeshCore: deliver MeshMonitor-originated channel messages to app clients (#4668); preserve newlines in message bodies (#4661); update contact Last Heard on incoming DM (#4554); treat a lost out_path ack as success (#4628); hot-swap Analyzer Observer publisher on signing-key change (#4544)
  • MQTT: fire message events & alerts for MQTT-sourced messages so the Automation Engine and alerts trigger (#4600)
  • Map: single card shell for node popups (#4680); reduce statistical-route edge overlap (#4678); gate marker clicks on density, not zoom alone (#4563); stop shading pending-traceroute nodes as 0-hop/local (#4576); fit-bounds icon fix (#4564)
  • Nodes: stop dropping distinct nodes with a non-numeric nodeNum in the unified view (#4578); clear auto-favorite, auto-traceroute, and auto-time-sync allowlists on node purge (#4651, #4630)
  • Auto-ack: stop acknowledging tapbacks (#4574); key the tapback guard on the emoji flag, not its presence (#4589)
  • Neighbor Info: surface why a request was rejected (403/429) (#4575)
  • Positions: make replaceAnchors atomic and document its empty-nodeNums contract (#4621); remove a dead hopsAway write (#4612)
  • Desktop: fix Windows 11 startup by bundling dist/components into packaging (#4592)
  • Security: regenerate session on proxy-auth identity binding (#4672); gate MeshCore map positions on nodes:viewOnMap (#4560)

🎨 Theme system overhaul (#4567 / #4579)

  • Name theme colors by role, not by swatch (#4623); read role tokens from script, not palette vars (#4622)
  • Migrate ~136 files off raw palette vars to semantic tokens across 5+ batches (#4581#4587, #4619, #4620)
  • Fix tinted backgrounds that ignored the active theme (#4617); pick chart slots that stay distinct in every theme (#4606); drop dead fallbacks on semantic tokens (#4585)
  • Refresh the theme gallery for role-token themes (#4597, #4624)

🛠️ Build / CI / DevOps

  • Enforce explicit .js ESM extensions on server-compiled relative imports (#4599); fail the build on unresolvable runtime imports (#4598); guarantee the server emits shared compile.js (#4671)
  • Docs & agent-workflow notes; CHANGELOG backfill and MQTT-bridge test-flake fix (#4572)

📦 Dependencies & Translations

  • ~15 Dependabot bumps (production & dev groups, CodeQL action, lucide-react, puppeteer, typescript-eslint, es-module-lexer, globals, rust-cache, and more)
  • Several Hosted Weblate translation updates (#4673, #4561, #4541, #4252)

Issues Resolved

Closes #4685, #4677, #4662, #4660, #4659, #4657, #4633, #4632, #4629, #4625, #4614, #4610, #4609, #4607, #4604, #4596, #4595, #4594, #4593, #4591, #4590, #4579, #4573, #4570, #4569, #4568, #4567, #4566, #4562, #4559, #4556, #4553, #4551, #4547, #4545, #4543, #4535, #4517.

Contributors

Thanks to external contributors @gztproject and @pfmos this release, alongside the core maintainer @Yeraze and the Hosted Weblate translation community.

Full changelog: v4.14.0...v4.14.1

🚀 MeshMonitor v4.14.1

📦 Installation

Docker (recommended):

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

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