Android

MeshSat Android changelog: mobile gateway app releases.

Every tagged release of the app, generated from the commit history of meshsat-android: features and fixes, newest first. Untagged work on the main branch is listed under Unreleased. Signed APKs are on the releases page; the repository’s CHANGELOG.md carries the same history in Keep a Changelog form.

Unreleased (main, last change 2026-09-15)

Features

  • hub: relay client, a tunnel through the Hub to reach a kit behind NAT (6966896f)
  • sdd-tier6: customer-facing CHANGELOG.md generated from git history (e0ae89b1)
  • sdd-tier5: per-tag release notes generated from outcomes (4f3f1be4)
  • sdd-tier4: CI gate + retrospective outcomes (186bdc5a)
  • sdd-tier3: acceptance test mappings + worker dispatch packets (6322f726)
  • sdd-tier2: observability blocks on every task (ce49aa92)

Fixes

  • hub: force TLS SNI on Hub MQTT sockets (355bc027)
  • sdd: recount metrics, drop Astrocast, pin the SDD validator (76ad448d)
  • license: align all licence statements to GPLv3 and add NOTICE (c933cdd3)

v2.8.6 (2026-04-05)

Features

  • telemetry: local release telemetry ring buffer (b56a6856)

v2.8.5 (2026-04-05)

Features

  • crypto: TOFU key pinning in KeyBundleImporter + bundle v2 (7bfce9d4)

v2.8.4 (2026-04-05)

Fixes

  • transport: gate all I/O on connection state, silence disconnected-state spam (2d70a61e)

v2.8.3 (2026-04-05)

Fixes

  • sat: correct ms/sec unit mismatch in PassScheduler OOM (2191f7b9)
  • satellite: cache pass predictions to prevent OOM in PassScheduler (c0036113)

v2.8.2 (2026-04-05)

Fixes

  • crypto: move BouncyCastle to end of JCA provider chain (d0ed2571)

v2.8.1 (2026-04-05)

Fixes

  • proguard: add osmdroid keep rules to prevent white map tiles on release (300dc605)

v2.8.0 (2026-04-05)

Features

  • ci: add release signing with OpenBao + Play Store AAB (fc2d4201)

Fixes

  • proguard: add dontwarn rules for Tink compile-time annotations (04d58c5d)

v2.7.0 (2026-04-04)

Features

  • tak: receive TAK positions from Hub broadcast + settings API (e28c3c44)
  • map: TAK/CoT-compliant Canvas markers: diamond, square, emergency (67679b84)
  • tak: protobuf v1 + waypoint builder + enriched position (5060c443)
  • tak: add TAK Settings section with enable/callsign/output toggles (98b8644c)
  • sms: auto-forward + /api/sms/auto-forward endpoint (e7f30778)
  • api: add /api/sms/send to Android LocalApiServer (421629ff)
  • sms: Android outbound SMAZ2 compress + wildcard key encrypt (6e5dfed9)
  • codec: port SMAZ2 compressor/decompressor to Kotlin (9c256f61)

Fixes

  • map: replace zoomToBoundingBox with direct center+zoom (7718d820)
  • map: debounce Room position Flow to prevent ANR from marker burst (1fceda50)
  • map: prevent ANR from repeated zoomToBoundingBox on marker updates (e9f7ed47)
  • mqtt: subscribe to TAK broadcast topic for fleet-wide positions (7557d701)
  • tak: use CotPrecision camelCase field names (altSrc, geoPointSrc) (5b467aaf)
  • tak: use explicit getters for PrecisionLocation proto fields (028059ea)
  • tak: use java_package imports for proto-generated classes (7635e8c3)
  • tak: correct protobuf class names for java_multiple_files + proto3 (4a0e7f3c)
  • tak: use explicit hasXxx() checks in protoToCotEvent (4e9f3873)
  • sms: show SmsReceiver-decrypted text in Messages UI (9585794c)
  • sms: fall back to Hub wildcard key (sms:*) for SMS decryption (a142d46c)
  • hemb: synchronize RLNC decoder to prevent concurrent ArrayIndexOutOfBounds (03a93c0b)
  • hemb: wire HeMB inbound detection on Android RnsTransportNode (0a1d499e)

v2.6.1 (2026-03-31)

Fixes

  • hemb: backport 2 HeMB bug fixes from bridge E2E integration (e2022e13)

v2.6.0 (2026-03-29)

Features

  • hemb: port HeMB bearer bonding protocol to Android (b752c2da)

v2.5.0 (2026-03-29)

Features

  • reticulum: TLS+mTLS for TCP interface, BouncyCastle for Android 16 (39c80ae2)

v2.4.1 (2026-03-29)

Fixes

  • hub: ping button uses HubReporter client, not MqttTransport (3ba47c1a)

v2.4.0 (2026-03-29)

Fixes

  • mqtt: mTLS trust store must include system CAs alongside custom CA (17a2a855)

v2.3.1 (2026-03-29)

Features

  • hub: ECDSA-P256 signed birth messages for Hub verification (424ec3b9)

v2.3.0 (2026-03-29)

Features

  • hub: health LED, ping button, QR auto-populate fix (aef67178)

v2.2.2 (2026-03-28)

Fixes

  • provision: support both inline and nonce QR formats (29326ea9)

v2.2.1 (2026-03-28)

Features

  • provision: two-step QR provisioning (nonce URL + HTTPS claim) (e1cd3ad6)

v2.2.0 (2026-03-28)

Features

  • provision: QR code Hub provisioning with mTLS auto-config (8b175baa)

v2.1.0 (2026-03-28)

Features

  • reticulum: wire MQTT Reticulum interface for Hub interop (b401254d)

v2.0.1 (2026-03-28)

Features

  • timesync: add Cellular NITZ as stratum 0 time source (005c1731)

Fixes

  • protocol: paid interface filter + bridge-compatible wire formats (31b05a97)

v2.0.0 (2026-03-28)

Features

  • protocol: DTN + FEC + Time Sync + RLNC protocol enhancements (b3e14bac)

v1.9.1 (2026-03-28)

Fixes

  • map: use online OSM tiles: MBTiles offline never rendered (413f904f)

v1.9.0 (2026-03-28)

Fixes

  • map: use osmdroid auto-detect for MBTiles + MapScreen outside NavHost (197fa660)

v1.8.5 (2026-03-28)

Fixes

  • map: move MapScreen outside NavHost to prevent view detachment (44724ebe)

v1.8.4 (2026-03-27)

Fixes

  • map: restart tile provider threads after view re-attach (995666ab)

v1.8.3 (2026-03-27)

Fixes

  • map: singleton MapView to survive Compose NavHost tab switches (8e99535f)

v1.8.2 (2026-03-27)

Fixes

  • map: proper osmdroid lifecycle management for tile persistence (891b7a4e)

v1.8.1 (2026-03-27)

Fixes

  • map: tile provider persistence and dark mode color inversion (885900ba)

v1.8.0 (2026-03-27)

Features

  • map: replace Leaflet/WebView with osmdroid native map rendering (a76504fa)

v1.7.1 (2026-03-27)

Features

  • map: vector tile rendering, offline-first, bundled world map (812c516e)

v1.7.0 (2026-03-27)

Features

  • map: vector tile rendering with dark/light themes and offline-first default (b5eda0ad)

v1.6.0 (2026-03-27)

Features

  • map: offline MBTiles map tile support (db278060)

v1.5.5 (2026-03-27)

Fixes

  • crypto: nuclear reset for corrupted EncryptedSharedPreferences (9ebbb7b5)

v1.5.4 (2026-03-27)

Fixes

  • map: load tiles via WebViewAssetLoader instead of file:// origin (a66a2078)

v1.5.3 (2026-03-27)

Fixes

  • crypto: handle corrupted EncryptedSharedPreferences on startup (7c0bf59b)

v1.5.2 (2026-03-27)

Fixes

  • service: foreground service crash on Android 14+ when BT permission denied (aff681f2)

v1.5.1 (2026-03-27)

Features

  • ui: dashboard widget reorder dialog with persistent order (73cc818c)

v1.5.0 (2026-03-27)

Features

  • engine: Iridium credit tracking and gauge visualization (655c7fd0)
  • ui: Reticulum widget and dashboard enhancements (fa736a0c)
  • ui: credential management screen with PEM import (34944471)
  • service: wire pass scheduler, mTLS, registry, and TCP peers (d66735ea)
  • settings: announce interval and routing config UI (3a9fb369)
  • config: YAML config export/import matching Bridge format (2965d991)
  • reticulum: TCP multi-peer management with Room DB (590ccb24)
  • service: multi-instance transport registry (8a1e5875)
  • hub: mTLS client certificate support for Hub MQTT/NATS (01b555bb)
  • satellite: pass-aware scheduling: 4-mode transport polling (9e4c1b08)
  • api: add service restart API and UI button (ac51ef32)
  • hub: implement send_mt, flush_burst, config_update, reboot commands (241b8522)
  • ble: preserve OTA-learned node identity on config download merge (35edb689)
  • credentials: credential import via Hub sync + QR bundles (a00b58e0)

v1.4.0 (2026-03-23)

Features

  • reticulum: add TCP_HDLC encapsulation enum for stock RNS wire compat (216fee10)
  • hub: HubReporter: bridge-to-hub uplink protocol for Android (81f6cafa)
  • astrocast: add RnsAstrocastInterface + GatewayService integration (2e234c9f)
  • reticulum: add TCP, BLE peripheral, Tor, and WireGuard interfaces (dc52780b)
  • service: wire RnsTransportNode into GatewayService lifecycle (be291f9d)
  • reticulum: add RnsIridium9704Interface for Reticulum over IMT (a023cf27)
  • reticulum: add Transport Node with forwarding table and packet relay (dbd8c26d)
  • service: integrate Iridium 9704 transport into GatewayService (0a6c622a)
  • bt: add RockBLOCK 9704 IMT transport via Bluetooth SPP (cfb61904)
  • ui: add Meshtastic radio config tab with all settings (7a0ed6d0)
  • ble: adopt official Meshtastic protobuf bindings (ba6ebfc9)

v1.3.4 (2026-03-20)

Fixes

  • start service after permissions + bundle Leaflet locally (003d70c8)

v1.3.3 (2026-03-20)

Fixes

  • crash on start + map always visible (cf1b4174)

v1.3.2 (2026-03-20)

Fixes

  • crash after 1min + no cell tower location (a20e2e7f)

v1.3.1 (2026-03-20)

Fixes

  • ui: maps not loading: WebView needs non-null base URL for external resources (8b2b3257)

v1.3.0 (2026-03-20)

Features

  • astrocast: add message fragmentation support: parity with Bridge (26c88002)
  • aprs: wire directed messaging with ACK/REJ into GatewayService (7cd9eb9f)
  • aprs: directed messaging with ACK/REJ tracking (f880ff8e)
  • aprs: add smart position beaconing with corner pegging (d79a010b)
  • aprs: add smart position beaconing with corner pegging (fe093482)
  • aprs: APRS-IS direct connect: standalone APRS station without APRSDroid (5dee4142)
  • astrocast: Astronode S serial protocol driver + SPP transport (15c12e32)
  • security: hardware-backed Android Keystore for all crypto keys (de9b043a)
  • tak: CoT v2.0 generation + ATAK integration + inbound CoT parsing (5d441c3b)
  • crypto: QR code key sync with Hub, AES-GCM wire format tests (1666cf20)
  • compress: per-channel compression toggle: disable MSVQ-SC for Iridium (f7d51bfd)
  • sms: bidirectional SMS relay between Android and Hub via MQTT (6e5d6251)
  • reticulum: path discovery with cost-aware routing, reliable resource transfer (ed9792fb)
  • reticulum: 5 transport interfaces: BLE, SMS, Iridium, APRS, MQTT (f37804be)
  • reticulum: Meshtastic BLE interface adapter for Reticulum packets (c1590152)
  • reticulum: ECDH link handshake with HKDF key derivation (95e07865)
  • reticulum: wire-compatible announce with 64-byte public_key field (2c2f4219)
  • reticulum: wire-compatible packet format, destination hash, announce data (36dcb8d3)
  • compat: protocol version byte, SBD fragmentation, cert pinning, APRS UI (e74457db)
  • aprs: Android APRS adapter: KISS codec, AX.25, APRS encode/decode (609d0525)
  • mqtt: Android MQTT client for Hub connectivity (244ba2d4)

Fixes

  • astrocast: align CRC byte order with Go bridge + cross-impl test vectors (9d750be1)

v1.2.1 (2026-03-16)

Fixes

  • lazy SMS permission request with banner in Messages screen (e85149b0)

v1.2.0 (2026-03-16)

Features

  • Peers screen, message tabs, map layers, status bar, topology stats, interface tabs (31a82de2)
  • dashboard overhaul + pass elevation chart (649d43fa)

v1.1.1 (2026-03-16)

Fixes

  • maps tiles, SMS permissions, navigation redesign (e04b0574)

v1.1.0 (2026-03-16)

Features

  • ui: Phase J satellite pass predictor (d3ad450d)
  • ui: add radio config + device admin screen (dc3745d1)
  • ui: Phase I interface management screen (092265a1)
  • ui: Phase H bridge rules management UI (25df6bda)

Fixes

  • audit log screen (Android), battery/lifecycle, dynamic interfaces, reboot confirm (5319f20a)

v1.0.2 (2026-03-16)

Fixes

  • maps grey square, invasive SMS perms, add dark/light theme toggle (3e679878)

v1.0.1 (2026-03-16)

Fixes

  • crash on service creation: defensive startForeground + try/catch init (76ef385b)

v1.0.0 (2026-03-16)

Features

  • close MESHSAT-57 parity gaps: dedup wiring, telemetry, UI fixes, 59 unit tests (3606ebc2)
  • ui: Phase G UI parity: settings, topology, deliveries, geofence (64a31b7f)
  • api: Phase F config, signing, and local REST API (c68b8c92)
  • routing: Phase E routing layer: identity, announce, link manager (8a0454b5)
  • engine: Phase D field intelligence: deadman, geofence, health, codecs, burst (c0b93c88)
  • transport: Phase C transport hardening: state machine, store-forward, QoS (6e2743a7)
  • routing: port Go gateway routing to Kotlin: Phase B (93ccf790)
  • android: add core infrastructure: channel registry, dedup, rate limiter, transform pipeline (ab9679b4)
  • android: add MSVQ-SC compression settings UI (78e77489)
  • android: MSVQ-SC lossy semantic compression for SMS (36812fa1)

Fixes

  • android: audit fixes: ProGuard rules, tensor leak, thread safety, NaN guard (678b44f1)
  • ci: use bash to run gradlew (chmod fails on read-only checkout) (c41dfdae)

v0.3.0 (2026-03-11)

Features

  • android: chat replies, per-conv encryption, GPS map, device info, notifications (2dd4db66)

Fixes

  • android: SMS detection, per-conversation keys, signal graphs (265f512f)

v0.2.0 (2026-03-11)

Features

  • android: conversations, map, SOS, signal graphs, bug fixes (117f4316)
  • sms: register as default SMS app candidate for GrapheneOS (000e5005)

Fixes

  • android: keep Rules tab, move Crypto to Settings, remove duplicate screens (64999dfd)
  • android: BLE scan, SMS decrypt logging, message UX improvements (de2bccf9)

v0.1.1 (2026-03-11)

Same sources as v0.1.0.

v0.1.0 (2026-03-11)

Features

  • persist rules to Room, message search, signal polling, About screen, key sharing (f20a655b)
  • rules UI, Iridium message flow, mesh send, app icon, ProGuard (ac12f0a7)
  • add BLE, SPP, rules engine, and wire transports into gateway service (7ff43392)
  • initial Android app with SMS decrypt and MeshSat-dark UI (946fb0a9)

Fixes

  • increase Gradle heap for 8GB LXC, build passes (f00156cf)
  • build config: Gradle wrapper, AndroidX, BuildConfig, memory tuning (048113db)