Skip to content

Releases: PapaSierra555/MeshCommunityPlanner

v1.3.5

Choose a tag to compare

@PapaSierra555 PapaSierra555 released this 01 Apr 02:32
v1.3.5
649b504

What's New

Meshtastic MQTT Import

Pull live node positions directly from a Meshtastic MQTT broker.

Open Plan → Import Nodes (Internet) and select the Meshtastic MQTT source. Enter your broker URL (defaults to mqtt.meshtastic.org for the public Meshtastic network, or your local broker's IP address), set a listen duration (5–60 seconds), and click Fetch. The app subscribes to the JSON MQTT topic (msh/+/+/json/#), collects nodeinfo and GPS position messages, and shows a filterable preview of all located nodes. Select the ones you want and import them into your plan in one step.

Meshtastic MQTT import dialog

Nodes are imported with the same radio defaults as your existing plan nodes — antenna height, device, firmware family, region — so they're ready for coverage analysis immediately.

Requirements: Nodes must be publishing to the Meshtastic JSON MQTT gateway topic. On the public broker, this works out of the box for most networks. On a private encrypted network, the topic filter may need to match your channel configuration.


Extended Coverage Analysis Radius

The coverage analysis radius slider now allows up to 200 km.

Previously the slider was hard-capped to the radio horizon formula for the node's configured antenna height, which gave approximately 11–15 km for typical ground-level deployments. The formula is still shown as a guidance label ("Radio horizon at X m: ~Y km") but is no longer a hard ceiling.

For mountain-top and elevated relay nodes: set the Antenna Height field to reflect actual clearance above surrounding terrain — not altitude above sea level, but how many meters the antenna clears nearby obstacles. At 50 m clearance the recommended horizon is ~34 km; at 200 m it's ~64 km. The slider can be set beyond the formula up to 200 km absolute maximum.

Coverage radius slider at 102 km with radio horizon guidance label

Physics note: LoRa at legal power limits can realistically reach 80–150 km mountain-to-mountain with high-gain antennas. Beyond ~200 km, earth curvature becomes the dominant constraint regardless of software settings.


Lock Node Positions

A new Lock Node Positions toggle prevents nodes from being accidentally dragged while reviewing a plan.

Select any node, then check Lock node positions in the node sidebar (just above the radio horizon readout). The lock applies globally — all nodes on the map become non-draggable immediately, including nodes added after enabling it. Uncheck to resume normal drag behavior.

The lock state is saved in exported .meshplan.json files and restored automatically on import.

Note: The checkbox appears in the node sidebar, which is only visible when a node is selected. It controls all nodes globally, not just the selected one.

Lock Node Positions checkbox in the node sidebar

Contributed by @nakoeppen.


Linux arm64 (aarch64) AppImage

A native aarch64 AppImage is now available for Raspberry Pi 4/5, Qualcomm Snapdragon X, and other 64-bit ARM Linux devices.

To check your architecture: uname -maarch64 means use the ARM build; x86_64 means use the standard build.


Under the Hood

  • Signal-Server documented: origin (W3AXL fork of CloudRF/Signal-Server), installation, bundling instructions, and feature degradation behavior fully documented in the Installation Guide and PyInstaller spec.
  • Linux AppImage arch-aware: build_appimage.sh auto-detects architecture via uname -m and produces correctly named output.
  • Coverage analysis backend cap: raised from 50 km to 200 km (max_radius_m field validation).
  • paho-mqtt added as a dependency for MQTT broker connectivity.

Full release notes: docs/RELEASE_NOTES_v1.3.5.md

v1.3.4 — Coverage Hatch Mode & Satellite View

Choose a tag to compare

@github-actions github-actions released this 23 Mar 21:39
v1.3.4
90bc286

What's New in v1.3.4

Coverage Hatch Mode

Enable via Tools → Coverage Hatch Mode after running a terrain coverage analysis on two or more nodes.

Each node pair gets a unique color and stripe direction. Where two nodes share measurable signal coverage (-80 to -130 dBm), diagonal hatch lines appear only on the actual overlapping pixels — not the circular analysis boundary. Three or more overlapping nodes accumulate into denser cross-hatch patterns. Toggle off at any time to return to the standard heatmap view.

Coverage Hatch Mode — Table Mountain and Lookout Mountain near Golden, CO


Satellite View

Enable via Tools → Satellite View to switch the base map from OpenStreetMap to ESRI World Imagery satellite photography.

Useful for rural and off-grid site planning where landmarks and terrain features matter more than road names. Tiles cache locally after first view — once cached, satellite view works fully offline.

Note: An internet connection is required the first time you view a new area in satellite mode.

Attribution: Imagery © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community.

Satellite View — node placement near Longmont, CO


macOS First Launch (Gatekeeper)

macOS will block the app on first launch — this is expected for any app not signed with a paid Apple Developer certificate. The app is safe; all source code is in this repository.

Option A — Right-click (no Terminal needed):

  1. Open Finder → Applications
  2. Right-click MeshCommunityPlannerOpen
  3. Click Open in the dialog

Option B — Terminal (required on macOS 13 Ventura and older if Option A fails):

xattr -cr /Applications/MeshCommunityPlanner.app

Downloads

Platform File
Windows MeshCommunityPlanner-1.3.4-win.zip
macOS (Apple Silicon) MeshCommunityPlanner-1.3.4.dmg
macOS (Intel x86_64) MeshCommunityPlanner-1.3.4-x86_64.dmg
Linux MeshCommunityPlanner-1.3.4-x86_64.AppImage

All builds are self-contained — no Python or Node.js required.


Full Changelog: v1.3.3...v1.3.4

v1.3.3

Choose a tag to compare

@github-actions github-actions released this 18 Mar 01:16
v1.3.3
8efe9be

What's New in v1.3.3

Intel Mac DMG

Intel Mac users now have a pre-built downloadable disk image — no more building from source required.

Chip File
Apple Silicon (M1/M2/M3/M4) MeshCommunityPlanner-1.3.3.dmg
Intel (x86_64) MeshCommunityPlanner-1.3.3-x86_64.dmg

If you're unsure which chip your Mac has: Apple menu → About This Mac → Chip.


macOS First Launch (Gatekeeper)

macOS will block the app on first launch — this is expected for any app not signed with a paid Apple Developer certificate. The app is safe; all source code is in this repository.

Option A — Right-click (no Terminal needed):

  1. Open Finder → Applications
  2. Right-click MeshCommunityPlannerOpen
  3. Click Open in the dialog

Option B — Terminal (required on macOS 13 Ventura and older if Option A fails):

xattr -cr /Applications/MeshCommunityPlanner.app

Downloads

Platform File
Windows MeshCommunityPlanner-1.3.3-win.zip
macOS (Apple Silicon) MeshCommunityPlanner-1.3.3.dmg
macOS (Intel) MeshCommunityPlanner-1.3.3-x86_64.dmg
Linux MeshCommunityPlanner-1.3.3-x86_64.AppImage

All builds are self-contained — no Python or Node.js required.


Full Changelog: v1.3.2...v1.3.3

v1.3.2 Internet Import MeshCore and Reticulum. KML Export and Multiple fixes

Choose a tag to compare

@github-actions github-actions released this 17 Mar 21:12
v1.3.2
4a01657

What's New in v1.3.2

Internet Map Import — MeshCore and Reticulum Network

The Import Nodes (Internet) dialog now supports two live sources side by side:

  • MeshCore Map — pulls live node positions from map.meshcore.dev
  • Reticulum Network — pulls submitted and discovered nodes from directory.rns.recipes

Import Nodes Dialog

Choose your source with a single click, fetch nodes visible in your current map view, and import directly into your plan. Both sources show a LIVE badge and share the same 5-node bulk-import warning. The button automatically disables and labels itself (offline) when no internet connection is detected — all other features continue to work fully offline.

KML Export — App Compatibility Guide

After exporting a .kml file, a guide now appears with per-app import instructions for 10 compatible applications:

Mobile: ATAK CIV / iTAK / WinTAK · Caltopo · Gaia GPS · OsmAnd · Avenza Maps · OruxMaps

Desktop: Google Earth · QGIS · ArcGIS · Google My Maps

Post-Deployment Signal Validation

Import real-world RSSI/SNR observations from a CSV and compare them against your modeled link predictions. Accepts exports from Meshtastic, MeshCore, or any tool producing node-pair signal data. Matched links appear as a colored overlay on the map with hover tooltips.


Bug Fixes

  • SQLite WAL corruption — force-killing the process (power loss, taskkill /F) could leave the database unrecoverable on next launch. The backend now enforces WAL journaling mode, runs a checkpoint on startup, and auto-restores sample plans if the database is found empty after a dirty exit.
  • macOS cold-start crash — app crashed on first launch if the Application Support directory did not yet exist. Data directory is now created before the log handler is initialized.
  • RNS Transport Advisor / Throughput Analyzer — removed inputs that were collected but never used in any calculation.

Removed

  • Live ATAK KML feed — Play Store ATAK 5.6 disables cleartext HTTP at the Android system level. The static KML export with the new app compatibility guide is the correct workflow for all users.

Platform Builds

Platform Format File
Windows Portable (.zip) MeshCommunityPlanner-1.3.2-win.zip
macOS (Apple Silicon / ARM64, not Intel) Disk image (.dmg) MeshCommunityPlanner-1.3.2.dmg
Linux AppImage MeshCommunityPlanner-1.3.2-x86_64.AppImage

⚠️ macOS: "App Cannot Be Opened" — This Is Expected

This is NOT a virus warning. macOS blocks any app without a paid Apple code-signing certificate. Mesh Community Planner is free, non-commercial open-source software.

How to open the app (choose one):

Option A — Right-click method (no Terminal required):

  1. Open Finder → Applications
  2. Right-click MeshCommunityPlannerOpen
  3. Click Open in the dialog
  4. Done — macOS remembers your choice permanently

Option B — Terminal (required on macOS 13 Ventura and older):

xattr -cr /Applications/MeshCommunityPlanner.app

Then double-click the app to launch.

What does xattr -cr do? It clears the quarantine flag that macOS places on files downloaded from the internet. This is the exact same action macOS performs when you click "Open" in the right-click dialog — it removes the download quarantine attribute so Gatekeeper stops blocking the app. It does not modify, patch, or bypass any security mechanism in the app itself.

Intel Mac users: The pre-built DMG is Apple Silicon (ARM64) only. To run on an Intel Mac, build from source — requires Python 3.12+ and Node 20+.


🌐 First launch requires internet — map tiles and terrain elevation data are downloaded on first use. After that, the app works fully offline.


Full changelog: https://github.com/PapaSierra555/MeshCommunityPlanner/blob/main/CHANGELOG.md

v1.2.0 — Elevation Heatmap with Range Controls & Exit Dialog

Choose a tag to compare

@PapaSierra555 PapaSierra555 released this 09 Mar 13:55

What's New

Elevation Heatmap

Elevation Heatmap

Toggle a terrain elevation overlay via Tools > Elevation Heatmap. Uses a hypsometric color ramp with on-demand SRTM 30m data from AWS S3, cached locally for instant reloads.

Precision Range Controls

  • Dual-handle range slider with colored fill
  • Direct number entry (Enter to commit, Escape to cancel)
  • Mouse wheel fine-tuning (±10m per tick)
  • Keyboard: arrow keys ±10m, Page Up/Down ±100m
  • "Remember range" checkbox persists settings across sessions
  • Reset button restores defaults (-500m to 9000m)

Exit Application Dialog

  • Top-level Exit button in the toolbar with styled confirmation dialog
  • Danger variant with Cancel, Exit, and X close buttons
  • Full focus trap and ARIA support (role="alertdialog", aria-modal)
  • Browser beforeunload safety net for accidental tab closes

Windowless Mode (Windows)

No more visible console window — the app runs cleanly in the background.

Downloads

Platform File
Windows MeshCommunityPlanner-1.2.0-win.zip
macOS MeshCommunityPlanner-1.2.0.dmg
Linux AppImage MeshCommunityPlanner-1.2.0-x86_64.AppImage
Linux .deb mesh-community-planner_1.2.0_amd64.deb

Full Release Notes

See RELEASE_NOTES_v1.2.0.md

Mesh Community Planner v1.1.0

Choose a tag to compare

@PapaSierra555 PapaSierra555 released this 20 Feb 22:19

Mesh Community Planner v1.1.0

Desktop application for planning LoRa mesh network deployments. Runs as a local web server that opens in your default browser — no cloud, no account, your data stays on your machine.

What's New

Elevation Heatmap

A toggleable terrain visualization layer that renders NASA SRTM elevation data directly on the map using a cartographic color ramp.

  • Toggle: Tools menu → Elevation Heatmap
  • Data: NASA SRTM1 (~30 m resolution), downloaded on-demand from AWS S3 (no API key)
  • Rendering: Standard slippy map z/x/y PNG tiles (zoom 9–15)
  • Caching: Three-layer (browser → rendered PNG disk → in-memory .hgt LRU)
  • Opacity: Adjustable via legend slider (bottom-right corner)
  • No new dependencies: PNG encoding uses only Python stdlib (struct + zlib)

Color scale:

Color Elevation Terrain
Steel blue < 0 m Below sea level
Forest green 0 m Sea level
Medium green 50 m Lowland
Yellow-green 200 m Low hills
Bright yellow 500 m Uplands
Amber-gold 800 m Foothills
Deep orange 1,200 m Lower mountains
Terracotta 2,000 m Mid-altitude mountains
Gray 3,000 m Alpine / above treeline
Near-white 4,500 m+ Snow / glacier

Elevation Tile Streaming Guide

New developer document (ELEVATION-TILE-STREAMING.md) explains the complete SRTM pipeline — from AWS download through .hgt parsing, tile rendering, HTTP serving, and Leaflet integration. Includes code examples and guidance for adapting to ATAK or other tile-consuming map clients.

Test Suite

First automated test infrastructure for the project:

  • 24 backend tests (pytest) — PNG writer, elevation tiles, API endpoints, auth middleware
  • 15 frontend tests (Vitest + axe-core) — Zustand store, component rendering, accessibility
  • 6 integration tests (Playwright) — End-to-end UI toggle, legend, opacity slider

Accessibility

  • Elevation legend opacity slider now includes aria-label for screen readers (caught by axe-core)

Downloads

Platform File Notes
Windows MeshCommunityPlanner-Windows-x64.zip Extract and run MeshCommunityPlanner.exe
macOS MeshCommunityPlanner-1.1.0.dmg Mount DMG, drag to Applications
Linux MeshCommunityPlanner-1.1.0-x86_64.AppImage chmod +x and run
Linux (Debian/Ubuntu) mesh-community-planner_1.1.0_amd64.deb sudo dpkg -i to install

Quick Start

  1. Download the file for your platform
  2. Windows: Extract zip and run MeshCommunityPlanner.exe
  3. macOS: Open DMG, drag to Applications, right-click → Open (first launch)
  4. Linux: chmod +x the AppImage and run, or sudo dpkg -i the .deb
  5. The app opens your browser automatically — explore sample plans or create your own

System Requirements

  • Windows 10 or later (x64)
  • macOS 11 (Big Sur) or later
  • Linux Ubuntu 20.04+ or equivalent (x64)
  • Any modern browser (Chrome, Firefox, Edge, Safari)

Known Issues

  • First launch on Windows may trigger SmartScreen warning — click "More info" → "Run anyway"
  • First launch on macOS may show Gatekeeper warning — right-click → "Open" → confirm
  • Linux AppImage may require FUSE: sudo apt install libfuse2
  • Closing the browser tab shuts down the server (by design); relaunch the app to restart

Full changelog: CHANGELOG.md

Mesh Community Planner v1.0.0

Choose a tag to compare

@PapaSierra555 PapaSierra555 released this 19 Feb 18:36

Mesh Community Planner v1.0.0

Desktop application for planning LoRa mesh network deployments. Runs as a local web server that opens in your default browser — no cloud, no account, your data stays on your machine.

Features

  • Interactive Map — Place and configure nodes on an OpenStreetMap-based map
  • Device Catalog — Pre-configured Meshtastic devices (T-Beam, Heltec, RAK, etc.) with accurate radio specs
  • Propagation Analysis — FSPL link budget calculations between all node pairs
  • Coverage Mapping — Visualize RF coverage area per node with terrain awareness
  • Topology Analysis — Identify critical nodes, calculate network connectivity metrics
  • Bill of Materials — Auto-generate hardware shopping lists with CSV export
  • File I/O — Save/load plans as JSON, export to KML (Google Earth) and TAK Data Packages
  • Regulatory Presets — US FCC, EU 868, ANZ, and other regional LoRa configurations
  • Sample Plans — 4 pre-loaded example plans to get started immediately

Downloads

Platform File Notes
Windows MeshCommunityPlanner-Windows-x64.zip Extract and run MeshCommunityPlanner.exe
macOS MeshCommunityPlanner-1.0.0.dmg Open DMG, drag to Applications
Linux MeshCommunityPlanner-1.0.0-x86_64.AppImage Make executable and run
Linux (Debian/Ubuntu) mesh-community-planner_1.0.0_amd64.deb Install with sudo dpkg -i

Quick Start

  1. Download the archive for your platform
  2. Extract (Windows), install (macOS DMG), or chmod +x (Linux AppImage)
  3. Run the application — it opens your browser automatically
  4. Explore the sample plans or create your own

Build from Source

git clone https://github.com/PapaSierra555/MeshCommunityPlanner.git
cd MeshCommunityPlanner
pip install -r requirements.txt
pip install pyinstaller
cd frontend && npm install && npx vite build && cd ..
python -m PyInstaller installers/mesh_planner.spec --noconfirm

Platform-specific build docs:

  • macOS: installers/macos/BUILD.md
  • Linux: installers/linux/BUILD.md

System Requirements

  • Windows 10 or later (x64)
  • macOS 11 (Big Sur) or later — Python 3.9+
  • Linux Ubuntu 20.04+ or equivalent (x64)
  • Any modern browser (Chrome, Firefox, Edge, Safari)

Known Issues

  • First launch on Windows may trigger SmartScreen warning — click "More info" → "Run anyway"
  • First launch on macOS may show Gatekeeper warning — right-click → "Open" → confirm
  • Linux AppImage may require FUSE: sudo apt install libfuse2
  • Closing the browser tab shuts down the server (by design); relaunch the app to restart