Releases: PapaSierra555/MeshCommunityPlanner
Release list
v1.3.5
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.
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.
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.
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 -m — aarch64 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.shauto-detects architecture viauname -mand produces correctly named output. - Coverage analysis backend cap: raised from 50 km to 200 km (
max_radius_mfield 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
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.
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.
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):
- Open Finder → Applications
- Right-click
MeshCommunityPlanner→ Open - 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
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):
- Open Finder → Applications
- Right-click
MeshCommunityPlanner→ Open - 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
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
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):
- Open Finder → Applications
- Right-click
MeshCommunityPlanner→ Open - Click Open in the dialog
- 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
What's New
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
beforeunloadsafety 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
Mesh Community Planner v1.1.0
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-labelfor 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
- Download the file for your platform
- Windows: Extract zip and run
MeshCommunityPlanner.exe - macOS: Open DMG, drag to Applications, right-click → Open (first launch)
- Linux:
chmod +xthe AppImage and run, orsudo dpkg -ithe .deb - 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
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
- Download the archive for your platform
- Extract (Windows), install (macOS DMG), or
chmod +x(Linux AppImage) - Run the application — it opens your browser automatically
- 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 --noconfirmPlatform-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






