Releases: meshtastic/Meshtastic-Android
Releases · meshtastic/Meshtastic-Android
v2.7.10 (29319661)
What's Changed
🏗️ Features
- feat(messaging): Add double-tap to react with 👍 by @jamesarich in #3972
- feat: Port “Compass view” bottom sheet from Meshtastic-Apple PR #1504 by @jakevis in #3896
- feat(settings): add about screen with open source licenses by @jamesarich in #4012
- feat: add SNR/RSSI/Hops Away metrics and timestamp to the reaction dialog by @1nv in #3964
- feat: Traceroute map visualisation by @DivineOmega in #4002
- refactor(build): Migrate core/common to KMP and cleanup build logic by @jamesarich in #4026
- feat(ui): Animate icon changes with Crossfade by @jamesarich in #4028
- ci: Cache AVD snapshots to speed up Android tests by @jamesarich in #4030
- feat(build): add module dependency graph generation by @jamesarich in #4042
- Feat request neighbours by @DaneEvans in #3709
- feat: Add ability to request telemetry from a remote node by @jamesarich in #4059
- Add elevation to places where LatLong is listed. by @DaneEvans in #4071
- Implements#4054 - Add channel name to channel message notification by @RaspberryProgramming in #4069
🛠️Fixes
- refactor(di): Introduce @ProcessLifecycle qualifier for di by @jamesarich in #3978
- refactor: Move byte utilities to core:common module by @jamesarich in #3977
- refactor(concurrent): Introduce SequentialJob to manage service setup by @jamesarich in #3983
- feat: Mark database models and protobufs as stable by @jamesarich in #3982
- feat: Optimize message list node lookup by @jamesarich in #3981
- chore: Update VERSION_NAME_BASE to 2.7.10 by @jamesarich in #3986
- refactor(ui): refactor glow effect drawing by @jamesarich in #3988
- refactor: consolidate F-Droid task disabling to convention plugin by @jamesarich in #3990
- chore: enhance bluetooth and wifi connection logging by @mdecourcy in #3960
- fix(build): disable more analytics tasks for F-Droid builds by @jamesarich in #4000
- Update strings for small meshes.xml by @b8b8 in #4009
- Allow using custom tile server via HTTP by @texaskst in #3976
- Remove ktorfit by @poliver in #4019
- Restructure node filters by @poliver in #4020
- fix: correctly check for local or pre-db-update reaction via RSSI == 0 by @1nv in #4024
- refactor(analytics): Only plant DebugTree in debug builds by @jamesarich in #4025
- fix: nodes seen before full user exchange not being updated in phone NodeDB by @mdecourcy in #3996
- Traceroute map position snapshots by @DivineOmega in #4035
- fix : avoid our node to be a relaynode candidate by @emp3r0r7 in #4037
- refactor: Add LONG_TURBO ChannelOption and validation test by @jamesarich in #4039
- fix: app README.md header by @jamesarich in #4043
- perf: add missing index to optimize message list by @mdecourcy in #4055
- fix: fixes to improve chat view reliability, eliminates stutter by @mdecourcy in #4053
- Revert "chore(deps): update ruby to v4" by @jamesarich in #4064
- fix unstaged file for altitude on compass by @DaneEvans in #4074
- fix: internal regression; if hardware model is unset keep long/short names null by @mdecourcy in #4079
- perf: add node list indicies by @mdecourcy in #4056
👷Dependencies
- chore(deps): update com.google.firebase:firebase-bom to v34.7.0 by @renovate[bot] in #3973
- chore(deps): update ktorfit to v2.7.1 by @renovate[bot] in #3974
- chore(deps): update io.nlopez.compose.rules:detekt to v0.5.2 by @renovate[bot] in #3975
- chore(deps): update github artifact actions (major) by @renovate[bot] in #3987
- chore(deps): update actions/checkout action to v6 by @renovate[bot] in #3991
- chore(deps): update core/proto/src/main/proto digest to 4095e59 by @renovate[bot] in #3998
- chore(deps): update core/proto/src/main/proto digest to 9beb80f by @renovate[bot] in #4014
- chore(deps): update devtools.ksp to v2.3.4 by @renovate[bot] in #4018
- chore(deps): update plugin protobuf to v0.9.6 by @renovate[bot] in #4022
- chore(deps): update ruby to v3.4.8 by @renovate[bot] in #4023
- chore(deps): update androidx.compose:compose-bom-alpha to v2025.12.01 by @renovate[bot] in #4027
- chore(deps): update kotlin ecosystem to v2.3.0 by @renovate[bot] in #4015
- chore(deps): update core/proto/src/main/proto digest to 62ef17b by @renovate[bot] in #4029
- chore(deps): update actions/cache action to v5 by @renovate[bot] in #4031
- chore(deps): update google maps compose to v7 (major) by @renovate[bot] in #4032
- chore(deps): update fastlane to v2.230.0 by @renovate[bot] in #4038
- chore(deps): update io.nlopez.compose.rules:detekt to v0.5.3 by @renovate[bot] in #4041
- chore(deps): update markdown renderer (mike penz) by @renovate[bot] in #4048
- chore(deps): update core/proto/src/main/proto digest to c474fd3 by @renovate[bot] in #4050
- chore(deps): update ruby to v4 by @renovate[bot] in #4062
🧱Repo
- chore: Add labeler rule for refactor branch naming by @jamesarich in #3979
🤖Automated
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3980
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3984
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3985
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3989
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3997
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3999
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #4001
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #4003
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #4004
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #4006
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #4008
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #4013
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.c...
v2.7.9 (29319572)
What's Changed
🏗️ Features
- feat: add infrastructure shutdown safeguards and enhance shutdown dialog text by @mdecourcy in #3858
- feat(firmware): Implement USB DFU updates for supported devices by @jamesarich in #3901
- chore(build-logic): Apply Spotless and Detekt to build-logic module by @jamesarich in #3962
🛠️Fixes
- fix: contact list ordering by @mdecourcy in #3863
- fix: autofocus in message threads by @mdecourcy in #3869
- fix: system back button exiting from node detail page by @mdecourcy in #3870
- feat(model): Make NetworkDeviceHardware robust to unknown JSON keys by @jamesarich in #3880
- Fix/3894 talkback confusion by @DaneEvans in #3914
- block creation or sending of duplicate channels. by @DaneEvans in #3913
- chore: Update VERSION_NAME_BASE to 2.7.9 by @jamesarich in #3917
- Revert "block creation or sending of duplicate channels. " by @jamesarich in #3921
- update internal report name to reorder . by @DaneEvans in #3925
- fix #3838 : message deletion count on the contacts page. by @DaneEvans in #3924
- Set socket timeout to 5s by @weebl2000 in #3929
- refactor: Remove unused connection transport state by @jamesarich in #3933
- refactor: improve node DB state management and readiness logic by @jamesarich in #3932
- fix(maps): Enable lite mode and fix recomposition for inline maps by @jamesarich in #3936
- refactor(settings): Use string resources for update intervals by @jamesarich in #3937
- fix(map): Remove liteMode from inline map by @jamesarich in #3949
- feat(navigation): Navigate back to list view on tab reselection by @jamesarich in #3948
- chore(ci): generate changelog on pushes to main by @jamesarich in #3951
- ci(workflow): Improve release tag detection and artifact changelog by @jamesarich in #3954
- fix: back button respects navigation history in detail screens by @mdecourcy in #3956
- fix(strings): correct settings interval templating by @jamesarich in #3959
- refactor(build): Create a dedicated analytics convention plugin by @jamesarich in #3961
- fix(nodes): Correctly filter ignored nodes by @jamesarich in #3966
👷Dependencies
- chore(deps): update ktorfit to v2.6.5 by @renovate[bot] in #3875
- chore(deps): update actions/ai-inference action to v2 by @renovate[bot] in #3888
- chore(deps): update actions/github-script action to v8 by @renovate[bot] in #3889
- chore(deps): update actions/stale action to v10.1.1 by @renovate[bot] in #3890
- chore(deps): update io.nlopez.compose.rules:detekt to v0.5.0 by @renovate[bot] in #3891
- chore(deps): update io.nlopez.compose.rules:detekt to v0.5.1 by @renovate[bot] in #3900
- chore(deps): update androidx (general) by @renovate[bot] in #3895
- chore(deps): update com.github.mik3y:usb-serial-for-android to v3.10.0 by @renovate[bot] in #3906
- chore(deps): update protobuf runtime to v4.33.2 by @renovate[bot] in #3908
- chore(deps): update core/proto/src/main/proto digest to 4095e59 by @renovate[bot] in #3905
- chore(deps): update plugin kover to v0.9.4 by @renovate[bot] in #3938
- chore(deps): update peter-evans/create-pull-request action to v8 by @renovate[bot] in #3939
- chore(deps): update plugin com.gradle.develocity to v4.3 by @renovate[bot] in #3950
- chore(deps): update actions/upload-artifact action to v5 by @renovate[bot] in #3955
- chore(deps): update mikepenz/release-changelog-builder-action action to v6 by @renovate[bot] in #3953
- chore(deps): update core/proto/src/main/proto digest to 4095e59 by @renovate[bot] in #3958
- chore(deps): update com.android.tools:common to v31.13.2 by @renovate[bot] in #3968
- chore(deps): update datadog to v3.4.0 by @renovate[bot] in #3969
- chore(deps): update agp to v8.13.2 by @renovate[bot] in #3967
🧱Repo
- chore: Add GitHub Actions for AI-powered issue and PR management by @jamesarich in #3886
- Repo - drop completeness check for feature requests by @DaneEvans in #3910
- repo/ reduce ai review triggers when unneeded by @DaneEvans in #3915
- repo: Add AI Community Moderator workflow by @jamesarich in #3931
- repo: Add Contributor Covenant Code of Conduct by @jamesarich in #3941
- chore: Schedule documentation deployment on Sundays by @jamesarich in #3942
- chore: Use repeatOnLifecycle for lifecycle-aware coroutine launch by @jamesarich in #3952
🤖Automated
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3861
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3864
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3871
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3872
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3879
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3887
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3892
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3893
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3918
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3920
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3922
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3927
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3928
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3940
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3943
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3944
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3945
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3957
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3965
New Contributors
- @weebl2000 made their first contribution in #3929
Full Changelog: https://github....
v2.7.8 (29319501)
What's Changed
🏗️ Features
- feat: Add firmware update module for Nordic nRF devices by @jamesarich in #3782
- feat(settings): Add RTTTL ringtone playback in settings by @jamesarich in #3799
- dupe internal builds to an alt repo to allow obtanium by @DaneEvans in #3809
- feat: Keep screen on during firmware update by @jamesarich in #3806
- feat: prevent QR imports from overriding local TX power by @mdecourcy in #3845
- feat(navigation): Implement adaptive list-detail for contacts and nodes by @jamesarich in #3850
- feat: firmware bootloader ota warnings by @mdecourcy in #3846
- feat: per device persistant dismissal of bootloader nags by @mdecourcy in #3859
🛠️Fixes
- docs: Overhaul and rename agent guide by @jamesarich in #3757
- chore(ci): Add Crowdin sync to scheduled updates by @jamesarich in #3760
- chore(ci): Use CROWDIN_GITHUB_TOKEN for scheduled updates PR by @jamesarich in #3761
- chore(crowdin): Remove
preserve_hierarchyoption by @jamesarich in #3764 - chore(renovate): Configure more aggressive automerge by @jamesarich in #3772
- chore: Update VERSION_NAME_BASE to 2.7.8 by @jamesarich in #3779
- fix: unread count racecondition by @mdecourcy in #3784
- fix: skip nodeinfo upsert when we recieve defaults from the node by @mdecourcy in #3796
- feat: Add Jetpack Paging 3 support for messages and threads/contacts by @mdecourcy in #3795
- refactor: Improve RSSI reading robustness in connection info by @jamesarich in #3798
- refactor(connections): Improve RSSI reading robustness by @jamesarich in #3804
- Added relays count by @RCGV1 in #3773
- fix: message list paged lifecycle resulting in notifications being cleared by @mdecourcy in #3815
- fix: skip default nodeinfo upsert in handleReceivedUser for live packets by @mdecourcy in #3819
- fix stop the connections screen from jumping during connections by @DaneEvans in #3821
- fix: allow forgetting of network nodes by @DaneEvans in #3820
- Fix add qr acting like replace instead of add by @RCGV1 in #3823
- fix: loadCachedDb() before backfill to ensure in-mem nodedb isn't stale, show filtered count in nodelist by @mdecourcy in #3827
- fix: Prevent message list jumping during pagination updates by @mdecourcy in #3829
- fix: Multiple bugs - settings text fields, dropdowns, missing override duty cycle, and MQTT icon display by @mdecourcy in #3833
- fix: node search by keeping denormalized name columns up to date and backfilling existing nodes by @mdecourcy in #3839
- fix: duplicate LazyColumn keys for broadcast contacts by @mdecourcy in #3840
- fix: fdroid device hardware fallback using bundled JSON for incomplete cache entries by @mdecourcy in #3844
- fix: further fixes for fdroid json fallbacks by @mdecourcy in #3847
- fix: prevent text fields from auto-focusing on screen load by @mdecourcy in #3857
- refactor(navigation): Simplify adaptive back nav and state by @jamesarich in #3860
👷Dependencies
- chore(deps): update plugin dependency-analysis to v3.5.0 by @renovate[bot] in #3751
- chore(deps): update actions/checkout action to v6 by @renovate[bot] in #3755
- chore(deps): update androidx datastore to v1.2.0 by @renovate[bot] in #3756
- chore(deps): update devtools.ksp to v2.3.3 by @renovate[bot] in #3759
- chore(deps): update no.nordicsemi.kotlin.ble:client-android to v2.0.0-alpha11 by @renovate[bot] in #3776
- chore(deps): update core/proto/src/main/proto digest to 52fa252 by @renovate[bot] in #3775
- chore(deps): update io.nlopez.compose.rules:detekt to v0.4.28 by @renovate[bot] in #3781
- chore(deps): update fastlane to v2.229.0 by @renovate[bot] in #3783
- chore(deps): update androidx (general) to v3.3.6 by @renovate[bot] in #3797
- chore(deps): update fastlane to v2.229.1 by @renovate[bot] in #3801
- chore(deps): update ruby to v3.4.7 by @renovate[bot] in #3802
- chore(deps): update ktor to v3.3.3 by @renovate[bot] in #3825
- chore(deps): update plugin dependency-analysis to v3.5.1 by @renovate[bot] in #3831
- chore(deps): update no.nordicsemi.kotlin.ble:client-android to v2.0.0-alpha12 by @renovate[bot] in #3849
🧱Repo
- chore(ci): preserve translation hierarchy by @jamesarich in #3762
- ci(workflows): Preserve hierarchy when uploading sources to Crowdin by @jamesarich in #3763
- fix(ci): localization branch name by @jamesarich in #3765
- ci: check workflow status on scheduled updates by @jamesarich in #3774
- fix: typo by @jamesarich in #3777
- chore(ci): Use dedicated token for Crowdin workflow by @jamesarich in #3778
- fix token value by @DaneEvans in #3811
- tweak bug reports by @DaneEvans in #3818
- add 'ci' to autolabel for repo. by @DaneEvans in #3835
🤖Automated
- New Crowdin updates by @jamesarich in #3752
- chore: Scheduled updates (Firmware, Hardware, Translations) by @github-actions[bot] in #3766
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3790
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3791
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3794
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3800
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3803
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3810
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3824
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3826
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3828
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3832
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3834
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3836
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in #3843
- chore: Scheduled updates (Firmware, Hardware, Translations) by @jamesarich in https://github.com/meshtastic/Meshtastic-An...
v2.7.7 (29319424)
What's Changed
🏗️ Features
- refactor(ble): Migrate to Nordic BLE Library for scanning and bonding by @jamesarich in #3712
- feat #3642: Add infrastructure to the list of filters. by @DaneEvans in #3716
- feat(connections):
Connectingstate refactor by @jamesarich in #3722 - feat(ui): Display BLE signal strength for connected device by @jamesarich in #3721
- feat(ui): Improve scan status text display by @jamesarich in #3725
- feat: polish jump to unread message by @mdecourcy in #3710
🛠️Fixes
- Update strings.xml by @b8b8 in #3711
- add back arrow to the channelConfig screen by @DaneEvans in #3713
- refactor(coroutines): Use SupervisorJobs by @jamesarich in #3714
- fix #3509: MQTT reporting interval not being selected, and sent to node by @DaneEvans in #3717
- fix(bluetooth): Check for permissions before accessing bonded devices by @jamesarich in #3720
- feat(bluetooth): Request location permission for BLE scan pre S by @jamesarich in #3724
- feat(nsd): Add support for Android 14+ NSD resolving by @jamesarich in #3731
- refactor(service): Simplify boot-time service startup by @jamesarich in #3730
- refactor(ble): Improve BLE connection stability and error handling by @jamesarich in #3744
👷Dependencies
- chore(deps): update com.squareup.okhttp3:logging-interceptor to v5.3.1 by @renovate[bot] in #3718
- chore(deps): update gradle to v9.2.1 by @renovate[bot] in #3723
- chore(deps): update com.squareup.okhttp3:logging-interceptor to v5.3.2 by @renovate[bot] in #3733
- chore(deps): update core/proto/src/main/proto digest to 7eb3258 by @renovate[bot] in #3736
- chore(deps): update plugin spotless to v8.1.0 by @renovate[bot] in #3738
- chore(deps): update com.diffplug.spotless:spotless-plugin-gradle to v8.1.0 by @renovate[bot] in #3737
- chore(deps): update datadog to v3.3.0 by @renovate[bot] in #3742
- chore(deps): update androidx (general) by @renovate[bot] in #3745
- chore(deps): update androidx room to v2.8.4 by @renovate[bot] in #3746
- chore(deps): update androidx lifecycle to v2.10.0 by @renovate[bot] in #3748
- chore(deps): update androidx.navigation3:navigation3-runtime to v1.0.0 by @renovate[bot] in #3747
🧱Repo
- chore: Update VERSION_NAME_BASE to 2.7.7 by @jamesarich in #3715
🤖Automated
- New Crowdin updates by @jamesarich in #3734
- New Crowdin updates by @jamesarich in #3739
- chore: Scheduled updates (Firmware, Hardware) by @jamesarich in #3743
Full Changelog: v2.7.6...v2.7.7
v2.7.6 (29319394)
What's Changed
🏗️ Features
- Feat/improve debug decoding by @DaneEvans in #3554
- feat #3436 - add current IP address' to the settings > network panel. by @DaneEvans in #3537
- Fix #3542 Conversations list item layout. by @Tema-man in #3553
- feat: Display relay node information for messages by @jamesarich in #3574
- Enable parallel installation of debug and release builds by @poliver in #3596
- Remove
UiViewModelsnackbar logic by @poliver in #3598 - Modularize remaining nodes code by @poliver in #3599
- Move
SettingsNavigationback to:appmodule by @poliver in #3604 - Re-enable debug application IDs by @poliver in #3607
- feat(map): Persist Google Maps camera position by @jamesarich in #3605
- Remove
stringResource()idnamed argument by @poliver in #3618 - Alias strings
RtoResby @poliver in #3619 - Relocate proto utils by @poliver in #3621
- Clean up string access by @poliver in #3629
- refactor(ble): Replace custom BLE implementation with Nordic by @jamesarich in #3595
- feat: per device DB manager by @mdecourcy in #3641
- refactor(ble): Refactor NordicBleInterface for clarity and stability by @jamesarich in #3653
- Kmp strings cleanup by @poliver in #3669
- feat: Add bottom-nav scroll-to-top handling for nodes and conversations by @mdecourcy in #3674
- feat(ble): Add support for LogRadio characteristic, enhance logs by @jamesarich in #3691
- feat: jump to oldest unread message upon opening a thread, display divider between read/unread by @mdecourcy in #3693
🛠️Fixes
- Add node's name to CSV export file by @NeimadTL in #3555
- fix #3528 Handle duplicate values in the broadcast interval enum by @DaneEvans in #3538
- Fix #3468 - Timed Mute by @DaneEvans in #3544
- fix #3566: rangetest export not having distances by @DaneEvans in #3566
- fix #2062: Remap channels when rearranged by @DaneEvans in #3561
- feat: Enable minification and add ProGuard rules by @jamesarich in #3576
- refactor: Comment out debug applicationId overrides by @jamesarich in #3601
- Use
Resourcesfor string access by @poliver in #3620 - fix(#3622): Do not favorite node when sending a dm from a CLIENT_BASE device by @jamesarich in #3623
- refactor: Update protobuf keep rule for new package name by @jamesarich in #3627
- fix: Clear packet database alongside node database by @jamesarich in #3634
- fix: Update ignored status in nodeDB on toggle by @jamesarich in #3638
- fix: Add delays around heartbeat on connection by @jamesarich in #3643
- fix: bt notif subscription race condition by @jamesarich in #3645
- Make
:core:stringsa Compose Multiplatform library by @poliver in #3617 - chore: temporarily remove translations to allow crowdin to repopulate by @jamesarich in #3664
- refactor: Improve log export logic for decoded payloads by @jamesarich in #3663
- fix: enforce LRU only over device-specific DBs, add one-time deletion of legacy DB on switch (guarded by prefs flag) by @mdecourcy in #3648
- fix: clear in mem cached values on nodedb, factory reset by @mdecourcy in #3680
- Remove escaped single quotes and fix format args (translations) by @poliver in #3682
- Attempt to disable crowdin escapes by @poliver in #3685
- Attempt to disable crowdin single quote escapes by @poliver in #3687
- fix(strings): Correct format specifiers for plurals and integers by @jamesarich in #3698
- chore: Fix unescaped apostrophes in translations by @jamesarich in #3700
- fix: address backfill issue on tcp connections; add logging by @mdecourcy in #3676
- feat(build): Add distinct names for debug builds by @jamesarich in #3707
👷Dependencies
- chore(deps): update kotlin ecosystem to v2.2.21 by @renovate[bot] in #3531
- chore(deps): update github artifact actions (major) by @renovate[bot] in #3541
- chore(deps): update plugin dependency-analysis to v3.4.0 by @renovate[bot] in #3540
- chore(deps): update gradle to v9.2.0 by @renovate[bot] in #3558
- chore(deps): update plugin dependency-analysis to v3.4.1 by @renovate[bot] in #3572
- chore(deps): update firebase by @renovate[bot] in #3571
- chore(deps): update com.squareup.okhttp3:logging-interceptor to v5.3.0 by @renovate[bot] in #3579
- chore(deps): update core/proto/src/main/proto digest to fbe1538 by @renovate[bot] in #3584
- chore(deps): update markdown renderer (mike penz) to v0.38.1 by @renovate[bot] in #3594
- ci: Enable Renovate for Bundler by @jamesarich in #3602
- chore(deps): Bump aws-sdk-s3 and related dependencies by @jamesarich in #3603
- chore(deps): update devtools.ksp to v2.3.1 by @renovate[bot] in #3612
- chore(deps): update com.google.android.gms:play-services-maps to v19.2.0 by @renovate[bot] in #3613
- chore(deps): update ktor to v3.3.2 by @renovate[bot] in #3624
- chore(deps): update androidx navigation by @renovate[bot] in #3625
- chore(deps): update androidx (general) by @renovate[bot] in #3626
- chore(deps): update androidx navigation to v1.0.0-rc01 by @renovate[bot] in #3628
- chore(deps): update devtools.ksp to v2.3.2 by @renovate[bot] in #3635
- chore(deps): update agp to v8.13.1 by @renovate[bot] in #3651
- chore(deps): update com.android.tools:common to v31.13.1 by @renovate[bot] in #3652
- chore(deps): update plugin compose-multiplatform to v1.9.3 by @renovate[bot] in #3654
- feat(#3508): Optionally preserve Favorites on nodeDb reset by @renovate[bot] in #3633
- chore(deps): update com.google.zxing:core to v3.5.4 by @renovate[bot] in #3670
- chore(deps): update protobuf runtime to v4.33.1 by @renovate[bot] in #3692
- chore(deps): update com.google.firebase:firebase-bom to v34.6.0 by @renovate[bot] in #3704
- chore(deps): update google maps compose to v6.12.2 by @renovate[bot] in #3706
🧱Repo
- Update VERSION_NAME_BASE to 2.7.6 by @jamesarich in #3588
- fix: Explicitly set Crowdin project type to Android by @jamesarich in #3694
- feat: Add pre-commit run configuration by @JamesAric...
v2.7.5 (29319286)
What's Changed
🏗️ Features
- Generate a POSIX timezone string from a ZoneID by @poliver in #3514
- Organize channel config files by @poliver in #3526
🛠️Fixes
- fix: Allow BLE reconnection after connection drop by @suteny0r in #3518
- chore: Update VERSION_NAME_BASE to 2.7.5 by @jamesarich in #3527
👷Dependencies
- chore(deps): update plugin dependency-analysis to v3.2.0 by @renovate[bot] in #3515
- chore(deps): update androidx room to v2.8.3 by @renovate[bot] in #3524
- chore(deps): update androidx.compose.material3.adaptive:adaptive to v1.2.0 by @renovate[bot] in #3525
- chore(deps): update androidx (general) by @renovate[bot] in #3522
- chore(deps): update devtools.ksp to v2.3.0 by @renovate[bot] in #3516
- chore(deps): update androidx navigation to v1.0.0-beta01 by @renovate[bot] in #3523
🤖Automated
- New Crowdin updates by @jamesarich in #3513
New Contributors
Full Changelog: v2.7.4...v2.7.5-open.1
v2.7.4 (29319275)
What's Changed
🏗️ Features
- Add unread count badge to bottom nav by @poliver in #3440
- Modularize messaging code by @poliver in #3435
- Remove unused
UiViewModelcode by @poliver in #3442 - Move maps manifest to
:feature:mapby @poliver in #3444 - Decouple settings screens from
NavHostControllerby @poliver in #3450 - Tweak settings footer button style/visibility by @poliver in #3458
- feat(ble): Refactor SafeBluetooth and add modern Android API support by @jamesarich in #3483
- feat(#3474): Move lock icon on ContactItem.kt, tweak layout. by @jamesarich in #3487
- feat(map): Add pulsing animation to recently heard nodes by @jamesarich in #3495
🛠️Fixes
- feat(workflows): Allow promotions from any channel by @jamesarich in #3432
- remove default value for onDismiss from SimpleAlertDialog by @SebRut in #3441
- Move
NodeMapScreento:feature:mapby @poliver in #3443 - Sets keyboard sentence capitalization on chat text inputs by @Kealper in #3445
- Modularize
ScannedQrCodeDialogby @poliver in #3446 - chore: Add workflows permission to GitHub Actions by @jamesarich in #3452
- Revert "chore: Add workflows permission to GitHub Actions" by @jamesarich in #3454
- Add
stateInWhileSubscribedextension by @poliver in #3456 - Clean up list item component API by @poliver in #3465
- Add dividers to node details by @poliver in #3466
- Enhancement - Add 'show all meanings' to node key encryption dialog by @ChrisDeardeuff in #3437
- Align
CoroutineDispatchersusage by @poliver in #3481 - Fix lint in
Main.ktby @poliver in #3484 - feat(bluetooth): conditional RSSI polling by @jamesarich in #3489
- Revert "chore(deps): update ruby to v3.4.7" by @jamesarich in #3490
- Fix app cold start jank by @poliver in #3492
- Update strings.xml - Remove "seconds" by @b8b8 in #3497
- feat(position): Update position broadcast intervals by @jamesarich in #3500
- feat: Remove Bluetooth RSSI feature by @jamesarich in #3504
👷Dependencies
- chore(deps): update com.google.firebase:firebase-bom to v34.4.0 by @renovate[bot] in #3427
- chore(deps): update core/proto/src/main/proto digest to cd5c83a by @renovate[bot] in #3429
- chore(deps): update com.squareup.okhttp3:logging-interceptor to v5.2.1 by @renovate[bot] in #3430
- chore(deps): update core/proto/src/main/proto digest to 38638f1 by @renovate[bot] in #3433
- chore(deps): update plugin com.gradle.develocity to v4.2.2 by @renovate[bot] in #3453
- chore(deps): update datadog to v3.2.0 by @renovate[bot] in #3462
- chore(deps): update org.jetbrains.dokka:android-documentation-plugin to v2.1.0 by @renovate[bot] in #3471
- chore(deps): update plugin dokka to v2.1.0 by @renovate[bot] in #3472
- chore(deps): update protobuf runtime to v4.33.0 by @renovate[bot] in #3475
- chore(deps): update plugin kover to v0.9.3 by @renovate[bot] in #3485
- chore(deps): update ruby to v3.4.7 by @renovate[bot] in #3416
- chore(deps): update devtools.ksp to v2.2.20-2.0.4 by @renovate[bot] in #3428
- chore(deps): update core/proto/src/main/proto digest to 4a61838 by @renovate[bot] in #3493
- chore(deps): update core/proto/src/main/proto digest to bf149bb by @renovate[bot] in #3501
🧱Repo
- chore(repo): Update VERSION_NAME_BASE to 2.7.4 by @jamesarich in #3457
- Modify stale.yml for issue management by @jamesarich in #3460
🤖Automated
- New Crowdin updates by @jamesarich in #3431
- chore: Scheduled updates (Firmware, Hardware) by @jamesarich in #3438
- New Crowdin updates by @jamesarich in #3455
- New Crowdin updates by @jamesarich in #3459
- New Crowdin updates by @jamesarich in #3463
- New Crowdin updates by @jamesarich in #3470
- New Crowdin updates by @jamesarich in #3473
- New Crowdin updates by @jamesarich in #3477
- New Crowdin updates by @jamesarich in #3479
- chore: Scheduled updates (Firmware, Hardware) by @jamesarich in #3488
- New Crowdin updates by @jamesarich in #3498
- New Crowdin updates by @jamesarich in #3505
New Contributors
- @SebRut made their first contribution in #3441
- @ChrisDeardeuff made their first contribution in #3437
Full Changelog: v2.7.3...v2.7.4
v2.7.3 (29319219)
What's Changed
🏗️ Features
- Modularize settings code by @poliver in #3355
- Inject
PlatformAnalyticsdirectly by @poliver in #3358 - feat: Always Display voltage by @jamesarich in #3362
- Remove unused dependencies in
:appby @poliver in #3365 - refactor(ui): Refactor SettingsItem component by @jamesarich in #3364
- Remove version catalog bundles by @poliver in #3370
- Move tests to appropriate modules by @poliver in #3377
- Remove remaining unused dependencies in
:core:*by @poliver in #3387 - feat(ui): Refactor node position details into separate section by @jamesarich in #3382
- feat(ui): Simplify connection status message by @jamesarich in #3389
- feat(ci): Configure staged rollouts for Android releases by @jamesarich in #3399
- feat(#3409): Add analytics notice to welcome screen by @jamesarich in #3410
- feat(settings): replace interval inputs with dropdowns by @jamesarich in #3352
🛠️Fixes
- refactor: Switch to
compileOnlyfor convention plugins by @jamesarich in #3357 - feat(ble): Implement keep-alive and improve connection stability by @jamesarich in #3359
- feat: Add contentColor parameter to info components by @jamesarich in #3363
- ci: Use
tag_nameinput in release and promote workflows by @jamesarich in #3366 - Fix google build by @poliver in #3371
- Remove unused
:core:databasedependencies by @poliver in #3383 - fix: service status notification refactor by @jamesarich in #3386
- fix: Change fallback node name format by @jamesarich in #3391
- ci: fix release cleanup by @jamesarich in #3392
- Remove remaining unused dependencies across the project by @poliver in #3390
- ci(github-actions): Check for null tagName in post-release-cleanup by @jamesarich in #3398
- feat(node): Always show exchange position action by @jamesarich in #3400
- Fix share channels crash by @poliver in #3401
- Protobuf package change by @poliver in #3291
- Revert "chore(deps): update ruby to v3.4.7" by @jamesarich in #3415
- feat(ci): Refactor release promotion logic by @jamesarich in #3418
- feat(ci): Checkout code in promotion workflow by @jamesarich in #3419
- ci(workflow): Calculate release increment based on target channel by @jamesarich in #3420
- feat(ci): Use
gh release editto retag releases by @jamesarich in #3421 - ci(github-actions): Remove tag step for promotions by @jamesarich in #3422
👷Dependencies
- Consistent catalog naming for AndroidX dependencies by @poliver in #3368
- chore(deps): update github/codeql-action action to v4 by @renovate[bot] in #3376
- chore(deps): update com.squareup.okhttp3:logging-interceptor to v5.2.0 by @renovate[bot] in #3378
- chore(deps): update google maps compose to v6.12.1 by @renovate[bot] in #3379
- chore(deps): update devtools.ksp to v2.2.20-2.0.3 by @renovate[bot] in #3380
- Remove unused
:core:analyticsdependencies by @poliver in #3381 - chore(deps): update ruby to v3.4.7 by @renovate[bot] in #3384
- chore(deps): update ktor to v3.3.1 by @renovate[bot] in #3397
- chore(deps): update androidx room to v2.8.2 by @renovate[bot] in #3405
- chore(deps): update androidx.compose.material3.adaptive:adaptive to v1.2.0-rc01 by @renovate[bot] in #3406
- chore(deps): update androidx navigation to v1.0.0-alpha11 by @renovate[bot] in #3404
- chore(deps): update androidx (general) by @renovate[bot] in #3407
- chore(deps): update plugin dependency-analysis to v3.1.0 by @renovate[bot] in #3408
- chore(deps): update core/proto/src/main/proto digest to ef173e3 by @renovate[bot] in #3403
- chore(deps): update core/proto/src/main/proto digest to ef173e3 by @renovate[bot] in #3411
- chore(deps): update ruby to v3.4.7 by @renovate[bot] in #3414
- chore(deps): update com.google.gms.google-services:com.google.gms.google-services.gradle.plugin to v4.4.4 by @renovate[bot] in #3425
- chore(deps): update plugin google-services to v4.4.4 by @renovate[bot] in #3426
🧱Repo
- chore: Update VERSION_NAME_BASE to 2.7.3 by @jamesarich in #3367
🤖Automated
- New Crowdin updates by @jamesarich in #3369
- New Crowdin updates by @jamesarich in #3388
- New Crowdin updates by @jamesarich in #3393
- New Crowdin updates by @jamesarich in #3412
- New Crowdin updates by @jamesarich in #3417
Full Changelog: v2.7.2...v2.7.3
v2.7.2 (29319162)
What's Changed
🏗️ Features
- Decouple
MessageScreenfromUiViewModelby @poliver in #3210 - Decouple
MapViewfromUiViewModelby @poliver in #3213 - Move some repo classes to
:core:databy @poliver in #3214 - Decouple contacts nav graph from
UiViewModelby @poliver in #3215 - Decouple
MainAppBarfromUiViewModelby @poliver in #3216 - feat(map): add last heard filter for map nodes by @jamesarich in #3219
- feat(map): Add last heard filter for node tracks by @jamesarich in #3222
- add colour coding to traceroutes by @DaneEvans in #3227
- feat(bluetooth): expose and display bluetooth signal strength (RSSI) by @jamesarich in #3235
- Migrate node sort prefs to datastore by @poliver in #3241
- Clearer node filter options by @poliver in #3250
- Add
:core:serviceby @poliver in #3253 - Decouple
NodeMapScreenfromUIViewModelby @poliver in #3257 - refactor(analytics)!: modularize analytics - remove Logging by @jamesarich in #3256
- feat(map): set minimum cluster size to 10 by @jamesarich in #3260
- refactor(ui)!: update NodeItem display with new components by @jamesarich in #3273
- Add
:feature:nodeby @poliver in #3275 - Modularize common composables by @poliver in #3286
- feat(network): add http cache to OkHttpClient by @jamesarich in #3290
- feat(contact): add manually verified shared contact support by @jamesarich in #3283
- feat(settings): add link to system app settings by @jamesarich in #3293
ConnectionsScreenavailable BLE devices by @poliver in #3298- Finish migration away from global app bar by @poliver in #3297
- Add
BuildConfigProviderby @poliver in #3318 - More map modularization by @poliver in #3319
- Decouple
NodeMapScreenfromMetricsViewModelby @poliver in #3323
🛠️Fixes
- Decouple
NodeDetailfromUiViewModelby @poliver in #3212 - ci(release): add build provenance and streamline release process by @jamesarich in #3217
- Spruce up
LoRaConfigScreenby @poliver in #3224 - fix(service): clear nodeDB when device address changes by @jamesarich in #3232
- build: use git commit count for versionCode by @jamesarich in #3233
- Remove
NodeChiplong-click by @poliver in #3220 - fix(build): apply Datadog and Firebase plugins only to google flavor by @jamesarich in #3240
- Remove node card expansion by @poliver in #3243
- fix(crash): pass in navcontroller and specify viewmodel type by @jamesarich in #3244
- fix(ui): handle ActivityNotFoundException when opening firmware links by @jamesarich in #3245
- fix(service): Update foreground service type and error handling by @jamesarich in #3246
- fix(deps): update Kotlin Serialization plugin version by @jamesarich in #3261
- Remove noisy error disconnected toast by @thebentern in #3263
- Modularize more maps files by @poliver in #3262
- chore(analytics): Disable Google services for F-Droid builds by @jamesarich in #3264
- chore(fdroid): Configure F-Droid build variant by @jamesarich in #3265
- ci(release): simplify artifact paths for GitHub Release by @jamesarich in #3267
- feat(analytics): Set session sample rate for RUM by @jamesarich in #3277
- Fix
NodeChipclick handling by @poliver in #3278 - fix(debug): replace top app bar with actions (delete) by @jamesarich in #3276
- Move
MapViewExtensionsto:feature:mapby @poliver in #3284 - Decouple
ChannelScreenfromUIViewModelby @poliver in #3295 - Decouple
ScannedQrCodeDialogfromUiViewModelby @poliver in #3300 - Fix shared contact deeplink by @poliver in #3302
- feat(ci): overhaul release workflow for hotfixes and promotions by @jamesarich in #3307
- Update strings.xml - PKI required for DMs by @b8b8 in #3301
- refactor(release)!: simplify and streamline release workflow by @jamesarich in #3309
- ci(github-actions): add Release environment to workflows by @jamesarich in #3310
- ci(workflows): configure git user for release workflows by @jamesarich in #3311
- ci(github-actions): move release environment to correct workflow by @jamesarich in #3314
- ci(release): trigger release workflow from promotion and internal builds by @jamesarich in #3315
- chore(ci): remove release environment from prepare-build-info job by @jamesarich in #3316
- ci(release): check for existing versionCode on Google Play before build by @jamesarich in #3320
- ci(promote-release): enhance stage promotion logic by @jamesarich in #3321
- ci(release): refine promotion logic and enhance Datadog integration by @jamesarich in #3322
- Revert by @jamesarich in #3325
- Revert markdown message rendering by @jamesarich in #3328
- feat(chat): (re)allow multi-line messages in text input by @jamesarich in #3329
- fix: update foreground service type to manifest by @jamesarich in #3332
- ci(release): refactor release workflow to be callable by @jamesarich in #3330
- feat(workflow): update permissions for release workflow by @jamesarich in #3333
- fix(release): simplify build condition for internal channel by @jamesarich in #3336
- Refactor build steps to check channel input by @jamesarich in #3337
- fix(release): update track names for Google Play promotion by @jamesarich in #3338
- refactor(ci): separate release and promotion workflows by @jamesarich in #3339
- feat(fastlane): copypasta typo by @jamesarich in #3342
👷Dependencies
- chore(deps): update core/proto/src/main/proto digest to 082bb7c by @renovate[bot] in #3223
- chore(deps): update core/proto/src/main/proto digest to 394268b by @renovate[bot] in #3252
- chore(deps): update gradle/actions action to v5 by @renovate[bot] in #3270
- chore(deps): update google maps compose to v6.12.0 by @renovate[bot] in #3274
- chore(deps): update core/proto/src/main/proto digest to 60c3e66 by @renovate[bot] in #3279
- chore(deps): update plugin com.gradle.develocity to v4.2.1...
Release v2.7.1
What's Changed
🏗️ Features
- Feat/node notes by @DaneEvans in #3014
- docs: update app store metadata by @jamesarich in #3048
- Update strings.xml - Include GeoJSON by @b8b8 in #3052
- feat(build): Convention Plugins by @jamesarich in #3081
- More
ConnectionsScreenscreen breakup by @poliver in #3108 - feat(build-logic): modularize build-logic & update dependencies by @jamesarich in #3110
- Example project: Appease Detekt by @poliver in #3125
- Move nav routes to new
:navigationproject module by @poliver in #3124 - Decouple
ConnectionsScreenfromUiViewModelby @poliver in #3126 - Re-add "set region" CTA by @poliver in #3129
- Start migration away from global top app bar by @poliver in #3132
- Decouple
SettingsScreenfromUiViewModelby @poliver in #3137 - Flatten
BluetoothViewModelby @poliver in #3138 - Add
MapScreenby @poliver in #3142 - New core modules for
:model,:navigation,:network,:prefsby @poliver in #3147 - Launch system language picker for API 33+ by @poliver in #3145
- Modularize protos by @poliver in #3152
- Modularize some model classes by @poliver in #3153
- feat(settings): align config screens copy and order with iOS by @jamesarich in #3144
- refactor(R): Move R file imports to core UI module by @jamesarich in #3159
- refactor(settings)!: standardize radio config screens by @jamesarich in #3167
- Add core data modules by @poliver in #3169
- Modularize prefs classes by @poliver in #3171
- feat(settings): add device telemetry toggle by @jamesarich in #3166
- Move common dispatchers to
:core:diby @poliver in #3178 - Modularize
CustomTileProviderRepositoryby @poliver in #3181 - Modularize more models/utils by @poliver in #3182
- refactor(ui): improve UX for saving node notes by @jamesarich in #3197
- Add
:core:uiby @poliver in #3203 - Less state held by
MeshServiceby @poliver in #3205 - Decouple
NodeScreenfromUiViewModelby @poliver in #3207
🛠️Fixes
- Update EnvironmentMetrics.kt - μR/h by @b8b8 in #3008
- fix(service): increase config wait time by @jamesarich in #3006
- docs: update release process for promotion strategy by @jamesarich in #3017
- feat(ci): migrate to fastlane for release management by @jamesarich in #3038
- docs(RELEASE_PROCESS): update release finalization steps by @jamesarich in #3040
- fix(merge-queue): add CODECOV_TOKEN to secrets by @jamesarich in #3064
- ci: add CODECOV_TOKEN to merge-queue workflow by @jamesarich in #3066
- ci: upload Android test results to Codecov by @jamesarich in #3055
- fix: detekt by @jamesarich in #3090
- fix: detekt by @jamesarich in #3096
- Add coverage status configuration to codecov.yml by @jamesarich in #3104
- #2803 Waypoints with line breaks by @DaneEvans in #3101
- Convert sample project to Kotlin by @poliver in #3111
- refactor(build): simplify lint, spotless, and detekt configurations by @jamesarich in #3133
- refactor(map): use hiltViewModel for MapViewModel by @jamesarich in #3135
- Modularize some map-related files by @poliver in #3154
- ci: streamline release process and artifact handling by @jamesarich in #3163
- Update strings.xml by @b8b8 in #3180
- Modularize database classes by @poliver in #3192
- refactor(service): unify config and node info request flow by @jamesarich in #3201
- chore(release): remove update-github-release step from workflow by @jamesarich in #3204
- feat(db): introduce transactional config installation by @jamesarich in #3209
👷Dependencies
- chore(deps): update meshtastic protobufs to 8caf423 by @renovate[bot] in #3025
- chore(deps): update actions/upload-pages-artifact action to v4 by @renovate[bot] in #3029
- chore(deps): update google maps compose to v6.10.0 by @renovate[bot] in #3036
- chore(deps): update actions/download-artifact action to v5 by @renovate[bot] in #3046
- chore(deps): update ruby to v3.4.5 by @renovate[bot] in #3045
- chore(deps): update kotlin ecosystem to v2.2.20 by @renovate[bot] in #3050
- chore(deps): update codecov/codecov-action action to v5 by @renovate[bot] in #3069
- chore(deps): update androidx adaptive ui to v1.2.0-beta02 by @renovate[bot] in #3057
- chore(deps): update androidx room to v2.8.0 by @renovate[bot] in #3060
- chore(deps): update androidx navigation by @renovate[bot] in #3059
- chore(deps): update androidx (general) by @renovate[bot] in #3056
- chore(deps): update androidx.hilt:hilt-navigation-compose to v1.3.0 by @renovate[bot] in #3068
- chore(deps): update com.google.devtools.ksp to v2.2.20-2.0.2 by @renovate[bot] in #3067
- chore(deps): update protobuf runtime to v4.32.1 by @renovate[bot] in #3078
- chore(deps): update com.google.protobuf:protoc to v4.32.1 by @renovate[bot] in #3102
- chore(deps): update androidx (general) by @renovate[bot] in #3103
- chore(deps): update plugin datadog to v1.20.0 by @renovate[bot] in #3105
- chore(deps): update plugin dependency-analysis to v3.0.3 by @renovate[bot] in #3112
- chore(deps): update plugin com.gradle.common-custom-user-data-gradle-plugin to v2.4.0 by @renovate[bot] in #3113
- chore(deps): update markdown renderer (mike penz) to v0.37.0 by @renovate[bot] in #3087
- chore(deps): update meshtastic protobufs to 945b796 by @renovate[bot] in #3114
- chore(deps): update androidx.compose.runtime:runtime-tracing to v1.9.1 by @renovate[bot] in #3116
- chore(deps): update plugin dependency-analysis to v3.0.3 by @renovate[bot] in #3115
- chore(deps): update ruby to v3.4.6 by @renovate[bot] in #3120
- Use Ktor/Ktorfit for API calls by @poliver in #3122
- chore(deps): update plugin com.gradle.develocity to v4.2 by @renovate[bot] in #3121
- chore(deps): update plugin kover to v0.9.2 by @Renova...