Skip to content

Releases: xarleyn/Meshcore-Wardrive-Android-Source

v1.0.44-x

Choose a tag to compare

@github-actions github-actions released this 01 Sep 21:50

Breaking change

  • Changed the Android package ID from mintylinux.meshcore.wardrive to
    io.github.xarleyn.meshcore.wardrive. Android installs this fork separately
    from the original application and from older fork builds. No data migration
    is provided: the new package starts with empty local data and default
    settings, and requires permissions, background/MIUI settings, device access,
    widgets, offline maps, and credentials to be configured again.

Added

  • Full database backup (Settings → Backup): "Export Database" writes a
    consistent copy of the entire SQLite database (samples, sessions, upload
    tracking, planned markers, privacy zones, exclusion zones, devices) to a
    file or the share sheet, and "Import Database" restores it back. The picked
    file is validated (SQLite signature, expected schema, schema version) before
    anything is replaced, the previous database is kept until the restored copy
    reopens successfully, and backups from older app versions are upgraded
    automatically. Tracking must be stopped before an import.

  • Independent Map Display toggles for privacy zones and GPS exclusion zones.
    Each enabled layer shows both the zone center and its configured radius;
    both choices participate in settings export/import.

  • Adjustable sample point size (Settings → Map Display): enable a fixed point
    size to replace automatic sizing, then choose a diameter from 8 to 32 px.
    The option is off by default and participates in settings export/import.

  • Geohash sample grouping (Settings → Map Display): when enabled, every
    measurement recorded inside one geohash cell collapses into a single marker
    placed at the average measurement position, regardless of zoom and
    independently of the low-zoom simplification setting. Tapping such a marker
    still opens the grouped-measurements dialog with the full list inside.
    Off by default.

  • Optimistic coverage display (Settings → Map Display): when enabled, a cell
    with at least one successful ping is painted as good and its failed pings
    are ignored. The ping dates still matter — if the newest success is older
    than a month and failures were recorded after it, the failures win again
    because the coverage most likely went dark. The setting participates in
    settings export/import.

  • Carpeater target repeater picker: Settings → Carpeater now opens a
    searchable list of previously found repeaters instead of a bare text field.
    Each row shows the repeater's advertised name together with its ID, search
    matches either of them, the currently selected repeater is highlighted, and
    manual ID entry remains available as a fallback.

Changed

  • The privacy-zone and GPS-exclusion ("impossible zone") dialogs now let you
    pick any radius between 50 m and 10 km with a slider, and an editable meters
    field replaces the fixed 500 m / 1 km / 2 km / 5 km choices. The slider and
    the field stay in sync, and typed values outside the range are clamped. A
    "Preview on map" link collapses the dialog into a small bar at the bottom of
    the screen and draws the zone circle on the map — the map stays interactive,
    and the bar offers Edit, Add, and Close actions.

  • Distance achievements (🚗 🛣️ ✈️) now follow the selected distance unit in
    both their descriptions and their unlock logic, without converting between
    units: the thresholds stay 10/100/500, so 100 miles and 100 km unlock the
    same badge depending on the setting.

  • Debug builds now use io.github.xarleyn.meshcore.wardrive.debug, allowing a
    debug and signed release build of the fork to coexist.

  • Fork releases use base-x version names such as 1.0.44-x. The update
    checker compares base versions, prefers fork builds over legacy tags
    without the suffix, ignores downgrades, and selects the newest compatible
    tag from multiple GitHub releases.

  • The release workflow verifies package ID, version name, increasing version
    code, APK signature, release tag, and asset name before publication, and
    fills the GitHub release description from the matching CHANGELOG section.

Fixed

  • "Show Successful Pings Only" now applies to every sample-derived layer, not
    just the round sample markers. Coverage squares whose every ping failed are
    hidden (cells with at least one success keep their color computed from the
    full ping history), and the route trail and heatmap stop drawing failed
    pings and GPS-only samples.
  • Carpeater neighbour scans now store SNR with the same half-away-from-zero
    rounding as discovery pings. The scan previously truncated negative SNR
    toward zero (for example -1.75 dB was stored as -1 dB), which made weak
    links look better than measured in saved samples and sound feedback.

APK: meshcore-wardrive-xarleyn-1.0.44-x-47.apk

v1.0.43

Choose a tag to compare

@github-actions github-actions released this 22 Aug 18:58

Changed

  • Settings overview groups categories by topic (Map, Sampling & alerts, App,
    Data, System) with uppercase headers and a one-line description on each
    category tile.

Added

  • Hidden achievement "Быть легендой mesh сетей Смоленска" (💎): unlocks while
    the connected companion radio reports a node name starting with "Ya_",
    "Yakut", or "Якут" (case-insensitive). The badge stays invisible on the
    Achievements screen until it is unlocked. The device's own MeshCore advert
    name is now parsed from the SELF_INFO handshake response and tracked while
    the companion is connected; it is separate from the Bluetooth/USB transport
    name.
  • Auto-ping pause on bad GPS: when the configured number of consecutive
    position fixes is rejected by the location quality filters, automatic pings
    pause until the next valid fix instead of pinging a stale position. The
    feature is on by default after 5 rejected fixes; the toggle and threshold
    live in Settings → Location Quality Filters → Auto-Ping Pause and are
    included in settings export/import. A snackbar announces each pause and
    resume.
  • Audible link-loss alert: when the LoRa companion radio disconnects
    unexpectedly, the app plays a distinctive double-beep tone with vibration.
    A disconnect made explicitly from the map stays silent. The alert can be
    turned off in Settings → Feedback ("Link Loss Alert", enabled by default)
    and is included in settings export/import.
  • Automatic reconnection to the LoRa companion radio after an unexpected
    connection loss (USB unplugged or Bluetooth link dropped). Reconnect attempts
    use exponential backoff (3 s doubling up to once a minute) and refresh the
    contact list on success. Auto-ping suspended by the loss resumes when the
    link is restored. A disconnect made explicitly from the map is never followed
    by an automatic reconnection.
  • In-app language (System / English / Русский) under Settings → App & device;
    Russian UI.
  • Impossible Zones in Location Quality Filters: user-defined circles
    where you cannot physically be. GPS or Wi-Fi fixes inside a zone are
    discarded (no sample, no ping) and the map keeps the last valid
    position. They can be added from Settings or by long-pressing the map;
    they are not drawn on the map.
  • Long-pressing the map now opens a choice of what to add: a planned repeater,
    a privacy zone, or a GPS-impossible zone.
  • Before a GPS fix is available, the map opens on the average of stored
    measurements at a city-scale zoom. Spread-out samples zoom out to fit. With
    no samples it keeps the previous default view, and the first GPS fix still
    recenters as before.
  • Long-press the map Play button to start a new recording on a blank map
    without deleting stored samples. Short press still shows all coverage. An
    empty session (no GPS points) asks whether to keep it; discarding or deleting
    the session on the map falls back to the latest saved session.
  • Battery saver can now be turned off in Settings → App & device. Automatic
    ping-interval doubling at ≤20% battery stays on by default and can be changed
    while a recording is running.
  • Direction-arrow mode now offers a figure-8 compass calibration when Android
    reports the magnetometer as unreliable. A compact map banner appears after a
    short delay, Later snoozes it for a day, and Calibrate Compass remains in
    Settings or via a long-press on the compass button.
  • Interface and map themes can now be selected independently. Existing installs
    keep their previous map appearance when the new setting is initialized.
  • Map LOD (geohash grouping of coverage, edges, and samples at low zoom) can now
    be turned off in Map display. It stays on by default. With it off, the map
    shows native coverage cells and individual GPS sample points.
  • Added a map-provider investigation covering Yandex Tiles API, Yandex MapKit,
    hosted alternatives, offline support, migration effort, and licensing risks.
  • GitHub Actions CI runs format checks, analyzer, tests, and a debug APK build
    on main. A manual Release APK workflow publishes a signed APK to GitHub
    Releases using repository signing secrets and the version from pubspec.yaml.
  • Location rejection thresholds are now configurable in a dedicated expandable
    Settings group, with user-friendly km/h speed inputs and one-tap restoration
    of the previous built-in defaults.
  • Settings now use a modern Android-style overview with grouped category cards
    and dedicated child pages for each category.
  • Starting a recording now requests precise and always-on location access plus
    an exemption from Android battery optimization. When beaconDB Wi-Fi
    positioning is enabled, the app also links to Developer options to disable
    Wi-Fi scan throttling and holds a Wi-Fi lock during foreground tracking.
  • Optional beaconDB Wi-Fi positioning can now be enabled in Settings. It scans
    nearby access points every 30 seconds and gives a valid Wi-Fi-only estimate
    priority over Android fused/GPS positions. IP and cell fallbacks are disabled,
    _nomap, hidden, randomized, and stale networks are excluded, and the active
    Wi-Fi position is shown with a cyan marker.
  • Discovery response collection is now configurable: fast mode finishes three
    seconds after the first response, while thorough mode keeps listening until
    the configured discovery timeout.
  • Fresh installs now use the regional meshcoretel.ru upload endpoint for
    Russian locales and meshcoretel.io elsewhere.
  • A new Keep Screen On setting prevents the display from sleeping while the
    app is open, without interfering with the existing tracking wakelock.
  • The current GPS marker can now be switched between the classic blue circle
    and a compass-aware direction arrow in Settings. The arrow falls back to GPS
    course while moving when a compass sensor is unavailable. In arrow mode, the
    compass button toggles heading-up rotation; rotating the map manually stops
    heading-up tracking.
  • An app-wide offline banner now detects restricted or unavailable internet
    access with a short periodic connectivity check. GPS tracking, radio
    communication, and local sample storage continue while offline.
  • Successful pings heard by at least three positioned repeaters now show a
    temporary grey radio-position estimate and its uncertainty circle. The
    estimate is visually distinct from the blue GPS position and can be hidden
    in map settings without disabling its calculation.

Fixed

  • Dialogs, bottom sheets, file pickers, and nested screens opened from a
    Settings category now return to that category instead of the overview.
  • Community coverage tiles now use exact geohash bounds and the same LOD
    precision as local coverage, so they line up with the user's grid. They stay
    visible regardless of the session filter and are hidden only by their own
    map-display toggle. Tap details use the same aggregated cells as the overlay.
  • Long-pressing Play starts a blank-map session. The Play button no longer uses
    a Material tooltip, which was swallowing the long-press gesture.
  • Session History "Tap to view on map" uses the theme primary color so it stays
    readable on dark cards.
  • Quick Settings no longer crashes when Discovery Timeout is 5s or 25s, or when
    ping distance is Frequent (50 m) or another value missing from the compact
    menus. Those lists now match Settings and still accept unknown saved values.
  • Settings text fields now keep their controllers alive until dialog dismissal
    finishes, preventing crashes and cascading layout errors after saving location
    quality thresholds and other editable preferences.
  • Location quality controls now open as a dedicated submenu and no longer rely
    on Flutter's ExpansionTile announcement event, which Android API 36 reports
    as deprecated.
  • The map now keeps searching for a fused Android position whenever it is open,
    even before recording starts. A watchdog restarts stalled or closed location
    streams and resumes automatically after Location Services are re-enabled.
  • Android-reported mock locations are excluded from the map and recorded
    wardrive data. GPS samples and trip distance retain their five-metre movement
    threshold even though the live position stream updates more frequently.
  • Discovery pings now persist one sample for every unique repeater response,
    including each response's latency, while duplicate responses from the same
    node remain de-duplicated.
  • Coverage-to-repeater lines now match full and short node IDs without case
    sensitivity, and coverage details show two-byte repeater prefixes.
  • The connect action is disabled for the full USB/Bluetooth connection attempt
    so overlapping scans and connection requests cannot be started.
  • Repeater names containing Cyrillic characters or emoji are now decoded and
    displayed correctly.
  • Radio ping results are now shown as soon as the first tagged discovery
    response arrives, with the actual response time. Additional repeater
    responses are still collected for radio-position estimation without delaying
    feedback, and overlapping discovery cycles are prevented.
  • Companion-radio communication now parses firmware layout 13 while correctly
    negotiating the documented app response layout 3. Golden protocol tests pin
    command/response assignments, USB/BLE framing, discovery, contacts,
    SELF_INFO, channel data, UTF-8 text, coordinates, and malformed-frame
    handling. Channel messages no longer use UTF-16 bytes or append an extra
    NUL, and quarter-dB SNR is preserved until the integer application boundary.
    BLE connections use the official UART UUIDs and request MTU 512.
  • Update checks now time out quickly and show a concise offline error instead
    of leaving the request hanging.
  • Android location fixes now use the fused provider so GPS, cellular, and
    nearby W...
Read more

v1.0.42

v1.0.42 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 20 Aug 18:51

Signed release APK for 1.0.42 (versionCode 45).