What's Changed
🏗️ Features
- perf(r8): enable optimization for release builds (keep unobfuscated) by @jamesarich in #6275
- feat(analytics): restore RUM view tracking on Nav3 (Google flavor) by @jamesarich in #6281
- perf(analytics): match iOS Datadog RUM monitoring, drop dead timber dep by @jamesarich in #6278
- Align NFC contact import and share dialogs with Design Standards v1.4 by @thebentern in #6332
- feat(settings): add packet authenticity policy by @RCGV1 in #6178
- feat(messaging): redesign message bubbles toward the M3 conversation pattern by @jamesarich in #6368
- feat(notifications): align message notifications with Android best practices by @jamesarich in #6371
🖥️ Desktop
- Add firmware update notice by @RCGV1 in #6309
- fix: make NotificationManager.dispatch await the platform send by @jamesarich in #6326
- fix(database): make DB updates atomic across device switches by @jeremiah-k in #6256
- fix(ci): defer desktop packaging toolchain resolution by @jeremiah-k in #6401
🛠️ Fixes
- Fix: add back navigation to Clean Node Database screen by @jamesarich in #6264
- fix: stabilize traceroute map node identity & fix log metric alignment by @jamesarich in #6270
- fix(connections): show device long names in the connection manager (#5808) by @jamesarich in #6271
- fix: adopt 2024 EPA PM2.5 AQI breakpoints for cross-platform alignment by @jamesarich in #6273
- fix(analytics): restore Datadog RUM network tracking (google) & unify service name by @jamesarich in #6280
- fix(connections): use a segmented button for transport selection by @jamesarich in #6285
- fix: silence false-positive Instantiatable lint on ExtensionAppFunctionService by @jamesarich in #6293
- fix: label channel share FAB "Import/Export" and announce Close when expanded by @jamesarich in #6303
- fix: normalize F-Droid QR camera frames by @RCGV1 in #6319
- fix: preserve add mode in legacy channel URLs by @RCGV1 in #6320
- fix: align channel QR share contract by @RCGV1 in #6325
- fix: keep cached data flowing when api.meshtastic.org is down by @jamesarich in #6335
- Fix literal backslashes in strings with escaped apostrophes by @thebentern in #6336
- fix(map): allow editing/deleting your own locked waypoint by @jamesarich in #6344
- fix(waypoint): reject non-owner modification of a stored locked waypoint by @jamesarich in #6348
- fix(nodes): refresh distance when display units change by @CatSu-OSM in #6351
- fix(map): retain camera across tab navigation by @CatSu-OSM in #6352
- fix(database): reduce write-lane pressure from one-shot reads by @jeremiah-k in #6255
- fix(nav): register /wifi-provision and /discovery as https App Links by @jamesarich in #6365
- fix(node): stop metric-card trailing values crushing to one-char-per-line by @jamesarich in #6374
- fix(node-metrics): apply full typography style instead of fontSize-only by @jamesarich in #6375
- fix(node): respect display units for position ground speed by @jamesarich in #6376
- fix(node): reconcile stale identity replays after renumbering by @jeremiah-k in #6259
- fix(ui): add horizontal padding for position flags list item by @dzmpr in #6369
- fix(messaging): reduce composer recomposition and typing jank by @jeremiah-k in #6318
- fix(ble): harden reconnect sessions and Android scan lifecycle by @jeremiah-k in #6384
- fix(settings): stop dropping admin config responses (0% stall, missing remote channels) by @jamesarich in #6391
- fix(hardware): throttle repeated catalog refreshes for cache misses by @jeremiah-k in #6399
- fix(firmware): decode manifests independent of content type by @jeremiah-k in #6400
- fix(firmware): don't treat unparseable version as "too old" (#3726) by @jamesarich in #6408
- fix(channels): store channel set per-device to stop cross-device duplicates (#4623) by @jamesarich in #6409
- fix(android): avoid retaining activity in Coil singleton factory by @jeremiah-k in #6403
- fix(messaging): use mesh time for message timestamps and grouping by @jamesarich in #6422
- fix(strings): correct English subnet label by @jamesarich in #6425
- fix(android): avoid resource stalls in connection status by @jeremiah-k in #6398
📝 Other Changes
- refactor(map): adopt maps-compose 8.4.0 stock clustering, drop custom renderer workaround by @jamesarich in #6301
- refactor(map): migrate custom overlays to the maps-utils 5.0 data layer by @jamesarich in #6304
- refactor(ui): remove StatusSurface scrim behind status-colored chips by @jamesarich in #6367
- perf(docs): skip Dokka when no API sources changed, drop test modules from aggregation by @jamesarich in #6412
- fix(desktop): restore eager JBR javaHome pin for ProGuard packaging by @jamesarich in #6414
New Contributors
- @sashko made their first contribution in #6315
- @CatSu-OSM made their first contribution in #6351
- @dzmpr made their first contribution in #6369
Full Changelog: v2.8.0-closed.9...v2.8.0-internal.35