Skip to content

Releases: MeshMapper/MeshMapper_Project

MeshMapper- v1.3.0-WIFI/USB(1778409119)

10 May 11:41
1a76259

Choose a tag to compare

Pre-release

Experimental: TCP & USB Support

This build adds highly experimental TCP and USB connection support. TCP is in a good spot but USB on Android is largely untested. Please report any issues.

New Features

  • TCP support: connect to your device over the network
  • USB support: connect via USB serial (Android, experimental)

MeshMapper - v1.3.0(1778348910)

09 May 17:52
1a76259

Choose a tag to compare

Pre-release

ℹ️ Note: The coverage overlay tile flicker is still present in this build. CSP-Tom and I are discussing a new approach to how overlay tiles are added that should reduce battery usage and unlock new functionality. No ETA on this yet.

ℹ️ Note: I am working on TCP and USB support and need active testers for these features. Please react to this message if you would like to participate.

🔧 Improvements

  • Auto-Follow Zoom: Tap follow and the map zooms to street level once; after that it just pans. Pinch-zooming while following now sticks instead of fighting you on every tick.
  • Duplicate Repeater ID Indicator: When a short repeater ID matches multiple repeaters, focus mode now draws amber "DUPLICATE ID" lines to all candidates. Tap the amber warning in the bottom sheet to see all possible matches with names, distances, and status.
  • Per-Region Stale Threshold: Stale repeater cutoff is now read from the server per-region to match the web client.
  • Battery & Performance: Countdown timers, noise floor, and battery streams no longer trigger unnecessary full UI rebuilds, significantly reducing CPU and battery usage during long sessions.
  • Anonymous Mode UX: Enabling anonymous mode now shows a popup with progress instead of switching to the Connect tab to show the reconnection flow.

🐛 Bug Fixes

  • (iOS) Fixed a crash on app launch and resume from background caused by MapLibre firing camera animations before the GL surface was ready.
  • (Android) Fixed a crash when returning to the app after extended background time. Same root cause as the iOS fix — MapLibre's GL surface can be temporarily invalid on resume. Map interactions now wait one frame after resume. Also fixed flutter_local_notifications TypeToken errors on every startup.
  • Anonymous Mode Fix: Fixed a bug where Anonymous mode could become permanently stuck after an unexpected Bluetooth disconnect. The device's real name is now persisted before the anonymous rename and automatically restored on the next connection when Anonymous mode is off. If you've been affected by this, your name will be restored on your next connect.
  • Focus mode no longer jumps to (0, 0) when heard repeaters have no published location. Unlocated repeaters now show a location-off icon in the detail sheet.
  • Map label flicker at max zoom during follow mode fixed.
  • Offline map cancel during setup no longer orphans the native download.
  • Offline Mode Toggle Fix: Fixed being unable to switch from offline back to online mode while connected. The zone status check was skipped because the offline flag hadn't been cleared yet, creating a catch-22. The flag is now cleared before the zone check and restored if the switch fails.
  • Offline Upload Fix: Offline sessions that got stuck at "partial upload" now work reliably. The app waits for server propagation and retries with backoff if the first attempt is rejected. Invalid data is discarded instead of blocking the entire session, and successfully-uploaded pings are removed so retrying picks up where it left off.
  • Stale threshold now applies immediately on zone transfers instead of waiting up to 60s.
  • Spider fan-out rings no longer render at 2x intended radius.
  • DISC Tap Fix: Failed discovery markers in drop mode are now tappable again. Rendering them with the TX-fail icon was overwriting their tap metadata.
  • BLE Disconnect Error Message: Fixed misleading "No empty channel slots" error when BLE disconnects during connection. The error now accurately tells the user to try connecting again.
  • Fixed a timer dispose leak on teardown.
  • Code cleanup: removed duplicate parsing and unused constants.

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.