Releases: meshtastic/Meshtastic-Android
Releases · meshtastic/Meshtastic-Android
v2.7.13 (29320069)
What's Changed
🏗️ Features
- feat(wire): migrate from protobuf -> wire by @jamesarich in #4401
- Update strings.xml by @b8b8 in #4432
- feat(deps): Update Wire to v6.0.0-alpha02 by @jamesarich in #4440
- feat(example): Add packet log and UI improvements by @jamesarich in #4455
- feat(sharing): Refactor QR/NFC scanning with ML Kit and CameraX by @jamesarich in #4471
- feat(ui): Redesign NodeItem for improved clarity and density by @jamesarich in #4475
- feat: Check if NFC is enabled and prompt user to enable it by @jamesarich in #4482
- feat: Add stable class definitions for Meshtastic models by @jamesarich in #4500
- feat(database): Enable Write-Ahead Logging for Room DB by @jamesarich in #4499
- feat: Remove auto-retry confirmation for messages by @jamesarich in #4513
- refactor(time): Centralize time handling with kotlinx-datetime by @jamesarich in #4545
- feat(notifications): navigate to node details on tap by @jamesarich in #4558
- feat(settings): Only show homoglyph setting for Cyrillic locales by @jamesarich in #4559
- feat(nodes): Display role-specific icons by @jamesarich in #4572
- feat(settings): Allow clearing the node status message by @jamesarich in #4577
🛠️ Fixes
- chore(ci): Change number of shards for parallel test execution by @jamesarich in #4428
- refactor(model): Make DataPacket fully mutable and fix Parcel reading by @jamesarich in #4431
- ci(jitpack): Use standard Gradle tasks for building by @jamesarich in #4448
- refactor(build): Use version catalog for Compose Multiplatform by @jamesarich in #4452
- feat(db): Add sender-based message filtering by @jamesarich in #4477
- refactor(node): Improve public key conflict handling by @jamesarich in #4486
- feat(ble): Handle invalid BLE attributes by @jamesarich in #4485
- feat: Queue special app PortNums when disconnected by @jamesarich in #4495
- feat: Improve connection state broadcast and timing by @jamesarich in #4498
- feat: Add disconnect broadcast and improve app port handling by @jamesarich in #4502
- feat: consolidate dialogs by @jamesarich in #4506
- feat(charts): More charts ui/ux tweaks by @jamesarich in #4520
- fix: use truthy value for
emojifield on Reaction packets by @jamesarich in #4524 - fix(db): Revert removal of retry_count by @jamesarich in #4527
- fix(settings): Correct hop_limit type for LoRa config by @jamesarich in #4525
- feat(messaging): Move message input to Scaffold bottomBar by @jamesarich in #4530
- feat(messaging): Add bell character to alert message and refine trim by @jamesarich in #4532
- feat(analytics): Enhance user privacy by @jamesarich in #4540
- fix(mesh): Set from field in locally handled packets by @jamesarich in #4543
- fix(release): fixes to prep for release by @jamesarich in #4546
- feat(db): enhance public key conflict handling by @jamesarich in #4555
- fix: uri handling, ci test setup by @jamesarich in #4556
- chore(docs): Refine Dokka source set configuration by @jamesarich in #4562
- feat: Accurately display outgoing diagnostic packets by @jamesarich in #4569
- refactor(ui): Simplify composable message handling in dialog by @jamesarich in #4573
- refactor(metrics): Prevent chart crashes with empty data by @jamesarich in #4578
- refactor(settings): Use LocalConfig for radio configuration state by @jamesarich in #4579
- refactor(logging): Reduce log noise by lowering severity of common errors by @jamesarich in #4591
📝 Other Changes
- refactor(build): Introduce AndroidLibraryFlavors convention plugin by @jamesarich in #4449
- chore(ci): Simplify jitpack.yml build steps by @jamesarich in #4460
- build(ksp): ksp and publishing tuning by @jamesarich in #4462
- Enhancement - optional transparent homoglyph encoding of a few characters in certain languages for more compact and efficient text messages by @LuigiVampa92 in #4491
- fix: Defer setting connected state until after nodeDB load by @jamesarich in #4505
- Revert "chore(deps): update nordic.ble to v2.0.0-alpha13" by @jamesarich in #4536
New Contributors
- @LuigiVampa92 made their first contribution in #4491
Full Changelog: v2.7.12...v2.7.13
v2.7.12 (29319940)
What's Changed
🏗️ Features
- feat: word-based message filtering with quarantine approach (stored but hidden) by @mdecourcy in #4241
- feat(node): Refactor Node Detail screen and enhance user feedback by @jamesarich in #4291
- Refactor: Only show advanced and app settings for local node by @jamesarich in #4290
- feat: Add Status Message module support by @jamesarich in #4163
- refactor(ui): Icon audit and node list item refactor by @jamesarich in #4313
- feat(ui): Remove uptime from SignalInfo by @jamesarich in #4328
- feat(messaging): Improve message bubble UI and add delivery status action by @jamesarich in #4330
- Refactor: Replace custom charts with Vico library by @jamesarich in #4348
- Refactor: Create
core:apimodule and set up publishing by @jamesarich in #4362 - feat(charts): voltage, colors, legends, and adaptive ui by @jamesarich in #4383
🛠️ Fixes
- feat(service): Introduce fallback worker to ensure service stays alive by @jamesarich in #4295
- feat: Improve channel migration logic and add tests by @jamesarich in #4294
- fix(ui): Prevent NaN values in environment metrics by @jamesarich in #4316
- fix(usb): Add error handling for serial write operations by @jamesarich in #4318
- fix(service): Add error handling for invalid StoreForward++ packets by @jamesarich in #4319
- fix: map cluster crash by @jamesarich in #4317
- refactor(core): Optimize and share network state flows by @jamesarich in #4320
- fix(notifications): Suppress notifications for muted contacts an… by @jamesarich in #4323
- fix(mesh): Set
hopStartto matchhopLimitin sent packets by @jamesarich in #4324 - fix(node): list and detail usability fixes by @jamesarich in #4336
- refactor(firmware): Inject dispatcher into
BleOtaTransportby @jamesarich in #4339 - fix(caps): Correct firmware version for
canMuteNodeby @jamesarich in #4341 - chore(lint): Disable ForbiddenComment detekt rule by @jamesarich in #4344
- fix(neighborinfo): disable neighbor info dialog temporarily by @jamesarich in #4345
- fix(reactions): fix sent message reaction alignment by @jamesarich in #4355
- refactor(build): Centralize Android SDK and Java versions by @jamesarich in #4377
- fix(node): fix regressions since node ui refactor by @jamesarich in #4379
- refactor(build): Centralize Develocity and build cache configuration by @jamesarich in #4382
- Refactor PR workflow to include check-changes step by @jamesarich in #4397
- chore: fix regressions in the release by @jamesarich in #4398
- ci18n: Add fastlane metadata to Crowdin by @jamesarich in #4402
- feat(settings): Add firmware capability checks for settings by @jamesarich in #4403
- ci: fix scheduled-updates workflow by explicitly adding paths by @jamesarich in #4405
- feat(release): Automate changelog, asset updates, and tagging by @jamesarich in #4407
- fix(ci): ensure release commit is pushed to branch and validate SHA by @jamesarich in #4409
- fix(ci): robust SHA passing for release workflow by @jamesarich in #4410
- fix(ci): ensure release SHA is passed correctly and validate inputs by @jamesarich in #4411
- fix(l10n): update translation paths in Crowdin config to use locale by @jamesarich in #4420
- fix(l10n): update translation paths in Crowdin config to use locale by @jamesarich in #4422
📝 Other Changes
- chore(build): Enable and configure Compose Compiler reports by @jamesarich in #4289
- chore(deps): Update Gradle and library versions by @jamesarich in #4309
- Update VERSION_NAME_BASE to 2.7.12 by @jamesarich in #4312
- feat(build): Add support for remote Gradle build cache by @jamesarich in #4357
- chore: Apply maven-publish plugin consistently by @jamesarich in #4364
- feat: Add JitPack configuration for publishing by @jamesarich in #4365
- build: Configure JitPack publishing for core modules by @jamesarich in #4366
- chore(ci): Remove GitHub Packages publishing workflow by @jamesarich in #4368
- build: Lower JDK to 17 and minSdk to 21 by @jamesarich in #4369
- Update full_description.txt by @Korb in #4388
- docs: fix typo and url by @bobidle in #4396
- fix(ci): use PAT for release workflow to bypass branch protection by @jamesarich in #4408
- fix(ci): robust SHA passing via artifact to bypass secret masking by @jamesarich in #4412
- fix(ci): switch to pre-emptive tagging workflow by @jamesarich in #4414
- fix(ci): pre-emptive tagging by @jamesarich in #4415
New Contributors
Full Changelog: v2.7.11...v2.7.12-internal.9
v2.7.11 (29319823)
What's Changed
🏗️ Features
- feat(logging): Replace Timber with Kermit for multiplatform logging by @jamesarich in #4083
- Consider hopStart=0 when calculating hops for packets by @esev in #4101
- Convert Room DAO methods to suspend functions by @romansl in #4102
- feat: add retention period to meshLog. Defaults to 7 days, with a settings dropdown to change by @mdecourcy in #4078
- Fix: Use dynamic year for copyright headers by @jamesarich in #4116
- feat: auto retry text message send on max retransmit by @mdecourcy in #4124
- feat: Add separate notifications for waypoints by @jamesarich in #4131
- feat: Enhance message notifications with history and actions by @jamesarich in #4133
- feat: Add initial handling for Store and Forward PlusPlus packets by @jamesarich in #4136
- feat: Add acknowledgement status and retry for emoji reactions by @jamesarich in #4142
- feat: Mute broadcast Reaction notifications by default by @jamesarich in #4159
- feat: Add SFPP confirmed status to Messages and Reactions by @jamesarich in #4139
- feat(i18n): Add string for PKI public key send failure by @jamesarich in #4165
- feat: Handle Store and Forward heartbeat packets by @jamesarich in #4168
- refactor(build): centralize Dokka documentation generation by @jamesarich in #4171
- Dedup repeat messages/reactions due to sfpp by @mdecourcy in #4174
- feat: Add mute node functionality by @jamesarich in #4181
- feat: Add
forceEnableAlltoCapabilitiesby @jamesarich in #4184 - feat(messaging): Overhaul message bubbles and add actions by @jamesarich in #4206
- Refactor: Improve MessageItem layout and styling by @jamesarich in #4208
- refactor(messaging): Redesign message bubbles and reaction UI by @jamesarich in #4217
- feat: Add ESP32 Unified OTA update support by @jamesarich in #4095
- feat: Add Client Base role strings by @jamesarich in #4227
- feat: Localize traceroute strings by @jamesarich in #4228
- feat: retry message/reaction dialog by @mdecourcy in #4195
- refactor: Enable test coverage and update CI by @jamesarich in #4233
- feat(service): Overhaul MeshServiceExample by @jamesarich in #4263
- feat(test): Add comprehensive unit and instrumentation tests by @jamesarich in #4260
- fix(ui): Hide battery icon when no power data is available by @jamesarich in #4274
🛠️Fixes
- refactor: Migrate to Android Gradle Plugin 9.0 by @jamesarich in #4072
- feat: Refactor back navigation in adaptive screens by @jamesarich in #4085
- fix: update schema 27 with packet index by @mdecourcy in #4086
- feat: Improve POSIX time zone string generation by @jamesarich in #4087
- feat(build): Set JVM toolchain to 21 by @jamesarich in #4090
- feat: Refactor MeshService into smaller, single-responsibility components by @jamesarich in #4108
- Refactor: Improve analytics plugin application and task configuration by @jamesarich in #4120
- fix: Update copyright year to 2026 by @jamesarich in #4121
- feat: Send emoji codepoint in reaction packets by @jamesarich in #4123
- feat: Improve node handling and add client notifications by @jamesarich in #4130
- fix: reaction display regression by @jamesarich in #4141
- refactor: use location compat by @jamesarich in #4143
- fix: fix strings.xml by @jamesarich in #4147
- fix: Make node details selectable by @jamesarich in #4151
- refactor(datetime): Standardize date/time formatting with
DateUtilsby @jamesarich in #4164 - refactor(deps): inject CoroutineDispatchers by @jamesarich in #4170
- refactor(build): Centralize Dokka configuration into convention plugin by @jamesarich in #4173
- fix(meshlog): Change default retention to 30 days by @jamesarich in #4177
- feat: Add "now" string and update formatAgo function by @jamesarich in #4183
- fix #4150: display
0°Cinstead of-0°Cfor near-zero negative temperatures by @lohwasser in #4186 - fix(deps): resolve faraday-multipart ruby 4 incompatibility by @jamesarich in #4199
- Revert "fix(deps): resolve faraday-multipart ruby 4 incompatibility" by @jamesarich in #4200
- Revert "chore(deps): update ruby to v4" by @jamesarich in #4201
- feat(connections): Improve connection screen UI and logic by @jamesarich in #4224
- ci(actions): Set up JDK 21 in scheduled-updates workflow by @jamesarich in #4236
- ci: Run tests and generate coverage for all modules by @jamesarich in #4238
- Revert "ci: Run tests and generate coverage for all modules" by @jamesarich in #4240
- fix(ci): Run tests for both F-Droid and Google flavors by @jamesarich in #4239
- feat(firmware): Use pio_env to select correct firmware variant by @jamesarich in #4244
- ci: fix coverage report paths and improve test result inclusivity by @jamesarich in #4245
- refactor(ui): Improve EmojiPicker layout constraints by @jamesarich in #4250
- refactor: Use device address to manage service lifecycle by @jamesarich in #4251
- fix(node): Correct owner ID and local user detection by @jamesarich in #4256
- Display traceroutes with 0 hops by @esev in #4261
- refactor(firmware): Simplify ESP32 firmware check by @jamesarich in #4272
- fix(4269): Add LongTurbo preset name and tests by @jamesarich in #4273
- fix(configs): Improve loading state feedback and dialog behavior by @jamesarich in #4271
- refactor(service): Add destination node number to remote admin commands by @jamesarich in #4276
- fix: crashes by @jamesarich in #4281
- chore: Add gradle-daemon-jvm.properties to specify toolchain by @jamesarich in #4282
- Fix(firmware): Disable serial/USB updates for ESP32 devices by @jamesarich in #4283
- feat: Configure Pre-Commit run for debugging by @jamesarich in #4284
New Contributors
- @esev made their first contribution in #4101
- @romansl made their first contribution in #4102
- @lohwasser made their first contribution in #4186
Full Changelog: v2.7.10...v2.7.11
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