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)