vault / meshtastic-android / v2.8.0
meshtastic-android @ v2.8.0
integrity
- size
- 24.2 MiB
- downloaded
- last checked
release notes
What's Changed
🏗️ Features
- feat(export): add hop start and relay node columns to CSV export by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5822
- feat(mqtt): add phone-local MQTT proxy cutoff control by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5823
- feat(node): show our node shortname chip on the Nodes tab by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5820
- feat(settings): add remote "Set time" admin action by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5821
- feat(network): on-device capture-replay transport + ingestion fuzzing/hardening by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5846
- perf(node): add stable keys and contentType to telemetry chart lists by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5869
- feat(connections): list only BLE devices visible via scan by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5877
- feat(ui): use modem-preset-relative SNR thresholds for signal quality by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5903
- feat(firmware): link OTAFIX bootloader from slow-DFU success screen by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5917
- feat(node): add GPX export to position log screen by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5919
- feat: offline-first event firmware metadata (JSON schema + bundled asset) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5920
- feat(firmware): drive event firmware branding from bundled metadata by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5929
- feat(lora): consume region→preset compatibility map + TINY presets (protobufs #951) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5834
- feat(lockdown): firmware lockdown mode (provision / unlock / lock-now) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5939
- feat(lora): gate region→preset map + TINY presets on firmware capability by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5941
- feat(security): surface XEdDSA packet signing in node & messaging UI by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5976
- fix(security): make XEdDSA signing shield green & prominent by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5980
- Prevent Range Test from running on public/default channel by @dubsector in https://github.com/meshtastic/Meshtastic-Android/pull/5986
- feat(network): migrate TcpTransport to ktor-network (commonMain) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5995
- feat(ui): StatusSurface AA legibility + node-details signing/transport polish by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5985
- feat: NFC tag writing for shared contacts and channels by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6030
- feat: Waypoint geofences (editor, map overlays, alert engine) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6014
- feat(lora): default US region to LongTurbo preset by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6009
- feat(connections): add deep link to trigger a connection by address by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6036
- feat(desktop): add Flathub screenshots to metainfo.xml by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6042
- feat(testing): debug-only skip_onboarding intent extra for AI/CI tooling by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6044
- feat(discovery): surface received Mesh Beacon invitations by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6043
- feat(firmware): nRF52 legacy BLE DFU — stock-bootloader fixes + stranded-device recovery by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6041
- feat(settings): wire is_unmessagable/is_licensed into DeviceProfile export/import by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6065
- Style GeoJSON overlays from simplestyle-spec (fill/stroke) by @garthvh in https://github.com/meshtastic/Meshtastic-Android/pull/6088
- feat(discovery): Mesh Beacon client with iOS 014-mesh-beacons parity by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6097
- feat(messaging): translate chat messages in-place with on-device ML Kit (google flavor only) by @thebentern in https://github.com/meshtastic/Meshtastic-Android/pull/6103
- feat(database): unify device database across transports by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6096
- feat: compute EPA NowCast AQI from PM2.5 history by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6102
- Add secure key backup/restore/delete for security config by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6105
- feat(messaging): @mention with deep-link to node detail (#6098) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6108
- feat(node): label power channels and fix pressure axis scale by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6111
- Show outgoing message status text by @RCGV1 in https://github.com/meshtastic/Meshtastic-Android/pull/6121
- feat(map): Site Planner coverage integration — import + estimate by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6136
- feat(node): show CO₂ sensor temperature & humidity on Air Quality page by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6143
- feat(node): histogram of nodes per hop distance (#5745) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6146
- feat(map): F-Droid map-layer parity — share layer UI + logic in common source (#6138) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6148
- Promote CO2 temperatures to summary if no other temp is present. by @DaneEvans in https://github.com/meshtastic/Meshtastic-Android/pull/6153
- feat(firmware): Confirm local firmware files before flashing by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6083
- feat(messaging): split Conversations into collapsible Channels/DM sections by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6169
- perf(mqtt): drop payload-less client-proxy downlinks before forwarding by @thebentern in https://github.com/meshtastic/Meshtastic-Android/pull/6171
- feat(map): send a waypoint as a DM or to a specific channel by @joeyleake in https://github.com/meshtastic/Meshtastic-Android/pull/6218
- feat(firmware): nightly preview channel behind the hidden-features unlock by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6225
- perf(r8): enable optimization for release builds (keep unobfuscated) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6275
- feat(analytics): restore RUM view tracking on Nav3 (Google flavor) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6281
- perf(analytics): match iOS Datadog RUM monitoring, drop dead timber dep by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6278
- Align NFC contact import and share dialogs with Design Standards v1.4 by @thebentern in https://github.com/meshtastic/Meshtastic-Android/pull/6332
- feat(settings): add packet authenticity policy by @RCGV1 in https://github.com/meshtastic/Meshtastic-Android/pull/6178
- feat(messaging): redesign message bubbles toward the M3 conversation pattern by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6368
- feat(notifications): align message notifications with Android best practices by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6371
- feat(node): group related metric cards into vertical columns by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6431
- feat(node): show AQI in the air quality graph and table by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6434
- feat(event): DEF CON 34 logo and full brand palette in event theming by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6483
🖥️ Desktop
- fix(data): stale firmware/hardware caches — stop cancelling slow API refreshes, prune pulled releases, seed from newer bundles by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6060
- fix(geofence): restrict crossing alerts to creator, add per-geofence opt-in by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6117
- fix(ble): refresh GATT cache around ESP32 OTA profile changes by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6166
- Add firmware update notice by @RCGV1 in https://github.com/meshtastic/Meshtastic-Android/pull/6309
- fix: make NotificationManager.dispatch await the platform send by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6326
- fix(database): make DB updates atomic across device switches by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6256
- fix(ci): defer desktop packaging toolchain resolution by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6401
- fix(settings): retain config session across navigation by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6449
- fix(event): honor disabled node events, gate brand URLs, observe the manifest by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6499
🛠️ Fixes
- fix(mqtt): make the MQTT client-id unique per connection by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5755
- fix(ble): Harden BLE connection lifecycle by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5795
- fix(build): isolate ML Kit GenAI to the Google flavor (fix F-Droid rb-check) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5824
- fix(notifications): open node detail when tapping 'New Node Seen' notification by @LesterCheng in https://github.com/meshtastic/Meshtastic-Android/pull/5752
- fix(appfunctions): keep AppSearch document-factory constructors under R8 full mode by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5829
- fix(service): resolve selected-device startup race by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5828
- fix(database): defer FTS backfill on cold start and enforce single-connection pool by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5841
- fix(ble): retrigger connection when bonding is interrupted by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5849
- fix(desktop): terminate process on exit; quit on close when no tray by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5858
- fix(settings): crash opening Position radio-config screen by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5862
- fix(settings): gate Traffic Management config at firmware v2.8.0 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5864
- fix(network): retry transient connection/IO failures to api.meshtastic.org by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5870
- fix(ui): recognize VPN and all networks for network scan availability by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5882
- fix(data): separate refresh timeouts from Room persistence by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5881
- fix(service): recover stalled WiFi/TCP handshakes by cycling active transport by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5856
- fix(ui): prevent duplicate LazyColumn keys in node metrics logs by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5890
- fix(network): preserve TCP reconnect backoff on short sessions by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5893
- fix(connections): coordinate BLE and TCP scan lifecycle by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5887
- fix(ui): show Wi-Fi unavailable banner only during active network scan by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5892
- fix(network): migrate to mqtt-client 0.4.0 (IP-literal TLS fix) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5895
- fix(ble): require fresh advertisement for auto-reconnect by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5912
- fix(firmware): harden ESP32 OTA + nRF DFU update paths (hardware-validated) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5915
- fix(firmware): batch of P3 OTA/DFU cleanups from the #5915 audit by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5916
- fix(firmware): render chirpy mascot via painterResource in update dialog by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5925
- fix(usb): Add serial presence recovery for USB replug by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5923
- fix(data): Persist TAK module config by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5933
- fix(usb): Suppress expected serial close warnings by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5932
- refactor(connections): Derive DeviceType from InterfaceId by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5935
- fix(usb): Surface permission denial as permanent disconnect by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5943
- refactor(ble): Make Kable connect fallback explicitly bounded by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5944
- refactor(connections): Show one active transport pane by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5956
- fix(ble): Restore bounded bonded reconnect fallback by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5960
- fix(docs): preserve #anchor when rewriting sibling links for Docusaurus by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5963
- fix(ble): Bound Android bonding wait by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5967
- fix(ble): Avoid duplicate bonding retries after pairing failure by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5969
- fix(ble): Stop transport connect after failed bonding by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5973
- fix(ble): Fail bonding promptly when polled state returns none by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5982
- fix(car): wire notifications & emergency, fix TabTemplate crash, pin car-app to stable by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5997
- fix(qr): Serialize channel import writes by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/5999
- fix(ui): stop node signal pill from wrapping; restore full-width spread by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6007
- fix(car): suppress INVISIBLE_MEMBER in CarScreensTest for fdroid build by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6010
- fix(docs): stop builds from churning tracked docs screenshots by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6012
- fix(qr): Preserve incoming channels when adding from QR by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6013
- fix(car): notification-only car messaging for production; park templated behind flag by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6015
- fix(firmware): repair nRF USB firmware update and post-update reconnect by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6018
- fix(ble): Handle scan registration failure by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6019
- fix(discovery): show disabled reason below Start Analysis button by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6027
- fix(qr): Stabilize scanner lifecycle and imports by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6040
- fix(connections): label the connecting-card button "Stop Connecting" by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6046
- fix(messages): Refresh channel placeholders after updates by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6054
- fix(qr): Filter duplicate ADD imports by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6056
- fix(ci): rename skip_author to ignore_usernames in .coderabbit.yaml by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6069
- fix(qr): Apply channel replacements reliably by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6072
- fix(logs): Allow access to DebugPanel Logs while disconnected by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6074
- fix: harden against adversarial mesh-fuzz findings (crash, GC-thrash, unbounded growth, OOM) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6093
- fix: remove satellite-count chip from node-list metrics row by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6100
- fix: derive phone-UI units from OS locale, not radio display config by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6101
- fix(ui): align AdaptiveTwoPane split to the adaptive directive breakpoint by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6112
- fix(settings): Apply manual channel writes in order by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6077
- fix(settings): Generate fresh PSK for named manual channels by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6076
- fix(discovery): let default-channel users start a scan by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6120
- fix(discovery): ship a fresh LoRaConfig when switching to a beacon's preset by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6135
- fix(runtime): harden BLE profile, OTA setup, and DB access by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6126
- fix(messaging): use stored contact_key to avoid duplicate LazyColumn key crash (#6131) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6142
- fix(metrics): air-quality chart legend follows plotted data, not selection by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6145
- fix(firmware): Keep bundled release discovery available by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6082
- fix(dfu): Detect legacy bootloaders before secure fallback by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6079
- fix(firmware): Retry ESP32 OTA service connections cleanly by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6081
- fix(database): recover firmware metadata reads after DB pool churn by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6177
- fix: address 2.8.0 release-audit findings by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6189
- fix: keep node-mute authoritative over @mentions by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6190
- fix: dedup node lists to prevent LazyColumn duplicate-key crash by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6193
- fix(discovery): restore radio home config after an interrupted scan by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6192
- fix(service): route notification quick-replies through the send pipeline; drop dead parcelize plugin by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6196
- fix(firmware): never offer an alpha release older than current stable by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6198
- fix(settings): keep the Debug Panel accessible while disconnected by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6199
- fix(database): force Room single-connection pool on all platforms by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6202
- fix(dfu): harden Legacy nRF52 recovery after BLE stalls by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6201
- fix(dfu): classify disconnects from failed Legacy writes by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6209
- fix(database): migrate device identity across firmware 2.8 renumbering by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6228
- fix(database): make completed cross-transport merges retry-idempotent by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6231
- fix(database): route all one-shot DB writes through the merge drain barrier by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6233
- fix(database): make the injected DiscoveryDao follow the active database by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6236
- fix(agents): datadog-rum-investigator blocked by Datadog MCP UUID mount prefix by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6241
- Fix: add back navigation to Clean Node Database screen by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6264
- fix: stabilize traceroute map node identity & fix log metric alignment by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6270
- fix(connections): show device long names in the connection manager (#5808) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6271
- fix: adopt 2024 EPA PM2.5 AQI breakpoints for cross-platform alignment by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6273
- fix(analytics): restore Datadog RUM network tracking (google) & unify service name by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6280
- fix(connections): use a segmented button for transport selection by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6285
- fix: silence false-positive Instantiatable lint on ExtensionAppFunctionService by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6293
- fix: label channel share FAB "Import/Export" and announce Close when expanded by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6303
- fix: normalize F-Droid QR camera frames by @RCGV1 in https://github.com/meshtastic/Meshtastic-Android/pull/6319
- fix: preserve add mode in legacy channel URLs by @RCGV1 in https://github.com/meshtastic/Meshtastic-Android/pull/6320
- fix: align channel QR share contract by @RCGV1 in https://github.com/meshtastic/Meshtastic-Android/pull/6325
- fix: keep cached data flowing when api.meshtastic.org is down by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6335
- Fix literal backslashes in strings with escaped apostrophes by @thebentern in https://github.com/meshtastic/Meshtastic-Android/pull/6336
- fix(map): allow editing/deleting your own locked waypoint by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6344
- fix(waypoint): reject non-owner modification of a stored locked waypoint by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6348
- fix(nodes): refresh distance when display units change by @CatSu-OSM in https://github.com/meshtastic/Meshtastic-Android/pull/6351
- fix(map): retain camera across tab navigation by @CatSu-OSM in https://github.com/meshtastic/Meshtastic-Android/pull/6352
- fix(database): reduce write-lane pressure from one-shot reads by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6255
- fix(nav): register /wifi-provision and /discovery as https App Links by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6365
- fix(node): stop metric-card trailing values crushing to one-char-per-line by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6374
- fix(node-metrics): apply full typography style instead of fontSize-only by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6375
- fix(node): respect display units for position ground speed by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6376
- fix(node): reconcile stale identity replays after renumbering by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6259
- fix(ui): add horizontal padding for position flags list item by @dzmpr in https://github.com/meshtastic/Meshtastic-Android/pull/6369
- fix(messaging): reduce composer recomposition and typing jank by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6318
- fix(ble): harden reconnect sessions and Android scan lifecycle by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6384
- fix(settings): stop dropping admin config responses (0% stall, missing remote channels) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6391
- fix(hardware): throttle repeated catalog refreshes for cache misses by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6399
- fix(firmware): decode manifests independent of content type by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6400
- fix(firmware): don't treat unparseable version as "too old" (#3726) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6408
- fix(channels): store channel set per-device to stop cross-device duplicates (#4623) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6409
- fix(android): avoid retaining activity in Coil singleton factory by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6403
- fix(messaging): use mesh time for message timestamps and grouping by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6422
- fix(strings): correct English subnet label by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6425
- fix(android): avoid resource stalls in connection status by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6398
- fix(node): show node counts without truncation by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6433
- fix(model): gate TAK module config on firmware 2.8.0 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6435
- fix(data): don't let coarse position reports overwrite precise coordinates by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6432
- fix(car): drop CarAppService from production manifests to satisfy Play car-app review by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6438
- fix(map): configure OSMdroid user agent at F-Droid startup by @jeremiah-k in https://github.com/meshtastic/Meshtastic-Android/pull/6448
- fix(strings): remove stray "to" in share location description by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6463
- fix(mqtt): scope user-CA trust to the MQTT connection by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6464
- fix(logging): stop reporting expected conditions as crashes by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6470
- fix(map): stop reporting cancelled layer loads as errors by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6468
- fix(network): resync stream framing and stop reporting expected disconnects as errors by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6469
- fix(notifications): guard blank conversation-shortcut labels by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6472
- fix(service): guarantee startForeground is reached or MeshService stops itself by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6471
- fix(node): disambiguate signal-log packet keys by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6492
- fix(mqtt): log throwable-less client errors at warn by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6493
- fix(connections): dedupe recent-TCP and reaction list keys by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6494
- fix(map): allow local deletion of any waypoint, locked or not by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6497
- fix(model): rssi explicit presence for protobufs 2.7.26.138 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6498
- fix(connections): send set_time_only at MyNodeInfo instead of onNodeDbReady by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6503
- fix(ui): stop discarding measured-zero sensor and RSSI readings by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6507
- fix(mqtt): stop reporting transport failures as credential rejections by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6506
📝 Other Changes
- refactor(takserver): commonize TAK SDK pipeline, drop redundant zstd/xpp3 deps by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5871
- refactor(settings): remove Traffic Management module config by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5878
- refactor(firmware): dedupe BLE/DFU OTA transport + handler boilerplate by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5918
- refactor(data): consolidate bundled-asset loading behind BundledAssetReader by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5921
- refactor(core:ui): drop redundant SinglePaneSceneStrategy from NavDisplay by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5934
- refactor: drop two over-engineered seams (enum + stdlib Base64) by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5945
- refactor(ui): migrate MapView dialog to Compose M3 + drop legacy material dependency by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5988
- refactor(settings): replace SimpleDateFormat with kotlinx-datetime by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5992
- refactor(car): drop dead FuzzyNodeNameResolver duplicate by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/5994
- refactor(qr): apply channel imports atomically via edit-settings transaction by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6170
- refactor(di): drop the F-Droid ApiService stub, use the real API client in both flavors by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6226
- refactor(map): adopt maps-compose 8.4.0 stock clustering, drop custom renderer workaround by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6301
- refactor(map): migrate custom overlays to the maps-utils 5.0 data layer by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6304
- refactor(ui): remove StatusSurface scrim behind status-colored chips by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6367
- perf(docs): skip Dokka when no API sources changed, drop test modules from aggregation by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6412
- fix(desktop): restore eager JBR javaHome pin for ProGuard packaging by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6414
- Clean up configuration menus by @pdxlocations in https://github.com/meshtastic/Meshtastic-Android/pull/6478
- chore(deps): update org.meshtastic:mqtt-client to v0.8.0 by @jamesarich in https://github.com/meshtastic/Meshtastic-Android/pull/6508
New Contributors
- @LesterCheng made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/5752
- @dubsector made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/5986
- @garthvh made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/6088
- @coderabbitai[bot] made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/6180
- @madeofstown made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/6210
- @joeyleake made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/6218
- @sashko made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/6315
- @CatSu-OSM made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/6351
- @dzmpr made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/6369
- @pdxlocations made their first contribution in https://github.com/meshtastic/Meshtastic-Android/pull/6478
Full Changelog: https://github.com/meshtastic/Meshtastic-Android/compare/v2.7.14...v2.8.0
download
unix · zip
curl -fL -o v2.8.0.zip https://ratatoskr.space/pkg/meshtastic-android/v2.8.0.zip
printf '%s %s\n' 'f0d36b7d444a85df5742636c23b5af879dd236a29bd97e65ae770da5cbfc4f68' 'v2.8.0.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/meshtastic-android/v2.8.0.zip"
$out = "v2.8.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "f0d36b7d444a85df5742636c23b5af879dd236a29bd97e65ae770da5cbfc4f68") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v2.8.0.tar.gz https://ratatoskr.space/pkg/meshtastic-android/v2.8.0.tar.gz
printf '%s %s\n' '203b3db64dc84e49220794a0695a5521fb3b4c097f9fe834e9f607133ba14fa5' 'v2.8.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/meshtastic-android/v2.8.0.tar.gz"
$out = "v2.8.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "203b3db64dc84e49220794a0695a5521fb3b4c097f9fe834e9f607133ba14fa5") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v2.8.0.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meshtastic-android/v2.8.0.zip
printf '%s %s\n' 'f0d36b7d444a85df5742636c23b5af879dd236a29bd97e65ae770da5cbfc4f68' 'v2.8.0.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meshtastic-android/v2.8.0.zip"
$out = "v2.8.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "f0d36b7d444a85df5742636c23b5af879dd236a29bd97e65ae770da5cbfc4f68") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v2.8.0.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meshtastic-android/v2.8.0.tar.gz
printf '%s %s\n' '203b3db64dc84e49220794a0695a5521fb3b4c097f9fe834e9f607133ba14fa5' 'v2.8.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meshtastic-android/v2.8.0.tar.gz"
$out = "v2.8.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "203b3db64dc84e49220794a0695a5521fb3b4c097f9fe834e9f607133ba14fa5") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v2.8.0.zip | zip | 24.0 MiB |
blake3-24 8958b86a194c83cce8ed541f13bb5d2e2ded2898667bbf4b
sha256 f0d36b7d444a85df5742636c23b5af879dd236a29bd97e65ae770da5cbfc4f68
sha1 589b67c14811a68a49a9de2c0514dd02bdd79d8c
|
| v2.8.0.tar.gz | tar.gz | 21.0 MiB |
blake3-24 4f4e6cf0b1e0d266d7867afd4e722a2314e34eecf526419a
sha256 203b3db64dc84e49220794a0695a5521fb3b4c097f9fe834e9f607133ba14fa5
sha1 048d25902bcc4d862571a7cc8861aa417efc6f28
|
install
bazel
http_archive(
name = "meshtastic-android",
urls = ["https://ratatoskr.space/pkg/meshtastic-android/v2.8.0.tar.gz"],
integrity = "sha256-IDs9tk3ITkkiB5SgaVpVIfs7TAl/n+g06fYHEzuhT6U=",
strip_prefix = "meshtastic-android-v2.8.0",
)
zig
.url = "https://ratatoskr.space/pkg/meshtastic-android/v2.8.0.tar.gz",
install via yggdrasil mesh
bazel
http_archive(
name = "meshtastic-android",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meshtastic-android/v2.8.0.tar.gz"],
integrity = "sha256-IDs9tk3ITkkiB5SgaVpVIfs7TAl/n+g06fYHEzuhT6U=",
strip_prefix = "meshtastic-android-v2.8.0",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meshtastic-android/v2.8.0.tar.gz",