Meshtastic-Android/core
GitHub Copilot CLI c1c01d7765 chore(r8): remove redundant keep rules covered by consumer rules
Removes explicit -keep/-dontwarn wildcards whose behavior is already
provided by the library's own bundled consumer-rules.pro, by Room's
generated static references, or by narrower annotation-targeted keeps.
The merged R8 configuration shrinks by 34 lines (1981→1947 googleRelease,
1653→1619 fdroidRelease), giving R8 more tree-shaking freedom.

Removed (covered by library-bundled consumer rules):
- kotlin.Metadata, kotlin.reflect.**, kotlin.coroutines.Continuation,
  kotlinx.coroutines.** (kotlin-stdlib + kotlinx-coroutines-core)
- androidx.datastore.**, androidx.paging.**, androidx.lifecycle.**,
  androidx.navigation3.**, androidx.sqlite.**
- coil3.**, okio.**, co.touchlab.kermit.**,
  com.mikepenz.aboutlibraries.**, com.mikepenz.markdown.**,
  com.juul.kable.**, io.ktor.**, io.ktor.client.engine.java.**
  (HttpClientEngineFactory ServiceLoader keep retained)

Room (room3) narrowed:
- Dropped org.meshtastic.core.database.{dao,entity,Converters}.** and
  **_Impl wildcards. RoomDatabaseConstructor +
  MeshtasticDatabaseConstructor/MeshtasticDatabase keeps retained.
  Room 3.0 KMP generates static references rather than reflective
  lookups, so reachable DAO/entity/_Impl code survives tree-shaking.

Wire protobuf narrowed:
- Dropped com.squareup.wire.**, org.meshtastic.proto.**, meshtastic.**
  wildcards and deleted core/proto/consumer-rules.pro (20 per-class keeps).
- Replaced with targeted -keepclassmembers for ADAPTER fields on
  Message subclasses and ProtoAdapter member preservation. Verified
  no Class.forName lookups into org.meshtastic.proto namespace.

Meshtastic model + DI:
- Dropped org.meshtastic.core.model.** wildcard and deleted
  core/model/consumer-rules.pro (DataPacket is @CommonParcelize'd;
  no reflective access to core.model).
- Replaced org.meshtastic.**.di.** wildcard with a narrow
  @KoinViewModel class annotation keep (the @Module, @ComponentScan,
  @Single, @Factory keeps above already cover the rest of Koin).

Compose resources refinement:
- Narrowed org.meshtastic.core.resources.** to Res + Res$* members
  only (sufficient for the fdroid startup-crash workaround in #5146).

Intentionally retained (documented workarounds / policy):
- -dontoptimize, -dontobfuscate, -printconfiguration
- All Koin annotation keeps + org.koin.**
- kotlinx-serialization @Serializable keeps
- Room RoomDatabaseConstructor + MeshtasticDatabase(-Constructor)
- Ktor HttpClientEngineFactory ServiceLoader keep
- Desktop MainKt + org.meshtastic.desktop.** entry points
- All -dontwarn rules for JVM/Android platform gaps
- app/proguard-rules.pro Compose runtime/ui/animation/foundation/
  material3 keeps (defence-in-depth with -dontoptimize; may interact
  with the parallel CMP freeze RCA investigation).

Verified:
- ./gradlew :app:assembleFdroidRelease — SUCCESS (after each batch)
- ./gradlew :app:assembleGoogleRelease — SUCCESS
- ./gradlew spotlessApply detekt — SUCCESS
- :desktop:createReleaseDistributable — pre-existing failure on
  origin/main (Vico/Skia warnings), unrelated to these changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 11:59:39 -05:00
..
api fix(build): resolve all actionable compile-time warnings (#5058) 2026-04-10 22:42:30 +00:00
barcode fix(build): align AndroidX Compose versions with CMP and migrate to runComposeUiTest (#5096) 2026-04-13 02:49:11 +00:00
ble chore: KMP audit — commonize code, centralize utilities, eliminate dead abstractions (#5133) 2026-04-15 02:17:50 +00:00
common refactor: use injected ioDispatcher and ApplicationCoroutineScope (#5167) 2026-04-17 16:18:45 +00:00
data fix: redact MeshLog proto secrets and centralize Compose keep-rules (#5166) 2026-04-17 16:20:50 +00:00
database chore: review-cleanup fleet (audit + fix + hardening) (#5158) 2026-04-17 00:02:59 +00:00
datastore refactor: modern APIs — Koin 4.2, CMP 1.11, Ktor resilience, Room @Upsert, injected dispatchers (#5119) 2026-04-14 11:41:01 +00:00
di refactor: BLE transport and UI for Kotlin Multiplatform unification (#4911) 2026-03-25 02:15:51 +00:00
domain feat: add high-contrast theme with accessible message bubbles (#5135) 2026-04-15 01:14:20 +00:00
model chore(r8): remove redundant keep rules covered by consumer rules 2026-04-17 11:59:39 -05:00
navigation chore: review-cleanup fleet (audit + fix + hardening) (#5158) 2026-04-17 00:02:59 +00:00
network feat(mqtt): migrate to MQTTastic-Client-KMP (#5165) 2026-04-17 15:19:08 +00:00
nfc fix: harden reliability, clean up KMP compliance, and improve code quality (#5023) 2026-04-09 18:21:46 +00:00
prefs chore: review-cleanup fleet (audit + fix + hardening) (#5158) 2026-04-17 00:02:59 +00:00
proto chore(r8): remove redundant keep rules covered by consumer rules 2026-04-17 11:59:39 -05:00
repository feat(mqtt): migrate to MQTTastic-Client-KMP (#5165) 2026-04-17 15:19:08 +00:00
resources fix(ui): stable LazyColumn keys, semantic roles, and content descriptions (#5168) 2026-04-17 16:24:18 +00:00
service chore: review-cleanup fleet (audit + fix + hardening) (#5158) 2026-04-17 00:02:59 +00:00
takserver chore: review-cleanup fleet (audit + fix + hardening) (#5158) 2026-04-17 00:02:59 +00:00
testing chore: review-cleanup fleet (audit + fix + hardening) (#5158) 2026-04-17 00:02:59 +00:00
ui fix(ui): stable LazyColumn keys, semantic roles, and content descriptions (#5168) 2026-04-17 16:24:18 +00:00