# Judging the impact of newer library versions on the app requires being intimately familiar with the code base. # Please don't open pull requests upgrading dependencies if you're a new contributor. # Instead, open an issue and let's discuss the upgrade there. # # Declarations are sorted alphabetically within their section. # # When upgrading dependencies, please follow these steps: # 1. Update the version in this file. # 2. Run `./gradlew dependencyGuard` and check the output for any conflicts. # 3. Run `./gradlew build` and fix any issues. # 4. Run the app and check for any issues. [versions] androidBilling = "9.1.0" androidDesugar = "2.1.5" androidMaterial = "1.14.0" # AGP and tools should be updated together. # Also, make sure AGP version is compatible with both AS and IntelliJ IDEA. androidGradlePlugin = "9.2.1" androidTools = "32.2.1" androidxActivity = "1.13.0" androidxAnnotation = "1.10.0" androidxAppCompat = "1.7.1" androidxAutofill = "1.3.0" androidxBenchmark = "1.5.0" androidxBiometric = "1.1.0" androidxCamera = "1.6.1" # https://developer.android.com/jetpack/compose/bom/bom-mapping androidxComposeBom = "2026.05.01" androidxConstraintLayout = "2.2.1" androidxCoordinatorLayout = "1.3.0" androidxCore = "1.18.0" androidxCoreSplashscreen = "1.2.0" androidxDatastore = "1.2.1" androidxFragment = "1.8.9" androidxGlance = "1.1.1" androidxGlanceMaterial3 = "1.1.1" androidxGraphicsPath = "1.1.0" androidxLifecycle = "2.10.0" androidxLocalBroadcastManager = "1.1.0" androidxNavigation = "2.9.8" androidxNavigationEvent = "1.0.1" androidxRecyclerView = "1.4.0" androidxPreference = "1.2.1" androidxProfileInstaller = "1.4.1" # Pinning on 1.1.0: The 1.2.0 caused the Message List RecyclerView # to get a stale state when navigating back from Message Reader. # Review again once a new version is released in case we didn't finish # the Message List compose migration. androidxSwiperefreshlayout = "1.1.0" androidxTestCore = "1.7.0" androidxTestEspresso = "3.7.0" androidxTestExt = "1.3.0" androidxTestRules = "1.7.0" androidxTestRunner = "1.7.0" androidxTestUiAutomator = "2.4.0" androidxWebkit = "1.15.0" androidxWindow = "1.5.1" androidxWork = "2.11.2" apacheHttpclient5 = "5.6.5" appAuth = "0.11.1" assertk = "0.28.1" buildconfig = "6.1.2" circleImageView = "3.1.0" clikt = "5.1.0" commonsIo = "2.22.0" dependencyCheckPlugin = "0.65.0" dependencyGuardPlugin = "0.5.0" detektPlugin = "2.0.0-alpha.6" detektPluginCompose = "0.6.8" fastAdapter = "5.7.0" fileKit = "0.16.0" forkhandlesBom = "2.25.6.0" glide = "4.16.0" gradle = "9.6.1" gradleSha256 = "61ba77b3ff7167e60962763eb4bae79db7120c189b9544358d0ade3c1e712a83" icu4j = "78.3" javaDiffUtils = "4.17" jcipAnnotations = "1.0" jetbrainsAnnotations = "26.1.0" jetbrainsCompose = "1.12.1" jetbrainsComposeMaterialIcons = "1.7.3" jetbrainsComposeLifecycle = "2.11.0" jetbrainsComposeMaterial3 = "1.9.0" jetbrainsComposeMaterial3Adaptive = "1.3.0" jetbrainsComposeNavigation = "2.9.2" jetbrainsComposeNavigation3 = "1.0.0-alpha06" jetbrainsComposeNavigationEvent = "1.1.0" jdom = "2.0.6.1" jmapClient = "0.3.1" jsoup = "1.19.1" junit = "4.13.2" jutf7 = "1.0.0" jzlib = "1.0.7" koinBom = "4.2.2" konsist = "0.17.3" kotlinBom = "2.4.21" kotlinCompileTesting = "0.14.0" kotlinKsp = "2.3.12" kotlinpoet = "2.4.0" kotlinxCollectionsImmutable = "0.5.2" kotlinxCoroutines = "1.11.0" kotlinxDateTime = "0.8.0" kotlinxIoCore = "0.9.1" kotlinxSerialization = "1.11.0" kover = "0.9.11" ktlint = "1.5.0" ksoup = "0.2.6" ktor = "3.6.0" kxml2 = "1.0" landscapist = "2.9.8" leakcanary = "2.14" logbackClassic = "1.6.5" mime4j = "0.8.15" minidns = "1.1.1" mockito = "5.24.0" mockitoKotlin = "6.4.0" moshi = "1.15.2" mozillaAndroidComponents = "145.0.1" jsonSchemaValidator = "3.0.8" okhttp = "5.5.1" okio = "3.18.2" preferencesFix = "1.1.0" robolectric = "4.17" safeContentResolver = "1.0.0" searchPreference = "2.7.3" spotlessPlugin = "8.10.4" tbMobileComponents = "0.1.0" timber = "5.0.1" turbine = "1.2.1" uri = "0.0.21" xmlpull = "1.0" zxing = "3.5.4" [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } android-multiplatform-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "androidGradlePlugin" } android-lint = { id = "com.android.lint", version.ref = "androidGradlePlugin" } android-test = { id = "com.android.test", version.ref = "androidGradlePlugin" } androidx-baselineprofile = { id = "androidx.baselineprofile", version.ref = "androidxBenchmark" } buildconfig = { id = "com.github.gmazzo.buildconfig", version.ref = "buildconfig" } compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlinBom" } dependency-check = { id = "com.github.ben-manes.versions", version.ref = "dependencyCheckPlugin" } dependency-guard = { id = "com.dropbox.dependency-guard", version.ref = "dependencyGuardPlugin" } detekt = { id = "dev.detekt", version.ref = "detektPlugin" } jetbrains-compose = { id = "org.jetbrains.compose", version.ref = "jetbrainsCompose" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlinBom" } kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlinBom" } kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlinBom" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlinBom" } kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" } ksp = { id = "com.google.devtools.ksp", version.ref = "kotlinKsp" } spotless = { id = "com.diffplug.spotless", version.ref = "spotlessPlugin" } # Build plugins tb-app-badging = { id = "net.thunderbird.gradle.plugin.app.badging" } tb-app-versioning = { id = "net.thunderbird.gradle.plugin.app.versioning" } tb-baselineprofile-producer-app = { id = "net.thunderbird.baselineprofile.producer.app" } tb-baselineprofile-consumer-app = { id = "net.thunderbird.baselineprofile.consumer.app" } tb-featureflag-root = { id = "net.thunderbird.gradle.plugin.featureflag.root" } tb-featureflag-library = { id = "net.thunderbird.gradle.plugin.featureflag.library" } tb-piisafe = { id = "net.thunderbird.piisafe" } tb-quality-code-coverage = { id = "net.thunderbird.gradle.plugin.quality.coverage" } tb-quality-detekt = { id = "net.thunderbird.gradle.plugin.quality.detekt" } tb-quality-spotless = { id = "net.thunderbird.gradle.plugin.quality.spotless" } [libraries] android-billing = { module = "com.android.billingclient:billing", version.ref = "androidBilling" } android-billing-ktx = { module = "com.android.billingclient:billing-ktx", version.ref = "androidBilling" } android-desugar = { module = "com.android.tools:desugar_jdk_libs", version.ref = "androidDesugar" } android-desugar-nio = { module = "com.android.tools:desugar_jdk_libs_nio", version.ref = "androidDesugar" } android-material = { module = "com.google.android.material:material", version.ref = "androidMaterial" } android-tools-common = { module = "com.android.tools:common", version.ref = "androidTools" } androidx-activity = { module = "androidx.activity:activity", version.ref = "androidxActivity" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidxActivity" } androidx-annotation = { module = "androidx.annotation:annotation", version.ref = "androidxAnnotation" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidxAppCompat" } androidx-autofill = { module = "androidx.autofill:autofill", version.ref = "androidxAutofill" } androidx-benchmark-macro-junit4 = { module = "androidx.benchmark:benchmark-macro-junit4", version.ref = "androidxBenchmark" } androidx-biometric = { module = "androidx.biometric:biometric", version.ref = "androidxBiometric" } androidx-camera-core = { module = "androidx.camera:camera-core", version.ref = "androidxCamera" } androidx-camera-camera2 = { module = "androidx.camera:camera-camera2", version.ref = "androidxCamera" } androidx-camera-view = { module = "androidx.camera:camera-view", version.ref = "androidxCamera" } androidx-camera-lifecycle = { module = "androidx.camera:camera-lifecycle", version.ref = "androidxCamera" } androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "androidxComposeBom" } androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "androidxConstraintLayout" } androidx-coordinatorlayout = { module = "androidx.coordinatorlayout:coordinatorlayout", version.ref = "androidxCoordinatorLayout" } androidx-core = { module = "androidx.core:core", version.ref = "androidxCore" } androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidxCore" } androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "androidxCoreSplashscreen" } androidx-datastore = { module = "androidx.datastore:datastore", version.ref = "androidxDatastore" } androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "androidxDatastore" } androidx-fragment = { module = "androidx.fragment:fragment", version.ref = "androidxFragment" } androidx-fragment-compose = { module = "androidx.fragment:fragment-compose", version.ref = "androidxFragment" } androidx-fragment-testing = { module = "androidx.fragment:fragment-testing", version.ref = "androidxFragment" } androidx-glance-appwidget = { module = "androidx.glance:glance-appwidget", version.ref = "androidxGlance" } androidx-glance-appwidget-preview = { module = "androidx.glance:glance-appwidget-preview", version.ref = "androidxGlance" } androidx-glance-preview = { module = "androidx.glance:glance-preview", version.ref = "androidxGlance" } androidx-glance-material3 = { module = "androidx.glance:glance-material3", version.ref = "androidxGlanceMaterial3" } androidx-graphics-path = { module = "androidx.graphics:graphics-path", version.ref = "androidxGraphicsPath" } androidx-lifecycle-common = { module = "androidx.lifecycle:lifecycle-common", version.ref = "androidxLifecycle" } androidx-lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "androidxLifecycle" } androidx-lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidxLifecycle" } androidx-lifecycle-runtime-testing = { module = "androidx.lifecycle:lifecycle-runtime-testing", version.ref = "androidxLifecycle" } androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel", version.ref = "androidxLifecycle" } androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidxLifecycle" } androidx-lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "androidxLifecycle" } androidx-localbroadcastmanager = { module = "androidx.localbroadcastmanager:localbroadcastmanager", version.ref = "androidxLocalBroadcastManager" } androidx-navigationevent = { module = "androidx.navigationevent:navigationevent", version.ref = "androidxNavigationEvent" } androidx-navigation-fragment = { module = "androidx.navigation:navigation-fragment", version.ref = "androidxNavigation" } androidx-navigation-ui = { module = "androidx.navigation:navigation-ui", version.ref = "androidxNavigation" } androidx-preference = { module = "androidx.preference:preference", version.ref = "androidxPreference" } androidx-profileinstaller = { module = "androidx.profileinstaller:profileinstaller", version.ref = "androidxProfileInstaller" } androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "androidxRecyclerView" } androidx-swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "androidxSwiperefreshlayout" } androidx-test-core = { module = "androidx.test:core", version.ref = "androidxTestCore" } androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidxTestEspresso" } androidx-test-ext-junit-ktx = { module = "androidx.test.ext:junit-ktx", version.ref = "androidxTestExt" } androidx-test-rules = { module = "androidx.test:rules", version.ref = "androidxTestRules" } androidx-test-runner = { module = "androidx.test:runner", version.ref = "androidxTestRunner" } androidx-test-uiautomator = { module = "androidx.test.uiautomator:uiautomator", version.ref = "androidxTestUiAutomator" } androidx-webkit = { module = "androidx.webkit:webkit", version.ref = "androidxWebkit" } androidx-window = { module = "androidx.window:window", version.ref = "androidxWindow" } androidx-work-runtime = { module = "androidx.work:work-runtime", version.ref = "androidxWork" } androidx-work-testing = { module = "androidx.work:work-testing", version.ref = "androidxWork" } apache-httpclient5 = { module = "org.apache.httpcomponents.client5:httpclient5", version.ref = "apacheHttpclient5" } appauth = { module = "net.openid:appauth", version.ref = "appAuth" } assertk = { module = "com.willowtreeapps.assertk:assertk-jvm", version.ref = "assertk" } circleImageView = { module = "de.hdodenhof:circleimageview", version.ref = "circleImageView" } clikt = { module = "com.github.ajalt.clikt:clikt", version.ref = "clikt" } commons-io = { module = "commons-io:commons-io", version.ref = "commonsIo" } detekt-plugin-compose = { module = "io.nlopez.compose.rules:detekt", version.ref = "detektPluginCompose" } diff-utils = { module = "io.github.java-diff-utils:java-diff-utils", version.ref = "javaDiffUtils" } fastadapter = { module = "com.mikepenz:fastadapter", version.ref = "fastAdapter" } fastadapter-extensions-drag = { module = "com.mikepenz:fastadapter-extensions-drag", version.ref = "fastAdapter" } fastadapter-extensions-utils = { module = "com.mikepenz:fastadapter-extensions-utils", version.ref = "fastAdapter" } filekit-core = { module = "io.github.vinceglb:filekit-core", version.ref = "fileKit" } forkhandles-bom = { module = "dev.forkhandles:forkhandles-bom", version.ref = "forkhandlesBom" } forkhandles-fabrikate4k = { module = "dev.forkhandles:fabrikate4k" } glide = { module = "com.github.bumptech.glide:glide", version.ref = "glide" } glide-compiler = { module = "com.github.bumptech.glide:compiler", version.ref = "glide" } icu4j-charset = { module = "com.ibm.icu:icu4j-charset", version.ref = "icu4j" } jetbrains-annotations = { module = "org.jetbrains:annotations", version.ref = "jetbrainsAnnotations" } jetbrains-compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "jetbrainsCompose" } jetbrains-compose-components-ui-preview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "jetbrainsCompose" } jetbrains-compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "jetbrainsCompose" } jetbrains-compose-material-icons-extended = { module = "org.jetbrains.compose.material:material-icons-extended", version.ref = "jetbrainsComposeMaterialIcons" } jetbrains-compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "jetbrainsComposeMaterial3" } jetbrains-compose-material3-adaptive = { module = "org.jetbrains.compose.material3.adaptive:adaptive", version.ref = "jetbrainsComposeMaterial3Adaptive" } jetbrains-compose-material3-adaptive-layout = { module = "org.jetbrains.compose.material3.adaptive:adaptive-layout", version.ref = "jetbrainsComposeMaterial3Adaptive" } jetbrains-compose-material3-adaptive-navigation = { module = "org.jetbrains.compose.material3.adaptive:adaptive-navigation", version.ref = "jetbrainsComposeMaterial3Adaptive" } jetbrains-compose-material3-windowSizeClass = { module = "org.jetbrains.compose.material3:material3-window-size-class", version.ref = "jetbrainsComposeMaterial3" } jetbrains-compose-lifecycle-runtime = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "jetbrainsComposeLifecycle" } jetbrains-compose-lifecycle-viewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel", version.ref = "jetbrainsComposeLifecycle" } jetbrains-compose-lifecycle-viewmodel-compose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "jetbrainsComposeLifecycle" } jetbrains-compose-lifecycle-viewmodel-savedstate = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate", version.ref = "jetbrainsComposeLifecycle" } jetbrains-compose-navigation = { module = "org.jetbrains.androidx.navigation:navigation-compose", version.ref = "jetbrainsComposeNavigation" } jetbrains-compose-navigation3 = { module = "org.jetbrains.androidx.navigation3:navigation-compose3", version.ref = "jetbrainsComposeNavigation3" } jetbrains-compose-navigation-event = { module = "org.jetbrains.androidx.navigationevent:navigationevent-compose", version.ref = "jetbrainsComposeNavigationEvent" } jetbrains-compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "jetbrainsCompose" } jetbrains-compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "jetbrainsCompose" } jetbrains-compose-ui-tooling = { module = "org.jetbrains.compose.ui:ui-tooling", version.ref = "jetbrainsCompose" } jetbrains-compose-ui-test = { module = "org.jetbrains.compose.ui:ui-test", version.ref = "jetbrainsCompose" } jcip-annotations = { module = "net.jcip:jcip-annotations", version.ref = "jcipAnnotations" } jdom2 = { module = "org.jdom:jdom2", version.ref = "jdom" } jmap-client = { module = "rs.ltt.jmap:jmap-client", version.ref = "jmapClient" } jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" } junit = { module = "junit:junit", version.ref = "junit" } jutf7 = { module = "com.beetstra.jutf7:jutf7", version.ref = "jutf7" } jzlib = { module = "com.jcraft:jzlib", version.ref = "jzlib" } koin-bom = { module = "io.insert-koin:koin-bom", version.ref = "koinBom" } koin-core = { module = "io.insert-koin:koin-core" } koin-core-viewmodel = { module = "io.insert-koin:koin-core-viewmodel" } koin-compose-viewmodel = { module = "io.insert-koin:koin-compose-viewmodel" } koin-compose = { module = "io.insert-koin:koin-compose" } koin-android = { module = "io.insert-koin:koin-android" } koin-test = { module = "io.insert-koin:koin-test" } koin-test-junit4 = { module = "io.insert-koin:koin-test-junit4" } konsist = { module = "com.lemonappdev:konsist", version.ref = "konsist" } kotlin-bom = { module = "org.jetbrains.kotlin:kotlin-bom", version.ref = "kotlinBom" } kotlin-compile-testing = { module = "dev.zacsweers.kctfork:core", version.ref = "kotlinCompileTesting" } kotlin-compiler = { module = "org.jetbrains.kotlin:kotlin-compiler" } kotlin-gradle-plugin-api = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin-api" } kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect" } kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test" } kotlin-test-junit = { module = "org.jetbrains.kotlin:kotlin-test-junit" } kotlinpoet = { module = "com.squareup:kotlinpoet", version.ref = "kotlinpoet" } kotlinx-collections-immutable = { module = "org.jetbrains.kotlinx:kotlinx-collections-immutable", version.ref = "kotlinxCollectionsImmutable" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinxCoroutines" } kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" } kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinxDateTime" } kotlinx-io-core = { module = "org.jetbrains.kotlinx:kotlinx-io-core", version.ref = "kotlinxIoCore" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerialization" } ksoup = { module = "com.fleeksoft.ksoup:ksoup", version.ref = "ksoup" } ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" } ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" } ktor-client-logging = { module = "io.ktor:ktor-client-logging", version.ref = "ktor" } ktor-client-mock = { module = "io.ktor:ktor-client-mock", version.ref = "ktor" } ktor-serialization-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" } kxml2 = { module = "com.github.cketti:kxml2-extracted-from-android", version.ref = "kxml2" } landscapist-coil = { module = "com.github.skydoves:landscapist-coil3", version.ref = "landscapist" } leakcanary-android = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanary" } logback-classic = { module = "ch.qos.logback:logback-classic", version.ref = "logbackClassic" } mime4j-core = { module = "org.apache.james:apache-mime4j-core", version.ref = "mime4j" } mime4j-dom = { module = "org.apache.james:apache-mime4j-dom", version.ref = "mime4j" } minidns-hla = { module = "org.minidns:minidns-hla", version.ref = "minidns" } mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockito" } mockito-kotlin = { module = "org.mockito.kotlin:mockito-kotlin", version.ref = "mockitoKotlin" } moshi = { module = "com.squareup.moshi:moshi", version.ref = "moshi" } moshi-kotlin-codegen = { module = "com.squareup.moshi:moshi-kotlin-codegen", version.ref = "moshi" } mozilla-components-glean = { module = "org.mozilla.components:service-glean", version.ref = "mozillaAndroidComponents" } mozilla-components-fetch-okhttp = { module = "org.mozilla.components:lib-fetch-okhttp", version.ref = "mozillaAndroidComponents" } networknt-jsonSchemaValidator = { module = "com.networknt:json-schema-validator", version.ref = "jsonSchemaValidator" } okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } okhttp-mockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "okhttp" } okio = { module = "com.squareup.okio:okio", version.ref = "okio" } preferencex = { module = "com.takisoft.preferencex:preferencex", version.ref = "preferencesFix" } preferencex-colorpicker = { module = "com.takisoft.preferencex:preferencex-colorpicker", version.ref = "preferencesFix" } preferencex-datetimepicker = { module = "com.takisoft.preferencex:preferencex-datetimepicker", version.ref = "preferencesFix" } robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" } safeContentResolver = { module = "de.cketti.safecontentresolver:safe-content-resolver-v21", version.ref = "safeContentResolver" } searchPreference = { module = "com.github.ByteHamster:SearchPreference", version.ref = "searchPreference" } tb-mobile-components-bom = { module = "net.thunderbird.components:bom", version.ref = "tbMobileComponents" } tb-mobile-components-core-outcome = { module = "net.thunderbird.components.core:outcome" } tb-mobile-components-core-logging-core = { module = "net.thunderbird.components.core.logging:core" } tb-mobile-components-core-logging-file = { module = "net.thunderbird.components.core.logging:file" } tb-mobile-components-core-logging-testing = { module = "net.thunderbird.components.core.logging:testing" } tb-mobile-components-ui-bolt = { module = "net.thunderbird.components.ui.bolt:bolt" } tb-mobile-components-ui-testing = { module = "net.thunderbird.components.ui:testing" } timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" } turbine = { module = "app.cash.turbine:turbine", version.ref = "turbine" } uri = { module = "com.eygraber:uri-kmp", version.ref = "uri" } xmlpull = { module = "com.github.cketti:xmlpull-extracted-from-android", version.ref = "xmlpull" } zxing = { module = "com.google.zxing:core", version.ref = "zxing" } [bundles] shared-tmc-components = [ "tb-mobile-components-core-outcome", "tb-mobile-components-core-logging-core", ] shared-tmc-components-test = [ "tb-mobile-components-core-logging-testing", ] shared-kmp-common = [ "androidx-annotation", "koin-core", "kotlinx-collections-immutable", "kotlinx-coroutines-core", "kotlinx-datetime", "kotlinx-serialization-json", ] shared-kmp-android = [ "androidx-core-ktx", "koin-android", "kotlinx-coroutines-android", ] shared-kmp-jvm = [ ] shared-kmp-common-test = [ "assertk", "koin-test", "kotlin-test", "kotlin-test-junit", "kotlinx-coroutines-test", "turbine", ] shared-kmp-android-test = [ ] shared-kmp-jvm-test = [ ] shared-kmp-compose-common = [ "koin-compose", "koin-compose-viewmodel", "jetbrains-compose-lifecycle-runtime", "jetbrains-compose-lifecycle-viewmodel", "jetbrains-compose-lifecycle-viewmodel-compose", "jetbrains-compose-lifecycle-viewmodel-savedstate", # Disabled, as it's not used yet # "jetbrains-compose-navigation3", # "jetbrains-compose-navigation-event", ] shared-kmp-compose-android = [ ] shared-kmp-compose-jvm = [ ] shared-kmp-compose-common-test = [ "jetbrains-compose-ui-test", ] shared-kmp-compose-android-test = [ "androidx-compose-ui-test-junit4", "androidx-compose-ui-test-manifest", "robolectric", ] shared-kmp-compose-jvm-test = [ ] shared-android = [ "androidx-annotation", "androidx-core-ktx", "koin-android", "kotlinx-coroutines-android", "kotlinx-datetime", ] shared-android-compose = [ "jetbrains-compose-runtime", "jetbrains-compose-foundation", "jetbrains-compose-ui", "jetbrains-compose-components-ui-preview", "koin-compose", "koin-compose-viewmodel", "kotlinx-collections-immutable", "jetbrains-compose-components-resources", ] shared-android-compose-debug = [ "jetbrains-compose-ui-tooling" ] shared-android-test = [ "assertk", "koin-test", "koin-test-junit4", "kotlin-test", "kotlin-test-junit", "kotlinx-coroutines-test", "turbine", ] shared-android-compose-test = [ "androidx-compose-ui-test-manifest", "jetbrains-compose-ui-test", "robolectric", ] shared-android-compose-androidTest = [ ] shared-android-app = [ "androidx-core-splashscreen", ] shared-android-app-compose = [ "koin-compose", "koin-compose-viewmodel", "kotlinx-collections-immutable", "androidx-compose-foundation", "jetbrains-compose-components-resources" ] shared-android-app-compose-debug = [ "jetbrains-compose-ui-tooling", ] shared-android-app-test = [ "assertk", "koin-test", "kotlin-test", "kotlin-test-junit", ] shared-android-app-compose-test = [ ] shared-android-app-compose-androidTest = [ ] shared-jvm = [ "androidx-annotation", "koin-core", "kotlinx-coroutines-core", "kotlinx-datetime", ] shared-jvm-test = [ "assertk", "kotlin-test", "kotlin-test-junit", "kotlinx-coroutines-test", ]