Skip to content

Latest commit

 

History

History
307 lines (297 loc) · 41.6 KB

File metadata and controls

307 lines (297 loc) · 41.6 KB

Changelog

All notable changes to this project will be documented in this file. The [Unreleased] section is automatically updated on every push to main. See GitHub Releases for the full history.

[Unreleased]

Unreleased (not yet in any build)

  • chore(deps): update actions/cache action to v5 (#5652) by renovate[bot] (@renovate[bot]) in 0dad4273d
  • chore(deps): update core/proto/src/main/proto digest to dd6c3f8 (#5654) by renovate[bot] (@renovate[bot]) in 0cc18cd7d
  • chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5657) by James Rich (@jamesarich) in 6646f31f4
  • feat(takserver): Upgrade TAKPacket-SDK to v0.5.0 and delegate sanitization to SDK (#5658) by Ben Meadors (@thebentern) in 8bdb0916b
  • fix(takserver): emit *:-1:stcp contact endpoint so directed TAK-Talk/GeoChat routes over the mesh; SDK v0.5.1 by Ben Meadors (@thebentern) in 0047e4d15
  • Revert "fix(takserver): emit *:-1:stcp contact endpoint so directed TAK-Talk/GeoChat routes over the mesh; SDK v0.5.1" by Ben Meadors (@thebentern) in f92f5d576
  • fix: remove Android Auto manifest entry causing Play Store rejection (#5662) by James Rich (@jamesarich) in 2aa49b08d
  • chore(deps): update org.jetbrains.kotlinx:atomicfu to v0.33.0 (#5663) by renovate[bot] (@renovate[bot]) in da2938f2e
  • fix(takserver): emit *:-1:stcp contact endpoint so directed TAK-Talk/GeoChat routes over the mesh (#5661) by Ben Meadors (@thebentern) in 4888592e0
  • chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5660) by James Rich (@jamesarich) in 8ec0f65b6

Internal (v2.7.14-internal.109)

Changes since v2.7.14-open.13:

  • chore(deps): update spotless to v8.6.0 (#5618) by renovate[bot] (@renovate[bot]) in c29f7ce29
  • chore(deps): update core/proto/src/main/proto digest to 9ab4a1d (#5617) by renovate[bot] (@renovate[bot]) in 7df0ee08e
  • chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5616) by James Rich (@jamesarich) in 562ac7390
  • Upgrade takpacket-sdk to version 0.3.0 (#5621) by James Rich (@jamesarich) in 29345709e
  • fix(proto): prune TakTalkMessage and TakTalkRoomData from Wire codegen (#5624) by James Rich (@jamesarich) in fda8f97f3
  • feat: adopt gradle-flatpak-sources plugin for offline Flatpak builds (#5619) by James Rich (@jamesarich) in b9315d4b3
  • chore(deps): update takpacket.sdk to v0.3.1 (#5626) by renovate[bot] (@renovate[bot]) in 8c9c94294
  • chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5625) by James Rich (@jamesarich) in 2277aae6e
  • chore(deps): update actions/setup-java action to v5 (#5627) by renovate[bot] (@renovate[bot]) in 837f5596f
  • chore(deps): update github artifact actions (major) (#5628) by renovate[bot] (@renovate[bot]) in 10569eb9d
  • chore(deps): update gradle/actions action to v6 (#5630) by renovate[bot] (@renovate[bot]) in 1a7b34392
  • chore(deps): update core/proto/src/main/proto digest to e3c8af5 (#5629) by renovate[bot] (@renovate[bot]) in 19ea164f9
  • chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#5631) by James Rich (@jamesarich) in a79e30e69
  • chore(deps): update takpacket.sdk to v0.3.2 (#5632) by renovate[bot] (@renovate[bot]) in de3d65a10
  • docs(governance): add agent behavior and cost efficiency rules (#5636) by James Rich (@jamesarich) in 3fe21e173
  • fix(database): stabilize flaky DatabaseManagerWithDbRetryTest (#5635) by James Rich (@jamesarich) in d892f43e0
  • ci(changelog): exclude changelog commits and fix contributor duplication (#5638) by James Rich (@jamesarich) in d125d955f
  • chore(deps): update plugin org.meshtastic.flatpak.sources.settings to v0.1.2 (#5637) by renovate[bot] (@renovate[bot]) in 73a2d9f62
  • docs: add settings validation reference (#5218) by Copilot (@Copilot) in a5d176d4d
  • repo: Add Meshtastic Desktop icon SVGs (#5623) by Austin (@vidplace7) in 321b73e72
  • Enhance TAKTALK support with message and room handling, update SDK to v0.3.2 (#5634) by Ben Meadors (@thebentern) in a5e6894fe
  • chore(deps): update takpacket.sdk to v0.3.3 (#5642) by renovate[bot] (@renovate[bot]) in bfece155f
  • fix(ble): stop BLE scan on background and downgrade connection priority (#5644) by James Rich (@jamesarich) in 1d221e2dd
  • fix(ci): pre-install JetBrains JDK 21 for Compose Desktop builds (#5646) by James Rich (@jamesarich) in f10f36580
  • chore(deps): update com.google.firebase:firebase-bom to v34.14.0 (#5647) by renovate[bot] (@renovate[bot]) in 2e7100ca8
  • fix(ci): install JetBrains JDK 21 for lint-check job (#5649) by James Rich (@jamesarich) in ccd7fcd45
  • fix(ci): cache JetBrains JDK and simplify daemon JVM config (#5650) by James Rich (@jamesarich) in 00f3b38f8

Open Beta (v2.7.14-open.13)

Changes since v2.7.13:

🏗️ Features

  • refactor(ble): Centralize BLE logic into a core module by @jamesarich in #4550
  • feat(ble): Add support for FromRadioSync characteristic by @jamesarich in #4609
  • feat(widget): Add Local Stats glance widget by @jamesarich in #4642
  • chore(deps): bump deps to take advantage of new functionality by @jamesarich in #4658
  • feat(maps): Google maps improvements for network and offline tilesources by @jamesarich in #4664
  • feat: Improve edge-to-edge and display cutout handling by @jamesarich in #4669
  • feat: upcoming support for tak and trafficmanagement configs, device hw by @jamesarich in #4671
  • feat: settings rework by @jamesarich in #4678
  • feat: settings rework part 2, domain and usecase abstraction, tests by @jamesarich in #4680
  • feat: service decoupling by @jamesarich in #4685
  • refactor: migrate :core:database to Room Kotlin Multiplatform by @jamesarich in #4702
  • refactor(ble): improve connection lifecycle and enhance OTA reliability by @jamesarich in #4721
  • refactor: migrate preferences to DataStore and decouple core:domain for KMP by @jamesarich in #4731
  • refactor: migrate core modules to Kotlin Multiplatform and consolidat… by @jamesarich in #4735
  • feat: Migrate project to Kotlin Multiplatform (KMP) architecture by @jamesarich in #4738
  • refactor: migrate from Hilt to Koin and expand KMP common modules by @jamesarich in #4746
  • refactor: migrate core UI and features to KMP, adopt Navigation 3 by @jamesarich in #4750
  • feat: introduce Desktop target and expand Kotlin Multiplatform (KMP) architecture by @jamesarich in #4761
  • build(desktop): enable ProGuard for release builds by @jamesarich in #4772
  • feat(desktop): implement DI auto-wiring and validation by @jamesarich in #4782
  • feat(desktop): expand supported native distribution formats by @jamesarich in #4783
  • feat: Complete ViewModel extraction and update documentation by @jamesarich in #4817
  • refactor: Replace Nordic, use Kable backend for Desktop and Android with BLE support by @jamesarich in #4818
  • feat: Integrate notification management and preferences across platforms by @jamesarich in #4819
  • feat: service extraction by @jamesarich in #4828
  • feat: build logic by @jamesarich in #4829
  • feat: Desktop USB serial transport by @jamesarich in #4836
  • Add "Exclude MQTT" filter to Nodes view. by @VictorioBerra in #4825
  • feat: mqtt by @jamesarich in #4841
  • feat: Integrate Mokkery and Turbine into KMP testing framework by @jamesarich in #4845
  • feat: Complete app module thinning and feature module extraction by @jamesarich in #4844
  • feat: Enhance test coverage by @jamesarich in #4847
  • feat: Implement KMP ServiceDiscovery for TCP devices by @jamesarich in #4854
  • feat: Add KMP URI handling, import, and QR code generation support by @jamesarich in #4856
  • feat: KMP Debug Panel Migration and Update Documentation by @jamesarich in #4859
  • feat: Migrate to Room 3.0 and update related documentation and tracks by @jamesarich in #4865
  • feat: Implement iOS support and unify Compose Multiplatform infrastructure by @jamesarich in #4876
  • Add InlineMap implementation for F-Droid build by @theKorzh in #4877
  • refactor(desktop): remove native MenuBar from main window by @jamesarich in #4888
  • feat: Migrate networking to Ktor and enhance multiplatform support by @jamesarich in #4890
  • refactor: adaptive UI components for Navigation 3 by @jamesarich in #4891
  • feat: Integrate AlertHost into desktop application and add UI tests by @jamesarich in #4893
  • feat: implement global SnackbarManager and consolidate common UI setup by @jamesarich in #4909
  • feat: implement unified deep link routing for Kotlin Multiplatform by @jamesarich in #4910
  • refactor: BLE transport and UI for Kotlin Multiplatform unification by @jamesarich in #4911
  • Refactor map layer management and navigation infrastructure by @jamesarich in #4921
  • feat: migrate to Material 3 Expressive APIs by @jamesarich in #4934
  • Refactor nav3 architecture and enhance adaptive layouts by @jamesarich in #4944
  • feat(tak): introduce built-in Local TAK Server and mesh integration by @jamesarich in #4951
  • feat(analytics): expand DataDog RUM integration and align with iOS parity by @jamesarich in #4970
  • feat(wifi): introduce BLE-based WiFi provisioning for nymea-compatible devices by @jamesarich in #4968
  • feat(wifi-provision): add mPWRD-OS branding and disclaimer banner by @jamesarich in #4978
  • feat(charts): adopt Vico best practices, add sensor data, and migrate TracerouteLog by @jamesarich in #5026
  • refactor(icons): migrate to self-hosted VectorDrawable XMLs via MeshtasticIcons by @jamesarich in #5030
  • feat(messaging): add IME Send action to message input by @jamesarich in #5047
  • feat(metrics): redesign position log with SelectableMetricCard and add CSV export to all metrics screens by @jamesarich in #5062
  • feat(core/ui): add safeLaunch, UiState, KMP permissions, and CMP lifecycle modernization by @jamesarich in #5118
  • feat(desktop): add entitlements and wire MeshConnectionManager into orchestrator by @jamesarich in #5127
  • feat(environment): add 1-Wire multi-thermometer (DS18B20) display support by @jamesarich in #5130
  • feat: add high-contrast theme with accessible message bubbles by @jamesarich in #5135
  • feat(mqtt): migrate to MQTTastic-Client-KMP by @jamesarich in #5165
  • feat(mqtt): adopt mqttastic-client-kmp 0.2.0 — disconnect reasons + Test Connection by @jamesarich in #5181
  • feat(firmware): nRF52 BLE Legacy DFU support by @jamesarich in #5209
  • feat(service): send polite ToRadio(disconnect=true) before transport close by @jamesarich in #5210
  • feat(node): smoother remote-admin UX with per-node session tracking by @jamesarich in #5217
  • fix(ble): unblock reconnect + kable audit (logging, priority, backoff, StateFlow) by @jamesarich in #5222
  • feat: Enhance mPWRD-os WiFi provisioning success state and UI components by @jamesarich in #5225
  • feat(messaging): add entry points for filter settings by @jamesarich in #5229
  • feat(messaging): send message on Enter keypress by @jamesarich in #5246
  • feat(desktop): native OS notifications via libnotify/osascript/PowerShell by @jamesarich in #5253
  • feat(auto): enable Android Auto messaging notifications by @riddlemd in #5265
  • fix: update emoji catalog metadata and improve picker synchronization by @jamesarich in #5292
  • fix: update notification icon by @jamesarich in #5293
  • feat(connections): connection sorting & conversation empty channel ranking by @jamesarich in #5295
  • fix(connections): improve BLE scan reliability and UI lifecycle by @jamesarich in #5329
  • feat: event firmware easter egg with ambient branding by @jamesarich in #5354
  • feat: align theme with Design Standards v1.3, remove contrast setting by @jamesarich in #5355
  • feat(desktop): fix mac notifications, new desktop icons by @jamesarich in #5403
  • Update notification intents and deep link URI format by @jamesarich in #5408
  • fix: clarify position precision as ± radius by @jamesarich in #5428
  • feat: TAK v2 protocol integration with zstd compression and full CoT type support by @thebentern in #5434
  • feat(flatpak): reconstruct standard maven filenames from local Gradle cache by @jamesarich in #5538
  • fix: use single-shot low battery notifications by @jamesarich in #5550
  • feat: align node list context menu to canonical 6-item order by @jamesarich in #5548
  • feat: enable WAL connection pool for parallel reads by @jamesarich in #5372
  • feat: node list density switching with compact layout and field toggles by @jamesarich in #5444
  • feat(ai): upgrade Chirpy on-device AI with proper APIs, download UX, and streaming by @jamesarich in #5579

🖥️ Desktop

  • fix(desktop): keep Vico package to prevent bytecode verification errors by @jamesarich in #5424

🛠️ Fixes

  • fix(strings): replace plurals by @jamesarich in #4596
  • fix: replace fdroid map_style_selection string by @jamesarich in #4598
  • refactor(test): Introduce MeshTestApplication for robust testing by @jamesarich in #4602
  • fix: spotless by @jamesarich in #4604
  • feat(build): Implement flavor-specific barcode scanning and build improvements by @jamesarich in #4611
  • fix(qr): add channels as key to remember block to fix add-channel rac… by @nreisbeck in #4607
  • chore(ble): Add Proguard rules for Nordic BLE library by @jamesarich in #4618
  • ci(release): Use wildcards for APK paths in release workflow by @jamesarich in #4619
  • chore(ci): Use wildcard for APK paths in release workflow by @jamesarich in #4622
  • chore(ci): Refine analytics task filtering and improve release debugging by @jamesarich in #4624
  • Fix/splits by @jamesarich in #4626
  • Align FDroid MapView constructor with Google version (Issue #4576) by @ujade in #4630
  • refactor(analytics): reduce tracking footprint by @jamesarich in #4649
  • fix(map): location perms and button visibility, breadcrumb taps by @jamesarich in #4651
  • fix(strings): Correct capitalization of Ham by @alecperkins in #4620
  • ci: Split Google artifact attestations and ensure F-Droid uploads by @jamesarich in #4665
  • fix: Replace strings.xml with app_name resource by @jamesarich in #4666
  • Disable generate_release_notes in release workflow by @jamesarich in #4668
  • fix: ui tweaks by @jamesarich in #4696
  • refactor: simplify traceroute tracking and unify cooldown button logic by @jamesarich in #4699
  • feat: Add "Mark all as read" and unread message count indicators by @jamesarich in #4720
  • fix(widget): ensure local stats widget gets updates by @jamesarich in #4722
  • refactor(ble): increase default timeout for BLE profiling by @jamesarich in #4728
  • refactor: enhance handshake stall guard and extend coverage to Stage 2 by @jamesarich in #4730
  • build(ci): optimize release workflow and update Room configuration by @jamesarich in #4775
  • Disable ProGuard for desktop release and add application icon by @jamesarich in #4776
  • fix(ble): implement scanning for unbonded devices in common connections ui by @jamesarich in #4779
  • fix: fix animation stalls and update dependencies for stability by @jamesarich in #4784
  • build(desktop): include java.net.http module in native distribution by @jamesarich in #4787
  • build: remove PKG from desktop distribution targets by @jamesarich in #4788
  • build: Update desktop app icons, versioning, and packaging configuration by @jamesarich in #4789
  • refactor(settings): improve destination node handling in RadioConfigViewModel by @jamesarich in #4790
  • feat(desktop): add enter-to-send functionality in messaging by @jamesarich in #4793
  • feat: enhance map navigation and waypoint handling by @jamesarich in #4814
  • build: fix license generation and analytics build tasks by @jamesarich in #4820
  • fix: resolve crashes and debug filter issues in Metrics and MapView by @jamesarich in #4824
  • fix(map, settings): allow null IDs and implement request timeout by @jamesarich in #4851
  • docs: Unify notification channel management and migrate unit tests by @jamesarich in #4867
  • fix: Implement reconnection logic and stabilize BLE connection flow by @jamesarich in #4870
  • fix: Update messaging feature with contact item keys and MQTT limits by @jamesarich in #4871
  • fix: specify jetbrains in gradle-daemon-jvm.properties by @jamesarich in #4872
  • fix(settings): remove redundant regex option in DebugViewModel by @jamesarich in #4881
  • refactor(service): update string formatting for local stats notif by @jamesarich in #4885
  • refactor(messaging): fix contact key derivation in ContactsViewModel by @jamesarich in #4887
  • feat: optimistically persist local configs and channels by @jamesarich in #4898
  • refactor(di): specify disk cache directory for ImageLoader by @jamesarich in #4899
  • refactor: null safety, update date/time libraries, and migrate tests by @jamesarich in #4900
  • refactor: remove demoscenario and enhance BLE connection stability by @jamesarich in #4914
  • refactor(ui): remove labels from navigation suite items by @jamesarich in #4924
  • build: enable -Xjvm-default=all compiler flag by @jamesarich in #4929
  • fix(ci): update APP_VERSION_NAME output reference in workflows by @jamesarich in #4935
  • fix(strings): Fix public key description by @Klavionik in #4957
  • feat: implement XModem file transfers and enhance BLE connection robustness by @jamesarich in #4959
  • Refactor navigation to use NodeDetail route and fix radio settings by @jamesarich in #4960
  • Refactor and unify firmware update logic across platforms by @jamesarich in #4966
  • fix: improve PKI message routing and resolve database migration racecondition by @jamesarich in #4996
  • fix: resolve correct node public key in sendSharedContact and favoriteNode by @Copilot in #5005
  • fix: resolve bugs across connection, PKI, admin, packet flow, and stability subsystems by @jamesarich in #5011
  • fix(tak): resolve frequent TAK client disconnections by @jamesarich in #5015
  • fix(service): resolve MeshService crash from eager notification channel init by @jamesarich in #5034
  • style: update ic_no_cell and ic_place vector drawables by @jamesarich in #5040
  • fix(build): prevent DataDog asset transform from stripping fdroid release assets by @jamesarich in #5044
  • fix(icons): replace outline (FILL=0) pathData with filled (FILL=1) from upstream Material Symbols by @jamesarich in #5056
  • fix(charts): hoist rememberVicoZoomState above vararg layers to prevent ClassCastException by @jamesarich in #5060
  • fix(ui): add missing @ParameterName annotations on actual rememberReadTextFromUri declarations by @jamesarich in #5072
  • fix(settings): hide Status Message config until firmware v2.8.0 by @jamesarich in #5070
  • fix(transport): Kable BLE audit + thread-safety, MQTT, and logging fixes across transport layers by @jamesarich in #5071
  • fix(build): remove Compose BOM to resolve compileSdk 37 conflict by @jamesarich in #5088
  • fix(connections): show device name during connecting state by @jamesarich in #5085
  • fix(build): add explicit compose-multiplatform-animation dependency by @jamesarich in #5095
  • fix(nav): restore broken traceroute map navigation by @jamesarich in #5104
  • fix(build): overhaul R8 rules and DRY up build-logic conventions by @jamesarich in #5109
  • fix(proguard): disable shrinking for Compose animation classes by @jamesarich in #5116
  • fix(icons): audit and correct icon migration regressions from #5030 #5040 #5056 by @jamesarich in #5136
  • fix: align BLE connection handshake with firmware protocol expectations by @jamesarich in #5141
  • fix(app): add R8 keep rules for Compose animation/runtime/ui by @jamesarich in #5146
  • perf(messaging): batch node + reply lookups in message loading by @jamesarich in #5149
  • fix(app): disable R8 optimization to fix Compose animation freeze by @jamesarich in #5150
  • fix(node): don't recreate Vico CartesianChartModelProducer on channel switch by @jamesarich in #5160
  • refactor: use injected ioDispatcher and ApplicationCoroutineScope by @jamesarich in #5167
  • fix: redact MeshLog proto secrets and centralize Compose keep-rules by @jamesarich in #5166
  • fix(ui): stable LazyColumn keys, semantic roles, and content descriptions by @jamesarich in #5168
  • fix(ui): finish accessibility roles and action labels for clickable surfaces by @jamesarich in #5170
  • fix(widget): drive updates via debounced state observer by @jamesarich in #5185
  • fix(transport): improve BLE / TCP / USB reconnect and handshake resilience by @jamesarich in #5196
  • fix(fdroid): prevent NotImplementedError crash on firmware release fetch by @jamesarich in #5197
  • fix(compass): stop coarse network fixes from clobbering GPS fixes by @jamesarich in #5200
  • fix(canned-messages): enable multiline text editing for long message lists by @jamesarich in #5203
  • fix(settings): restore Import/Export button functionality in #4913 by @jamesarich in #5204
  • refactor: eliminate Accompanist permissions library by @jamesarich in #5211
  • fix: MQTT proxy connection and probe test failures by @jamesarich in #5215
  • fix(ble): ensure GATT cleanup runs under NonCancellable on cancellation by @jdogg172 in #5207
  • fix(ble): cleanup races discovered while reviewing #5207 by @jamesarich in #5221
  • fix(ui): make footer buttons expand downwards by @zt64 in #5226
  • fix(desktop): suppress Vico ColorScale ProGuard warnings by @jamesarich in #5232
  • fix(desktop): unbreak release crash via correct ProGuard rules by @jamesarich in #5236
  • fix(crashlytics): resolve beta 2.7.14 crash issues by @jamesarich in #5245
  • fix: Resolve top Crashlytics issues for 29320633 beta release by @jamesarich in #5278
  • fix: persist language switching and correctly map locales by @jamesarich in #5287
  • fix: ensure snackbar respects safe drawing padding over host modifiers by @jamesarich in #5290
  • fix(ui): align Cancel and Send enabled state by @elagin in #5284
  • fix(data): default new-node notifications off for event firmware by @jamesarich in #5323
  • fix(network): resolve empty MQTT address and enforce TLS on default server by @jamesarich in #5333
  • fix(mqtt): harden TLS enforcement, add user CA trust, and improve error diagnostics by @jamesarich in #5365
  • fix: clamp future lastHeard timestamps to current time on ingestion by @jamesarich in #5418
  • revert: Update retry settings in gradle-wrapper.properties by @jamesarich in #5430
  • fix: update screenshots by @jamesarich in #5435
  • fix(database): make withDb retry logic resilient to varying close messages by @jamesarich in #5474
  • fix(settings): add input validation for BLE PIN, LoRa modem, and ambient lighting by @jamesarich in #5477
  • fix(nav): remote admin nodenum + Nav3 consolidation and improvements by @jamesarich in #5478
  • fix(database): update @Relation annotations for Room 3.0.0-alpha05 by @jamesarich in #5507
  • fix: prevent node details hang when device hardware API is unreachable by @jamesarich in #5514
  • fix(settings): remote admin always showed local node config by @jamesarich in #5560
  • fix: hide battery indicator when level is 0 (never reported) by @jamesarich in #5595
  • fix: consistent column width for compact node list items by @jamesarich in #5596
  • fix(emoji): enable androidResources for core:ui to package emoji-data.json by @jamesarich in #5597

📝 Other Changes

  • refactor(ui): compose resources, domain layer by @jamesarich in #4628
  • Add per-message transport method icons for new message format by @Kealper in #4643
  • build: apply instrumented test dependencies conditionally by @jamesarich in #4698
  • docs: summarize KMP migration progress and architectural decisions by @jamesarich in #4770
  • ci(release): pass app version to desktop build via environment variable by @jamesarich in #4774
  • ai: Establish conductor documentation and governance framework by @jamesarich in #4780
  • fix: fix wrong getChannelUrl() call causing loss of "add" flag and un… by @skobkin in #4809
  • chore: Enhance CI coverage reporting and add main branch workflow by @jamesarich in #4873
  • build(desktop): enable ProGuard minification and tree-shaking by @jamesarich in #4904
  • build: update Compose Multiplatform and migrate lifecycle dependencies by @jamesarich in #4932
  • chore: standardize resources and update documentation for Navigation 3 by @jamesarich in #4961
  • feat(settings): add DNS support and fix UDP protocol toggle by @jamesarich in #5013
  • fix: use payload labels in pr_enforce_labels.yml to avoid rate limiting by @jamesarich in #5018
  • fix: scope labeler trigger to reduce rate limiting and fix bugfix typo by @jamesarich in #5020
  • test(prefs): migrate DataStore tests from androidHostTest to commonTest by @jamesarich in #5092
  • fix(resources): add resourcePrefix to KMP + widget modules, rename prefixed resources by @jamesarich in #5111
  • fix(charts): apply Vico 3.1.0 best-practice audit fixes by @jamesarich in #5138
  • refactor(di): adopt @KoinApplication with startKoin() compiler plugin API by @jamesarich in #5152
  • test: migrate MigrationTest to runTest and add missing repository fakes by @jamesarich in #5171
  • refactor: consolidate metric formatting through MetricFormatter by @jamesarich in #5169
  • chore(r8): remove redundant keep rules covered by consumer rules by @jamesarich in #5172
  • Revert "diag(r8): disable minify for release builds (animation-freeze diagnostic)" by @jamesarich in #5176
  • Fix node-details remove action to preserve confirmation flow by @Copilot in #5192
  • Change default ContrastLevel from STANDARD to MEDIUM by @somenice in #5325
  • Extract node list display settings to dedicated screen by @jamesarich in #5580

New Contributors

  • @nreisbeck made their first contribution in #4607
  • @ujade made their first contribution in #4630
  • @alecperkins made their first contribution in #4620
  • @skobkin made their first contribution in #4809
  • @VictorioBerra made their first contribution in #4825
  • @theKorzh made their first contribution in #4877
  • @Klavionik made their first contribution in #4957
  • @jdogg172 made their first contribution in #5207
  • @zt64 made their first contribution in #5226
  • @riddlemd made their first contribution in #5265
  • @elagin made their first contribution in #5284
  • @somenice made their first contribution in #5325