Releases: d3mocide/MeshRF
v1.14.0: Mesh Link Intelligence
This release transforms the Multi-Site Analysis tool from a simple coverage area reporter into a full mesh network planning suite. After running a scan you can now immediately answer the questions that matter most: which sites can talk to each other, how much does each site uniquely contribute, and is the proposed network actually a connected mesh?
What's New
1. Inter-Node Link Quality Matrix
Every site pair in your scan is now automatically analysed for RF link viability using the same Bullington terrain-diffraction model used elsewhere in the tool. The new Links tab shows:
| Field | What it tells you |
|---|---|
| Status | Viable / Degraded / Blocked based on Fresnel zone clearance |
| Path Loss | End-to-end path loss in dB — compare against your link budget |
| Fresnel Clearance | % of first Fresnel zone clear at the worst obstruction point |
| Distance | Haversine distance between the two sites |
Links are sorted viable-first so the best candidates are always at the top.
2. Marginal Coverage per Site
The Sites tab now shows how much unique area each node contributes — area that no other selected site covers. This catches redundant placements before you deploy:
- High unique % (cyan) → critical site, removing it creates a coverage gap.
- Low unique % (red) → redundant placement, consider relocating.
3. Mesh Connectivity Score & Topology Tab
The new Topology tab gives a network-level health summary:
- Mesh Connectivity Score — percentage of all node pairs that can communicate, either directly or via relay. A fully connected mesh scores 100%.
- Multi-hop relay detection — BFS pathfinding finds pairs that are blocked on a direct link but reachable through intermediate nodes, with the hop count shown.
- All-pairs path table — every combination of sites with its shortest viable path and status.
4. Link Lines on the Map
Coloured polylines are drawn between every site pair when results are shown, so the topology is visible directly on the terrain:
- Solid cyan — viable direct link
- Dashed gold — degraded link (partial terrain obstruction)
- Dashed red — blocked (no direct LOS path)
5. Combined Coverage Total
The results panel header now shows the total union coverage area of all selected sites — the actual unique terrain covered by the entire proposed network, not the sum of individual footprints.
Improvements
- Site names from CSV imports are now preserved through the scan and appear in all three tabs and on the map polyline tooltips.
- The Help button is now context-aware — it explains the fields for whichever tab you have open.
- The
/scan/startAPI endpoint now forwards RF parameters (frequency, K-factor, clutter height) into the Celery task so link analysis uses your configured settings.
How to Upgrade
git pull origin main
docker compose -f docker-compose.dev.yml up -d --buildPlan smarter. Know your mesh before you deploy.
Release v1.13.0: The "Coverage Analysis" Update 📡
This major feature update transforms the old "Site Finder" into a professional-grade Coverage Analysis tool. We've replaced the rigid grid system with a flexible Radial Scan engine, allowing you to instantly visualize signal quality around any transmitter.
🌟 Key Features
1. 🎯 Radial Coverage Analysis
- Click-to-Scan: Simply click the map to place your Transmitter (TX), then drag to set your scan radius (up to 20km).
- Heatmap Overlay: See a color-coded signal quality layer that shows you exactly where reception is strongest (Green) or weakest (Red).
- Best Links: The system automatically identifies and ranks the top reception sites based on Line-of-Sight, Fresnel Clearance, and Signal Strength.
2. 🏔️ Interactive Terrain Profiles
- Deep Dive: Click any "Best Link" marker to open a detailed Terrain Profile.
- Visual Physics: See the actual ground elevation, the direct Line-of-Sight path, and the Fresnel Zone clearance in a beautiful, interactive chart.
3. 💾 Data Export
- Take it with you: Export your analysis results to CSV for spreadsheets or KML for 3D visualization in Google Earth.
4. 🎛️ Advanced RF Controls
- Fine-Tuning: Adjust Refraction (K-Factor) and Clutter Height directly from the map interface to model different atmospheric conditions and environments.
🛠️ Enhancements
- Renamed: "Elevation Scan" is now Coverage Analysis to better reflect its capabilities.
- Polished: Scroll propagation is now blocked in panels, preventing accidental map zooms while viewing results.
- Clarified: Tooltips and guidance overlays have been rewritten for clarity.
🚀 How to Upgrade
- Pull the latest:
git pull origin main - Update dependencies:
docker exec meshrf_dev npm install - Restart containers:
docker compose -f docker-compose.dev.yml restart
See the unseen. Happy scanning!
Release v1.12.1: The "Neon Precision" Update �⚡
This release focuses on UI polish and functional aesthetics, synchronizing our analysis parameters with the visual language of our toolset. We've introduced dynamic progress tracking and color-coded logic to make the interface feel as precise as the physics driving it.
🌟 Key Changes
1. � Logic-Linked Colors
- Visual Grouping: Optimization sliders now share the exact colors of the tools they represent.
- Elevation settings now glow with the same Purple as the Viewshed tool.
- Prominence tracks with the Orange of the RF Simulator.
- Cohesive Antenna Mapping: The Antenna Height slider also adopts the Viewshed purple, creating a unified visual theme for all height-based parameters.
2. ⚡ Dynamic Progress Sliders
- Instant Feedback: Sliders now feature a "thick neon" fill that provides immediate visual tracking of your settings.
- Refined Glow: We've tuned the neon intensity. The UI maintains its cyberpunk energy but with a cleaner, more professional balance.
3. 🧹 System Consolidation
- Unified Styling: Removed fragmented inline styles in favor of a robust, global range-input system.
- Bug Fixes: Resolved case-sensitivity issues in weight mapping to ensure the right colors always show up on the right tools.
🚀 How to Upgrade
- Pull the latest:
git pull origin main - Update dependencies:
docker exec meshrf_dev npm install - Restart containers:
docker compose -f docker-compose.dev.yml restart
Precision isn't just in the numbers; it's in how we see them. Thank you for building meshRF!
Release v1.12.0: The "Precision Engine" Update 🎯🏔️
This release unifies our propagation modeling suite, bringing the high-precision Longley-Rice ITM WebAssembly engine to our point-to-point link analysis tool. We've also finalized our environmental physics engine, making the entire application fully "ground-aware."
🌟 Key Changes
1. 🏔️ Unified high-precision ITM (WASM)
- Engine Parity: Point-to-point link analysis now uses the exact same C++ ITM implementation as our coverage maps. No more discrepancies between "The Map" and "The Link."
- WASM Default: The simulation defaults to the highest fidelity model (
itm_wasm) out of the box, ensuring professionals get the most accurate results immediately.
🌊 2. Full Environmental Awareness
-
Ground Constants: We've expanded our ground type library. You can now model links over Sea Water, Fresh Water, Farmland, and Industrial areas with accurate Dielectric Constant (
$\epsilon$ ) and Conductivity ($\sigma$ ) values. - Climate Integration: Select your local climate zone (from Equatorial to Desert) to adjust the propagation physics for regional atmospheric conditions.
🔍 3. Refined Guidance & Logic
- Interactive Model Guide: We've re-written our propagation guide to help you choose the right model for the job.
- Intelligent Fallbacks: The Python backend now understands
itm_wasmrequests and automatically provides the best terrain-aware alternative for server-side operations. - Calibrated Default Mode: All Site Finder and Optimization tools now default to the ITM engine for a consistent "Physics First" experience.
🚀 How to Upgrade
- Pull the latest:
git pull origin main - Update dependencies:
docker exec meshrf_dev npm install - Restart containers:
docker compose -f docker-compose.dev.yml restart
The future of mesh RF analysis is about precision. Thank you for building it with us!
Release v1.11.0: The "Physics & Hardware" Update 🚀⚡
This release marks a significant step forward in RF modeling fidelity and user control. We've introduced asymmetric hardware configurations, integrated real-world cable loss calculations, and exposed advanced environmental parameters for the ITM engine.
🌟 Key Changes
1. 📡 Asymmetric Node Configurations (Multi-Node A/B)
- Independent Parameters: You can now specify different antennas, heights, and power settings for Node A (Transmitter) and Node B (Receiver).
- Targeted Analysis: Perfect for modeling links between a high-power base station and a low-power handheld device.
- Global Toggle: Switch to "Global" mode to update both nodes simultaneously for rapid "what-if" scenarios.
2. 🔌 Cable Loss Calculator
- Real-World Fidelity: Added a dynamic cable loss engine. Select your cable type (LMR-400, RG-58, etc.) and length to see its impact on your Estimated ERP in real-time.
- Hardware Integration: Cable loss is now fully subtracted from TX power across the WASM and Python simulation engines.
3. � High-Fidelity Physics (ITM Environment)
- Ground Parameters: Choose your terrain type (Fresh Water, Desert, Average Ground) to fine-tune the ITM engine's dielectric and conductivity settings.
- Climate Zones: Model your link's behavior across different global climates, from Equatorial to Maritime Temperate.
- Bullington Renaming: The legacy Python-based terrain model has been renamed to "Bullington (Diffraction)" to better differentiate it from our upcoming high-fidelity WASM implementations.
4. 🎨 Sidebar & UI Polish
- "LoRa Band" Workflow: The radio settings have been streamlined into a sleek "LoRa Band" section, minimized by default to keep your workspace clean.
- Improved Spacing: Removed "dead space" and fine-tuned padding across the entire sidebar for a tighter, more professional feel.
- Scroll Position Persistence: Fixed the annoying sidebar scroll reset that occurred when changing radio presets.
🚀 How to Upgrade
- Pull the latest:
git pull origin main - Update dependencies:
docker exec meshrf_dev npm install - Restart containers:
docker compose -f docker-compose.dev.yml restart
Thank you for helping us build the future of mesh RF analysis!
Release v1.10.0: The "Terrain Analysis Pro" Update ⛰️📡
This major update transforms meshRF into a truly professional-grade analysis suite. We've overhauled the Link Analysis engine with a high-fidelity workspace and added critical bulk management tools.
🌟 Key Changes
1. 📂 CSV Bulk Import (Multi-Site)
- Efficient Workflows: You can now import entire lists of candidate sites directly from a CSV file.
- Template Support: Supports
name,lat,lon,antenna_height, andtx_powerfields. - Instant Integration: Imported sites are immediately added to the Multi-Site manager for quick terrain scanning.
2. 🪐 Professional Link Analysis UI
- "Mission-Control" Redesign: The Link Analysis panel now features Dark Glassmorphism (
rgba(10, 10, 15, 0.98)) and standardized neon cyan borders that match our Site Selection suite. - High-Resolution Charts: The terrain profile chart has been widened and vertically optimized (700px height) to prevent clipping and provide superior visual detail of earth curvature and obstacles.
- Symmetric Ergonomics: Rebalanced padding and layout offsets ensure that legends, RX metadata, and distance labels are always perfectly framed.
3. 📖 Propagation Model Guide
- Refined Interaction: The guide is now scrollable with a fixed "Got It" button, allowing for more detailed technical descriptions without cluttering the UI.
- Propagation Analysis Note: Enhanced visual highlights contrast the benefits of statistical (Hata) vs terrain-aware (ITM) models.
- Intelligent Defaults: Analysis now starts on ITM (Longley-Rice) by default, providing superior terrain accuracy from the first click.
4. 🎨 Global UI Polish
- Cyberpunk Scrollbars: Implemented a global, custom neon-cyan scrollbar style (
4px) across the entire app. - Breathing Room: Added specialized padding to sidebars and lists to ensure scrollbars never overlap content or controls.
🚀 How to Upgrade
- Pull the latest:
git pull origin dev - Update dependencies:
docker exec meshrf_dev npm install - Restart containers:
docker compose -f docker-compose.dev.yml restart
Found a bug? Use the built-in feedback tool or open an issue on GitHub!
Release v1.9.1: The "Neon Polish" Update
This maintenance release focuses on UI consistency and codebase hygiene. We've tightened the aesthetic integration of map elements and added requested unit conversion features.
🌟 Key Changes
1. 📏 Unit Conversions
- Metric/Imperial Toggle: Site analysis results (elevation, coverage area) now respect your global unit settings.
- Elevation: Meters ↔ Feet
- Area: km² ↔ mi²
2. 🎨 Dark/Neon Theming
- Map Popups: Default white Leaflet popups have been replaced with Dark Glassmorphism panels (
#0a0a0fbg) featuring neon cyan borders and glow effects. - High-Vis Markers: Optimization candidate nodes and "Ideal Spots" are now rendered in Solid Cyan (
#00f2ff) to stand out against satellite imagery.
3. 🏗️ Site Finder & Multi-Site Refactor
- Ergonomics: The Site Selection Weights panel has been completely rebuilt with a responsive grid layout, larger touch targets for sliders, and improved label legibility.
- Multi-Site Tab: New dedicated interface for managing multiple candidate sites (
NodeManager). Toggle between "Elevation Scan" (Auto) and "Multi-Site" (Manual) modes instantly. - Performance: Decoupled the analysis state from the main map event loop, eliminating "ghost clicks" where interacting with UI controls would accidentally place markers on the map.
4. 🧹 Codebase Cleanup
- Dead Code Removal: Pruned unused
ViewshedLayer.js(replaced by Wasm) and unused Python imports. - Console Silence: Removed verbose debug logging from the viewshed engine for a cleaner developer console.
- Docker Standards: Formalized "Docker-First" development rules in the repository documentation.
🚀 How to Upgrade
- Pull changes:
git pull origin main - Rebuild Containers (for backend cleanup):
docker compose -f docker-compose.dev.yml up -d --build
Release v1.9.0: The "Pro-Max PWA" Upgrade 📱
This release transforms MeshRF into a high-fidelity Progressive Web App (PWA), specifically optimized for field use on iOS and mobile devices. We've smoothed out the rough edges of mobile browser interfaces to provide a truly native feel.
🌟 Key Features
1. iOS "Pro-Max" Experience
- Safe-Area Aware: All toolbars, panels, and notifications now dynamicallly adjust to bypass the iPhone notch and system home indicators.
- Dynamic Viewport (100dvh): Eliminated the annoying "double scrollbar" and layout jumping typical of mobile Safari.
- Native Touch Latency: Implemented
touch-action: manipulationand disabled overscroll rubber-banding for a snappy, app-like response.
2. Intelligent PWA Lifecycle
- User-Prompted Updates: MeshRF now intelligently detects updates and prompts you to refresh, ensuring you never lose active planning data unexpectedly.
- Offline Reliability: New Offline Indicator lets you know exactly when you're operating on local cached data vs. live backend physics.
3. Responsive Site Finder
- Grid Redesign: The Site Selection Weights panel has been completely overhauled with a clean, grid-based UI for effortless weight adjustment on small screens.
- Glassmorphism Design: Enhanced backgrounds with high-intensity blur for maximum legibility over map terrain.
🛠️ Technical Fixes
- Physics Engine Handshake: Fixed a crash in link analysis caused by legacy frontend path loss remnants.
- SW Destructuring Fix: Resolved a critical "Symbol.iterator" error in the Service Worker update hook.
- High-Res Assets: Added a high-resolution
apple-touch-icon.pngfor a premium home screen presence.
🚀 How to Upgrade
- Pull the latest changes:
git pull origin main - Clear Cache: If using as a PWA, wait for the Update Available prompt and click Refresh Now.
- Docker restart (optional but recommended):
docker compose up -d
v1.7.7 - Security Hardening & DevOps
This release focuses on hardening the production environment against malicious scanners, polishing the startup experience, and significantly optimizing the CI/CD pipeline.
🛡️ Security Hardening
- Nginx Hardening: Implemented strict blocking rules in
nginx.confto drop connections (Status 444) for malicious scan patterns:- Blocked PHP files (
.php) and hidden files (.env,.git). - Blocked common exploit paths (
/wp-admin,/cgi-bin). - Server Hiding: Disabled
server_tokensto hide Nginx version. - Log Suppression: Disabled access logging for blocked requests to keep logs clean and relevant.
- Blocked PHP files (
🚀 CI/CD & DevOps
- Smart Builds: Optimized GitHub Actions (
docker-publish.yml) to intelligentlly skip building unchanged containers (e.g.,opentopodata,rf-engine) during releases, saving build minutes and storage. - Automated Cleanup: Added a new workflow (
cleanup-packages.yml) to automatically prune untagged/stale images from the GitHub Container Registry every week.
🎨 UI & Developer Experience
- Polished Startup: Fixed the "White Flash" on startup by synchronizing the
index.htmlbackground color with the app theme. - Branding: Added "MeshRF" text branding to the loading screen with a premium gradient finish.
- Dev Fixes: Resolved a
vite-plugin-pwadependency error in the Docker development environment.
v1.7.6 - Mobile PWA & iOS Polish
This release transforms meshRF into a fully installable Progressive Web App (PWA) and resolves layout issues on iOS devices, making it a true mobile-first field tool.
📱 Progressive Web App (PWA)
- Installable: You can now install meshRF to your home screen on Android, iOS, Windows, and macOS.
- Offline Shell: The app shell now caches locally, allowing instant loading even in poor network conditions (API requests still require connection).
- Dark Mode Start: Eliminated the "White Screen Flash" on startup by injecting critical dark-theme CSS and a neon loader into the initial HTML payload.
- Premium Icons: Added high-fidelity, rounded-corner (squircle) icons for a native look on modern operating systems.
🍎 iOS & Safari Fixes
- Viewport Logic: Updated to use
dvh(Dynamic Viewport Height) to properly handle the Safari bottom address bar, preventing the UI from being cut off. - Safe Area: Added intelligent padding to the Link Analysis Panel to avoid conflict with the iPhone home indicator swipe bar.
- Viewport Fit: Enabled
viewport-fit=coverto utilize the full screen real estate on notched devices.