Skip to content

Releases: MeshMapper/MeshMapper_Project

MeshMapper - v1.3.0(1777429509)

29 Apr 02:27
1a76259

Choose a tag to compare

Pre-release

🐛 Bug Fixes

  • Focus Mode No-Location Filter: Repeaters with no published location no longer drag focus mode to (0, 0) off the coast of Africa. If all heard repeaters are unlocated, focus mode skips entirely. Unlocated repeaters now show a location-off icon in the detail sheet.
  • Coverage Overlay Flicker: Fixed the overlay flashing every ~10 seconds during long wardriving sessions. Tile refreshes are now double-buffered so new data appears without flicker.

MeshMapper - v1.3.0(1777345110)

28 Apr 03:00
1a76259

Choose a tag to compare

Pre-release

New Features

  • RX Hop Path: Tapping an RX marker now shows the full mesh path the packet travelled (origin → ... → us) as a tappable chain of repeater chips, with the receiving repeater tagged "(heard)". Each hop chip opens the standard repeater info popup so you can resolve names and distances along the path without leaving the sheet. The same chain renders on every RX entry in the Log tab. If your own carpeater was on the tail, it's stripped from the chain just like it's stripped from the displayed last-hop ID. CSV export gains a path_hops column on RX rows. Path data is transient and lost on app restart, matching how TX heard-repeater data already works.
  • Stale Repeater Filtering: Repeaters not heard in the past 30 days are now hidden from the map. They don't render as markers, don't contribute to cluster bubble counts, and don't get pulled into spider expansions. The repeater picker (trace mode) and Log tab still list every repeater the server returns, so nothing is lost from the data view, it's a map-only declutter.
  • Zone Transfer Auto-Registration: Crossing into a new zone no longer drops your session if the server hasn't seen your device's public key in that region. When zone-transfer auth comes back with unknown_device, MeshMapper now automatically requests a signed contact URI from the radio and re-submits as a register call, the same two-stage flow used during initial connect, so the transfer completes silently and wardriving resumes without a reconnect. Other auth failure reasons (GPS, capacity, etc.) still end the session as before.

🐛 Bug Fixes

  • Fixed a spiderfy bug where tapping a cluster bubble at max zoom could fan out markers from neighbouring clusters too. The spider group was computed via BFS through every repeater within ~42m of any chained neighbour, which doesn't match how MapLibre/Supercluster decides cluster membership. Cluster taps now read point_count directly from MapLibre and spread exactly that many of the nearest repeaters around the tap, so the fan always matches the count shown on the bubble.

MeshMapper - v1.3.0(1777259410)

27 Apr 03:12
1a76259

Choose a tag to compare

Pre-release

New Features

  • Repeater Marker Clustering: Stacked repeater markers at the same (or near-same) GPS coordinates now collapse into a cluster bubble with a count instead of rendering as an overlapping pile with illegible labels. Clustering runs at every zoom level (was previously dropped past zoom 14), so a stack stays as a single tappable target even fully zoomed in.
  • Spiderfy on Tap: Tapping a cluster at max zoom fans the members out in a ring (or spiral past 20 markers) connected by thin leader lines, each independently tappable and opening the repeater detail sheet. Below max zoom, taps zoom in further first so you can separate the stack visually.
  • Spider auto-collapses when you tap an empty area, tap a different cluster, or zoom past a 0.25-level delta. Panning keeps the spread open since leader lines live in geographic coordinates and follow the map naturally. On iOS, spread markers covered by the GPS dot are now tappable as well.

🐛 Bug Fixes

  • (iOS) Fixed a crash affecting backgrounded sessions. MapLibre's camera animator could throw an uncaught C++ exception when the GL context was degraded while backgrounded, sometimes crashing the app hours after a session ended. Camera animations are now suspended when the app leaves the foreground.
  • Fixed the GPS marker drifting toward the top of the map (and off-screen entirely in heading mode) when the bottom controls panel is expanded with auto-follow enabled. The centring offset was using a 256px tile assumption while MapLibre projects onto a 512px tile grid, so every padding-aware shift was 2x too large.
  • Rewrote the rotation portion of the offset so it works in metres along the bearing-rotated screen axes instead of mixing latitude-degrees and longitude-degrees as if they were the same unit. Heading mode now centres the marker correctly at any latitude, not just near the equator.

MeshMapper - v1.3.0(1777141737)

25 Apr 18:36
1a76259

Choose a tag to compare

Pre-release

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_disabled from 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 Hive preferences being wiped by transient open failures. The startup theme loader was treating a timeout as corruption and deleting the entire user_preferences box. 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

19 Apr 16:55
1a76259

Choose a tag to compare

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)

15 Apr 11:01
1a76259

Choose a tag to compare

Pre-release

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)

06 Apr 22:51
1a76259

Choose a tag to compare

Pre-release

Improvements

  • Custom API forwarding now supports optional device public key prefix and IATA zone code in payloads.

MeshMapper - v1.2.2(1775498170)

06 Apr 18:06
1a76259

Choose a tag to compare

Pre-release

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)

06 Apr 02:18
1a76259

Choose a tag to compare

Pre-release

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

01 Apr 01:48
1a76259

Choose a tag to compare

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!