Skip to content

v2.8.3 (29322724)

Latest

Choose a tag to compare

@github-actions github-actions released this 19 Oct 20:46
105d541

Highlights

Radios on firmware older than 2.5.14 stay connected and lead straight to the firmware update, which is now required. Back up and restore the app database. Failed messages resend in place. Reactions get their own notification channel. Radio settings open without a radio, and search lands on the setting. Site Planner coverage runs on the phone. Many stability fixes.

What's Changed

🏗️ Features

  • feat(network): a hidden showcase scenario for Demo Mode by @jamesarich in #7377
  • feat(app): shell-only debug launch switches for onboarding and the trust dialog by @jamesarich in #7375
  • feat(settings): raise the coding rate over a modem preset by @jamesarich in #7405
  • feat(firmware): show installed vs latest bootloader before an upgrade by @jamesarich in #7409
  • feat(auto): notification messaging on Android Auto by @jamesarich in #7417
  • feat(map-maplibre): start with collapsed attribution strip on seconda… by @Tha14 in #7424
  • perf(store-screenshots): wait for the map to draw instead of a fixed 45 seconds by @jamesarich in #7501
  • feat(desktop): add draggable scrollbars to node and message lists by @jamesarich in #7506
  • feat(notifications): post reactions on their own channel by @jamesarich in #7507
  • feat(admin): add Reboot into DFU mode admin action for nRF52 nodes by @jamesarich in #7504
  • feat(remote-shell): mesh terminal for the firmware DMShell module by @jamesarich in #6862
  • feat(firmware): play Chirpy Hop while a firmware update runs by @jamesarich in #7545
  • feat(settings): schema labels for presets and regions, keyword search, diy_only pins by @jamesarich in #7544
  • feat(map): route MapLibre's log through Kermit on desktop by @jamesarich in #7606
  • feat(settings): let radio settings be opened and read without a radio by @jamesarich in #7621
  • feat(connections): keep an old radio connected and gate the app on the firmware update by @jamesarich in #7623
  • feat(settings): region preset fallback and fixed-precision override frequency by @jamesarich in #7626
  • feat(connections): show the LoRa preset and region on the connected radio card by @jamesarich in #7625
  • feat(settings): land a search result on the control it names by @jamesarich in #7627
  • feat(settings): color picker and swatch for ambient lighting by @jamesarich in #7619
  • feat(desktop): reactions and new waypoints notification toggles by @jamesarich in #7624
  • feat(settings): back up and restore the app database by @jamesarich in #7629
  • feat(node): record observed and inbound traceroutes in the node's history by @jamesarich in #7643

🖥️ Desktop

  • fix(mqtt): remove noop mqtt to allow the mqtt proxy to work on the desktop builds by @Tha14 in #7400
  • fix(notifications): put every notification on its own channel and tap target by @jamesarich in #7415
  • fix(database): delete old mesh logs in bounded batches by @jamesarich in #7423
  • fix: keep WiFi credentials, addresses and coordinates out of app logs by @jamesarich in #7419
  • fix: data correctness fixes from the Android audit by @jamesarich in #7429
  • fix(node): show the real traceroute map on desktop by @jamesarich in #7425
  • refactor: keep one copy of shared code across platforms by @jamesarich in #7432
  • fix(ui): localize UI strings, fix stale effect captures, one EmptyState by @jamesarich in #7430
  • fix(notifications): end low-battery episodes when the tray is cleared by @jamesarich in #7546
  • Fix/desktop linux tray by @jp-bennett in #7569
  • fix(desktop): keep LWJGL whole through ProGuard by @jamesarich in #7605
  • fix(app): stop declaring Android Auto support by @jamesarich in #7645

🛠️ Fixes

  • fix(map): keep the node track map responsive on long tracks by @jamesarich in #7373
  • fix(konsist): anchor the scanned-source inputs at the source roots by @jamesarich in #7382
  • fix(map): frame the mesh clear of the map's own controls by @jamesarich in #7385
  • fix(node): drop the filter bar's own background inside the list header by @jamesarich in #7386
  • fix(appfunctions): index functions where AppSearch has no dynamic schema by @jamesarich in #7402
  • fix(ui): split the link colour per mode by @jamesarich in #7406
  • fix(settings): stop profile import dropping Mesh Beacon settings by @jamesarich in #7416
  • fix(database): never publish a replacement pool while the write lock is held by @jamesarich in #7418
  • fix(prefs): recover corrupt Android prefs files and make toggles atomic by @jamesarich in #7420
  • fix(navigation): keep each tab's state across tab switches by @jamesarich in #7421
  • fix(discovery): keep an unheard node's SNR distinct from 0 dB by @jamesarich in #7422
  • fix(service): correct phone position units and omit missing readings by @jamesarich in #7437
  • fix(wifi-provision): release the BLE peripheral on retry and on leaving by @jamesarich in #7453
  • fix(map-maplibre): clear warnings and collect state with lifecycle by @jamesarich in #7460
  • fix(takserver): log a route export that failed to write by @jamesarich in #7459
  • fix(node): leave positions without a fix out of the GPX track by @jamesarich in #7457
  • fix(service): stop the inbound pipeline waiting on node writes by @jamesarich in #7464
  • fix(app): check a shared map file before importing it by @jamesarich in #7463
  • fix(ui): show byte sizes in decimal units, formatted for the locale by @jamesarich in #7469
  • fix(app): stop cleanly on devices the bundled SQLite can't run on by @jamesarich in #7470
  • fix(service): keep the last-heard write off the inbound lock by @jamesarich in #7474
  • fix(takserver): keep one route file across reinstalls by @jamesarich in #7475
  • fix(ui): show transfer rates and file limits in decimal units by @jamesarich in #7476
  • fix(ble): keep device addresses out of logs by @jamesarich in #7478
  • fix(ble): export the bond wait receiver so bond broadcasts reach it by @jamesarich in #7484
  • fix(firmware): show the percent while a maintenance UF2 downloads by @jamesarich in #7485
  • fix(messaging): let a pinned conversation be unpinned by @jamesarich in #7492
  • fix(app): restore the Apache HTTP legacy library for Google Maps by @jamesarich in #7499
  • fix(metrics): break power chart lines across gaps in readings by @jamesarich in #7505
  • fix(analytics): drop the package from RUM view names by @jamesarich in #7525
  • fix(node): keep verified contacts verified by @jamesarich in #7531
  • fix(settings): stop calling Balanced packet authenticity recommended by @jamesarich in #7535
  • fix(map): show offline manager loading and failure in the offline sheet by @jamesarich in #7570
  • fix: frequency slot for non-ASCII channel names, mark auto slot by @jamesarich in #7580
  • fix: restore key backups after a factory reset by @jamesarich in #7581
  • fix(ci): link protobufs bump summary PRs to the protobufs repo by @jamesarich in #7595
  • fix(discovery): scan public presets on the default public channel and slot by @jamesarich in #7600
  • fix(config): refresh the node DB after a live LoRa save by @jamesarich in #7620
  • fix(node): name unknown traceroute hops by their node id by @jamesarich in #7628
  • fix(messaging): resend a failed message in place by @jamesarich in #7622
  • fix(settings): land a search result on the row and highlight it by @jamesarich in #7637
  • fix(node): use the traceroute map colors in the traceroute chart by @garthvh in #7631
  • fix(settings): cap the long name at the 24 bytes firmware 2.8 keeps by @jamesarich in #7641
  • fix(node): show unknown traceroute hops as unknown and cool down long-press traceroute by @jamesarich in #7640
  • fix(node): remember Keep on the unheard-nodes banner by @jamesarich in #7646
  • fix(settings): show GPS pin settings on commercial boards again by @jamesarich in #7655
  • fix(settings): hide GPS pin settings only on boards whose maker wired the GPS by @jamesarich in #7656
  • fix(messaging): show seconds in full message timestamps by @jamesarich in #7660
  • fix(node): remove every unheard node from the banner's Remove by @jamesarich in #7667

📝 Other Changes

  • refactor(data): page the log export, remove dedupe leftovers by @jamesarich in #7449
  • refactor(map): share the Web Mercator projection with node clustering by @jamesarich in #7483
  • refactor(ui): share the remote shell's keyboard sink from core/ui by @jamesarich in #7526

New Contributors

Full Changelog: v2.8.2...v2.8.3