Releases: MeshMapper/MeshMapper_Project
Releases · MeshMapper/MeshMapper_Project
MeshMapper - v1.3.0(1777141737)
I expect bugs in this release, the map code was fully rewritten.
✨New Features
- Map Engine Migration: Replaced flutter_map (raster tiles) with maplibre_gl (vector tiles via OpenFreeMap). Liberty is the new default map layer, check it out, it's quite nice!
- Offline Maps & Tile Caching: New "Offline Maps" screen in settings lets you download map regions for offline wardriving. Multiple downloads can be queued and run back-to-back.
@dedskelly Thank you for all the work in writing the code for this feature! - Flood Traffic Toggle in Settings → Modes (default OFF). When OFF, Send Ping, Active, and Hybrid controls are hidden. Passive and Trace stay visible. Parses
flood_disabledfrom the auth response and auto-syncs on connect and zone change. If your region forbids flooding, the toggle is forced OFF, greyed out, with an amber "Set by Regional Admin" subtitle. One-shot popup explains the override when it happens.
🔧 Improvements
- Enhanced repeater ID popup with improved match-count display and additional logging
🐛 Bug Fixes
- Fixed power level hint on the Map tab incorrectly directing users to Settings instead of the Connect tab
- Fixed race where the offline download dialog could close before validation errors were shown
- Fixed RX ping popup on the map showing a blue header badge instead of the RX purple used everywhere else (legend, marker dots, status overlays). The icon badge
background, border, and arrow now follow PingColors.rx, so it also tracks the active color-vision palette automatically.
- Fixed RX ping popup on the map showing a blue header badge instead of the RX purple used everywhere else (legend, marker dots, status overlays). The icon badge
- Fixed Hive preferences being wiped by transient open failures. The startup theme loader was treating a timeout as corruption and deleting the entire
user_preferencesbox. Real corruption is still caught later with a user-visible error. - Settings now flush to disk immediately after every write instead of relying on Hive's lazy flush, preventing loss on crash or abrupt termination
MeshMapper - v1.2.2
New Features
- Zone grace period for region transitions: driving between zones no longer disconnects you. The app pauses pinging and shows an "Out of Zone" overlay with the nearest zone name, distance, and a 5-minute countdown. Once you enter the next zone, pinging resumes automatically without reconnecting.
- Client-side zone transfers during active wardriving. When you cross into a new zone (e.g., BOS → PVD), the app handles the transfer directly: releases the old session, acquires a new one, updates channels and scopes, and resumes auto-ping automatically. A "Changing Zone..." overlay shows during the transfer with a cancel option.
- Color vision deficiency support now extends to map coverage tiles. When a color vision type is selected in Settings, the tile server returns adjusted coverage squares to match your palette. Supports protanopia, deuteranopia, tritanopia, and achromatopsia.
- Custom API endpoint forwarding: optionally forward your wardrive data to a third-party HTTPS endpoint alongside MeshMapper. Configure in Settings > API Endpoints with your URL and API key. Supports clipboard import for quick setup, optional device public key prefix and IATA zone code in payloads. Best-effort, never blocks wardriving. Full docs at https://wiki.meshmapper.net/app_third_party_api/.
- Ping Focus Mode: tap any ping marker to see which repeaters heard it. Draws dotted lines color-coded by signal quality with distance tags, fades unrelated markers, and zooms to fit. Works for all ping types. Ambiguous repeater matches get a white border outline. Dismiss to snap back to your previous view.
- Chomper GPS marker: a new marker style in Settings > GPS Marker. Cyan color, wide mouth that faces your direction of travel and rotates with heading.
Bug Fixes
- Fixed noise floor graph showing wildly incorrect values (e.g., 13,000+ dBm) on certain devices. Some firmware versions return oversized BLE responses on the same response code as radio stats. Added frame validation to reject these responses.
- Tapping a repeater ID in the ping focus popup now shows distance from the ping location, not your current GPS position.
- Offline upload now shows "GPS required" instead of the misleading "Advert your device on the mesh" when GPS is disabled. Only GPS and network connectivity are needed, not a device connection.
- Improved error handling for malformed mesh packets. Corrupted packets with oversized path lengths now produce a clear diagnostic message instead of an unclear RangeError.
- Seeed Xiao nRF52840 boards are now automatically recognized during connection. Previously required manual power level selection on every connect.
- Repeater info popup no longer shows "Repeater data not available" for the entire session after a network timeout. A failed fetch is now automatically retried on the next zone check.
- Tapping a repeater ID chip no longer gets stuck on "Repeater data not available." Now fetches on demand with a loading indicator and tap-to-retry. Works in offline mode too.
- Zone check retry loop no longer continues after enabling Offline Mode. Retry timers and maintenance polling are now cancelled immediately.
- Zone check no longer gets stuck at "Checking Zone..." if the repeater list fails to load. The zone check now completes immediately and repeaters load in the background.
- Top-heard display and API payload now only track direct single-hop TX echoes for more accurate signal readings.
- Fixed iOS App Store upload rejection (ITMS-90683) caused by unused permission macros in the build. Only location and notification permissions are now included.
- Fixed power level hint on the Map tab incorrectly directing users to Settings instead of the Connect tab.
Improvements
- Enhanced offline sessions display.
- Improved error logging when the API returns unexpected HTML responses (e.g., CDN/proxy error pages). Now logs a clear diagnostic instead of a raw FormatException.
MeshMapper - v1.2.2(1776220715)
✨ New Features
- Client-side zone transfers during active wardriving. When you cross into a new zone (e.g., BOS → PVD), the app handles the transfer directly: releases the old session, acquires a new one, updates channels and scopes, and resumes auto-ping automatically. A "Changing Zone..." overlay shows during the transfer with a cancel option. Previously backend-side transfers could fail with a bad_session error mid-drive
🔀 Changes
- "Pac-Man" GPS marker renamed to "Chomper" with a new design: cyan color, wider mouth, no eye. Existing users are automatically migrated on next launch
🐛 Bug Fixes
- Offline upload now shows "GPS required" instead of the misleading "Advert your device on the mesh" when GPS is disabled. Only GPS and network connectivity are needed for offline uploads, not a device connection
- Improved error handling for malformed mesh packets. Corrupted packets with oversized path lengths now produce a clear diagnostic message instead of an unclear RangeError
- Seeed Xiao nRF52840 boards are now automatically recognized during connection. Previously required manual power level selection on every connect
- Repeater info popup no longer shows "Repeater data not available" for the entire session after a network timeout. A failed fetch is now automatically retried on the next zone check
- Zone check retry loop no longer continues after enabling Offline Mode. Retry timers and maintenance polling are now cancelled immediately when switching to offline
- Zone check no longer gets stuck at "Checking Zone..." if the repeater list fails to load. The zone check now completes immediately and repeaters load in the background
- Top-heard display and API payload now only track direct single-hop TX echoes for more accurate signal readings
- Tapping a repeater ID chip no longer gets stuck on "Repeater data not available." Now fetches on demand with a loading indicator and tap-to-retry. Works in offline mode too, where repeater names were previously never populated
- Fixed iOS App Store upload rejection (ITMS-90683) caused by unused permission macros in the build. Only location and notification permissions are now included
- Fixed power level hint on the Map tab incorrectly directing users to Settings instead of the Connect tab
🔧 Improvements
- Improved error logging when the API returns unexpected HTML responses (e.g., CDN/proxy error pages). Now logs a clear diagnostic instead of a raw FormatException
Thanks for using MeshMapper!
MeshMapper - v1.2.2(1775515716)
Improvements
- Custom API forwarding now supports optional device public key prefix and IATA zone code in payloads.
MeshMapper - v1.2.2(1775498170)
New Features
- Import custom API configuration from clipboard for quick setup.
Bug Fixes
- Fixed Pac-Man GPS marker showing "Arrow" as its label in Settings instead of "Pac-Man".
Improvements
- Enhanced offline sessions display.
MeshMapper - v1.2.2(1775441475)
Changelog
New Features
- Zone grace period for region transitions: driving between zones no longer disconnects you. The app pauses pinging and shows an "Out of Zone" overlay with the nearest zone name, distance, and a 5-minute countdown. Once you enter the next zone, pinging resumes automatically without reconnecting. If no zone is reached within 5 minutes, the app disconnects normally.
- Color vision deficiency support now extends to map coverage tiles. When a color vision type is selected in Settings, the tile server returns adjusted coverage squares to match your palette. Previously only app UI colors (ping markers, signal indicators, etc.) adapted to CVD settings. Supports protanopia, deuteranopia, tritanopia, and achromatopsia.
- Custom API endpoint forwarding: optionally forward your wardrive data to a third-party HTTPS endpoint in addition to MeshMapper. Configure in Settings > API Endpoints with your URL and API key. Forwarding is best-effort and never blocks wardriving or affects MeshMapper submissions. Errors from the custom endpoint are throttled to avoid flooding the log. A disclaimer warns about third-party data sharing on first enable. Full payload schemas and examples for all ping types at https://wiki.meshmapper.net/app_third_party_api/.
- Pac-Man GPS marker: a new marker style in Settings > GPS Marker. The mouth faces your direction of travel and rotates with heading. Waka waka.
- Ping Focus Mode: tap any ping marker to see which repeaters heard it. Draws dotted lines color-coded by signal quality with distance tags, fades unrelated markers, and zooms to fit. Works for all ping types. Ambiguous repeater matches get a white border outline. Dismiss to snap back to your previous view.
Bug Fixes
- Fixed noise floor graph showing wildly incorrect values (e.g., 13,000+ dBm) on certain devices. Some firmware versions return oversized BLE responses on the same response code as radio stats, causing the app to misread the data as a noise floor measurement. Added frame validation to reject these responses.
- Tapping a repeater ID in the ping focus popup now shows distance from the ping location, not your current GPS position, matching the distance tag on the line.
MeshMapper - v1.2.1
✨ New Features
- Colorblind accessibility: new Color Vision setting in Settings > General. Choose a palette optimized for your vision type: Protanopia (red-blind), Deuteranopia (green-blind), Tritanopia (blue-blind), or Achromatopsia (total color blindness). Uses Wong 2011 colorblind-safe colors. All ping markers, signal indicators, repeater statuses, and legends update automatically. Default colors are unchanged.
- Persistent radio power overrides: custom TX power is saved per device. On connect, your override is auto-applied with a visual indicator. "Reset to Auto" restores the auto-detected power for your device model.
- Disconnect alert: triple-beep sound when BLE drops during wardriving, so you know pings have stopped. Has its own toggle, independent from the master sound setting, so you can wardrive silently and still get alerted on disconnect.
- Map Marker Style: choose between four coverage marker shapes in Settings > General. Dot (default, subtle border), Outlined Dot (prominent white border), Pin (teardrop), and Diamond.
- GPS Marker: choose your position icon on the map. Arrow (default), Car, Bike, Boat, or Walk. Arrow and Walk rotate with heading; vehicle icons stay upright.
- Sound Notifications: now under Settings > General with independent toggles for "Ping Sent" (TX/Discovery) and "Response Received" (repeater echo/RX).
🐛 Bug Fixes
- TX power reporting: removed radio power from the BLE mesh message and moved it to a per-ping power field in every API wardrive data post (TX, RX, DISC, TRACE). Previously, the power value in the mesh broadcast fell back to 0.3W for devices not in the model database, causing incorrect wattage even when the user had configured the correct power. Power is now read from user preferences and sent directly to the API with each ping, ensuring accurate reporting regardless of device model recognition.
- Fixed Car, Bike, and Boat GPS marker icons tilting with the map in compass mode. Vehicle icons now stay upright when the map rotates.
- Fixed auto-ping using stale GPS positions. Auto-pings now force a fresh GPS read before each ping, so the recorded position reflects where you are, not where you were.
- Fixed error switching from Offline Mode to Online Mode while connected ("Missing contact_uri or iata for registration"). Mode switch now re-establishes your zone before authenticating.
- Fixed iOS reconnect failures when the MeshCore device drops BLE bond keys mid-session. The app now detects the pairing error and clears the stale bond automatically before retrying. Now handles both apple-code 14 and 15.
- Filtered out spurious 0 dBm noise floor readings caused by AGC reset artifacts.
- Throttled geofence zone checks while disconnected to once per 30s instead of every second.
- Fixed race condition where a stale connection attempt could update a closed controller after reconnect timeout.
- Auto-ping no longer fires during reconnect.
- Fixed Hybrid mode degenerating to Active-only when stationary. Discovery pings now keep firing even when not moving.
- Increased discovery listening window from 5s to 7s for repeaters at range edge.
- Fixed double session release when reconnect times out.
- Fixed channels overflowing on the connect screen.
- Fixed time sync (Step 4) to properly await the device response before advancing.
- RX overlay "heard" window now matches your auto-ping interval instead of a fixed 5 seconds.
- Fixed inconsistent audio playback on Android across sessions.
🔧 Improvements
- Redesigned Top Heard overlay: repeaters sorted by SNR, color-coded per ping type (green TX, purple Discovery, cyan Trace, blue RX). Top 3 slots fully replace on each new ping. RX slot uses a rolling window matching your auto-ping interval. Overlay clears on stop, mode switch, disconnect, or log clear.
- Map tiles toggle renamed to "Disable Map Tiles" for clarity. ON disables tiles (saves data), OFF loads tiles normally.
- Aligned default repeater marker colors (active, new, dead, duplicate) with the web map.
- Session no longer expires when auto-ping is inactive. Heartbeat starts immediately on connection. Replaced session deadline timer with a 15-minute idle disconnect that resets on activity.
- Dot marker colors now match the web map (Discovery: purple to cyan, RX: blue to purple).
- Coverage dots draw chronologically so the most recent ping renders on top.
- When a zone is at TX capacity, Send Ping and Active/Hybrid buttons are hidden instead of showing disabled "Zone Full" states.
Thanks for using MeshMapper!
MeshMapper - v1.2.1(1774576930)
New Features
- Map Marker Style: choose between four coverage marker shapes under Settings > General. Dot (default, subtle border), Outlined Dot (prominent white border), Pin (teardrop), and Diamond.
- GPS Marker: choose your position icon on the map. Arrow (default), Car, Bike, Boat, or Walk. Arrow and Walk rotate with heading; vehicle icons stay upright.
- Sound Notifications: now under Settings > General with independent toggles for "Ping Sent" (TX/Discovery) and "Response Received" (repeater echo/RX).
Improvements
- All new settings are saved automatically and persist across app restarts.
- Session no longer expires when auto-ping is inactive. Heartbeat now starts immediately on connection instead of waiting for auto-ping, preventing silent session expiry. Replaced the session deadline timer with a 15-minute idle disconnect that resets on pings and auto-ping activity.
Bug Fixes
- Fixed an error when switching from Offline Mode back to Online Mode while connected. The app would show "Missing contact_uri or iata for registration" instead of resuming online wardriving. The mode switch now re-establishes your zone before authenticating. If zone detection fails (poor GPS or no internet), a clear error message is shown instead.
- Fixed iOS reconnect failures when the MeshCore device drops its BLE bond keys mid-session (every 13-23 min on affected devices). iOS would cache stale encryption keys causing all reconnect attempts to fail, requiring a manual forget/re-pair in iOS Settings. The app now detects the pairing error and clears the stale bond automatically before retrying.
- TX power reporting: removed radio power from the BLE mesh message and moved it to a per-ping power field in every API wardrive data post (TX, RX, DISC, TRACE). Previously the power value in the mesh broadcast fell back to 0.3W for devices not in the model database, causing incorrect wattage even when the user had configured the correct power. Power is now read from user preferences and sent directly to the API with each ping.
- Filtered out spurious 0 dBm noise floor readings caused by AGC reset artifacts. These values are now discarded before reaching the UI, chart, or API payloads.
- iOS bond clearing now handles apple-code 15 (encryption timeout) in addition to apple-code 14. Both are stale bond key errors that could cause cascading reconnect failures.
- Throttled geofence zone checks while disconnected to once per 30 seconds. Previously, driving while disconnected could trigger a zone check every second, spamming the API and filling the log.
- Fixed a race condition where a stale connection attempt could try to update a closed controller after the auto-reconnect timeout.
- Auto-ping no longer fires during reconnect. Added guards to prevent TX, discovery, and trace pings from attempting to send while auto-reconnect is in progress.
- Fixed Hybrid mode degenerating to Active-only when stationary. When a TX ping was blocked by the distance filter, the scheduler routed to the wrong next-ping handler, breaking the discovery/TX alternation. Discovery pings now keep firing even when not moving.
- Increased discovery listening window from 5s to 7s. Responses from repeaters at range edge could arrive after the window closed. I originally brought this down to 5s from 7s but I have now seen a few times in logs where responses came after 5s.
- Fixed double session release when reconnect times out. Both the timeout handler and the subsequent BLE disconnect event could trigger cleanup, potentially releasing the session twice. The second call now early-returns.
MeshMapper - v1.2.1(1774228308)
🐛 Bug Fixes
- Fixed channels overflowing on the connect screen
- Fixed time sync (Step 4) to properly await the device's response before advancing the connection
- RX overlay "heard" window now matches your auto-ping interval (15s, 30s, or 60s) instead of a fixed 5 seconds
- Take 2: Fixed inconsistent audio playback on Android where notification sounds would work in some sessions but not at all in others
🔧 Improvements
- Dot marker colors now match the web map's coverage layers (Discovery: purple → cyan, RX: blue → purple)
- Coverage dots now draw chronologically so the most recent ping renders on top when your path crosses itself
- Reduced thick white outlines on coverage dots to a subtle semi-transparent border for better readability when clustered
- When a zone is at TX capacity, Send Ping and Active/Hybrid buttons are now hidden instead of showing disabled "Zone Full" states. Passive mode expands to fill the full control panel width
MeshMapper - v1.2.1(1774022083)
New Features
- Persistent radio power overrides: custom TX power settings are now saved per device, similar to antenna selection. On connect, your previously set power override is automatically applied with a visual indicator showing it's been overridden. A "Reset to Auto" button in the power selector restores the auto-detected power for your device model.
Improvements
- Redesigned the Top Heard overlay. Now shows the repeaters that heard your most recent ping sorted by SNR, with color-coded indicators per ping type (green for TX, purple for Discovery, cyan for Trace, blue for RX). Top 3 slots show the best results from your latest ping and fully replace on each new ping. RX slot now shows the strongest passively overheard repeater within a rolling window that matches your auto-ping interval (15s, 30s, or 60s) instead of a hardcoded 5 seconds. Overlay clears on auto-ping stop, mode switch, disconnect, or log clear.