What's Changed
🏗️ Features
- refactor(ble): Centralize BLE logic into a core module by @jamesarich in #4550
- feat(ble): Add support for
FromRadioSynccharacteristic by @jamesarich in #4609 - feat(widget): Add Local Stats glance widget by @jamesarich in #4642
- chore(deps): bump deps to take advantage of new functionality by @jamesarich in #4658
- feat(maps): Google maps improvements for network and offline tilesources by @jamesarich in #4664
- feat: Improve edge-to-edge and display cutout handling by @jamesarich in #4669
- feat: upcoming support for tak and trafficmanagement configs, device hw by @jamesarich in #4671
- feat: settings rework by @jamesarich in #4678
- feat: settings rework part 2, domain and usecase abstraction, tests by @jamesarich in #4680
- feat: service decoupling by @jamesarich in #4685
- refactor: migrate :core:database to Room Kotlin Multiplatform by @jamesarich in #4702
- refactor(ble): improve connection lifecycle and enhance OTA reliability by @jamesarich in #4721
- refactor: migrate preferences to DataStore and decouple core:domain for KMP by @jamesarich in #4731
- refactor: migrate core modules to Kotlin Multiplatform and consolidat… by @jamesarich in #4735
- feat: Migrate project to Kotlin Multiplatform (KMP) architecture by @jamesarich in #4738
- refactor: migrate from Hilt to Koin and expand KMP common modules by @jamesarich in #4746
- refactor: migrate core UI and features to KMP, adopt Navigation 3 by @jamesarich in #4750
- feat: introduce Desktop target and expand Kotlin Multiplatform (KMP) architecture by @jamesarich in #4761
- build(desktop): enable ProGuard for release builds by @jamesarich in #4772
- feat(desktop): implement DI auto-wiring and validation by @jamesarich in #4782
- feat(desktop): expand supported native distribution formats by @jamesarich in #4783
🛠️ Fixes
- fix(strings): replace plurals by @jamesarich in #4596
- fix: replace fdroid map_style_selection string by @jamesarich in #4598
- refactor(test): Introduce MeshTestApplication for robust testing by @jamesarich in #4602
- fix: spotless by @jamesarich in #4604
- feat(build): Implement flavor-specific barcode scanning and build improvements by @jamesarich in #4611
- fix(qr): add channels as key to remember block to fix add-channel rac… by @nreisbeck in #4607
- chore(ble): Add Proguard rules for Nordic BLE library by @jamesarich in #4618
- ci(release): Use wildcards for APK paths in release workflow by @jamesarich in #4619
- chore(ci): Use wildcard for APK paths in release workflow by @jamesarich in #4622
- chore(ci): Refine analytics task filtering and improve release debugging by @jamesarich in #4624
- Fix/splits by @jamesarich in #4626
- Align FDroid MapView constructor with Google version (Issue #4576) by @ujade in #4630
- refactor(analytics): reduce tracking footprint by @jamesarich in #4649
- fix(map): location perms and button visibility, breadcrumb taps by @jamesarich in #4651
- fix(strings): Correct capitalization of Ham by @alecperkins in #4620
- ci: Split Google artifact attestations and ensure F-Droid uploads by @jamesarich in #4665
- fix: Replace strings.xml with app_name resource by @jamesarich in #4666
- Disable generate_release_notes in release workflow by @jamesarich in #4668
- fix: ui tweaks by @jamesarich in #4696
- refactor: simplify traceroute tracking and unify cooldown button logic by @jamesarich in #4699
- feat: Add "Mark all as read" and unread message count indicators by @jamesarich in #4720
- fix(widget): ensure local stats widget gets updates by @jamesarich in #4722
- refactor(ble): increase default timeout for BLE profiling by @jamesarich in #4728
- refactor: enhance handshake stall guard and extend coverage to Stage 2 by @jamesarich in #4730
- build(ci): optimize release workflow and update Room configuration by @jamesarich in #4775
- Disable ProGuard for desktop release and add application icon by @jamesarich in #4776
- fix(ble): implement scanning for unbonded devices in common connections ui by @jamesarich in #4779
- fix: fix animation stalls and update dependencies for stability by @jamesarich in #4784
- build(desktop): include
java.net.httpmodule in native distribution by @jamesarich in #4787 - build: remove PKG from desktop distribution targets by @jamesarich in #4788
- build: Update desktop app icons, versioning, and packaging configuration by @jamesarich in #4789
- refactor(settings): improve destination node handling in RadioConfigViewModel by @jamesarich in #4790
📝 Other Changes
- refactor(ui): compose resources, domain layer by @jamesarich in #4628
- Add per-message transport method icons for new message format by @Kealper in #4643
- build: apply instrumented test dependencies conditionally by @jamesarich in #4698
- docs: summarize KMP migration progress and architectural decisions by @jamesarich in #4770
- ci(release): pass app version to desktop build via environment variable by @jamesarich in #4774
- ai: Establish conductor documentation and governance framework by @jamesarich in #4780
New Contributors
- @nreisbeck made their first contribution in #4607
- @ujade made their first contribution in #4630
- @alecperkins made their first contribution in #4620
Full Changelog: v2.7.13...v2.7.14-closed.1