# 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. [versions] gradle = "8.4" androidGradlePlugin = "8.1.2" ktlint = "0.50.0" kotlin = "1.9.10" kotlinxCoroutines = "1.7.3" jetbrainsAnnotations = "24.0.1" androidxAppCompat = "1.6.1" androidxActivity = "1.8.0" androidxRecyclerView = "1.3.2" androidxLifecycle = "2.6.2" androidxNavigation = "2.7.5" androidxConstraintLayout = "2.1.4" androidxFragment = "1.6.2" androidxCore = "1.12.0" androidxCoreSplashscreen = "1.0.1" androidxPreference = "1.2.1" androidxDrawerLayout = "1.1.1" androidxTransition = "1.4.1" androidxComposeCompiler = "1.5.3" # https://developer.android.com/jetpack/compose/bom/bom-mapping androidxComposeBom = "2023.10.01" androidxComposeMaterial = "1.5.4" androidxComposeMaterial3 = "1.1.2" accompanist = "0.32.0" fastAdapter = "5.7.0" preferencesFix = "1.1.0" timber = "5.0.1" koinCore = "3.5.0" koinAndroid = "3.5.0" koinAndroidCompose = "3.5.0" koinTest = "3.5.0" mime4j = "0.8.9" okhttp = "4.12.0" glide = "4.16.0" moshi = "1.15.0" mockito = "5.6.0" [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } android-lint = { id = "com.android.lint", version.ref = "androidGradlePlugin" } ksp = "com.google.devtools.ksp:1.9.10-1.0.13" kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } spotless = "com.diffplug.spotless:6.22.0" detekt = "io.gitlab.arturbosch.detekt:1.23.0" dependency-check = "com.github.ben-manes.versions:0.48.0" [libraries] desugar = "com.android.tools:desugar_jdk_libs:2.0.3" kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" } kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinxCoroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" } kotlinx-datetime = "org.jetbrains.kotlinx:kotlinx-datetime:0.4.1" kotlinx-collections-immutable = "org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.6" jetbrains-annotations = { module = "org.jetbrains:annotations", version.ref = "jetbrainsAnnotations" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidxAppCompat" } androidx-activity = { module = "androidx.activity:activity", version.ref = "androidxActivity" } androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "androidxRecyclerView" } androidx-lifecycle-common = { module = "androidx.lifecycle:lifecycle-common", version.ref = "androidxLifecycle" } androidx-lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "androidxLifecycle" } androidx-lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", 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-annotation = "androidx.annotation:annotation:1.7.0" androidx-biometric = "androidx.biometric:biometric:1.1.0" androidx-navigation-fragment = { module = "androidx.navigation:navigation-fragment", version.ref = "androidxNavigation" } androidx-navigation-ui = { module = "androidx.navigation:navigation-ui", version.ref = "androidxNavigation" } androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "androidxConstraintLayout" } androidx-coordinatorlayout = "androidx.coordinatorlayout:coordinatorlayout:1.2.0" androidx-work-ktx = "androidx.work:work-runtime-ktx:2.8.1" androidx-fragment = { module = "androidx.fragment:fragment", version.ref = "androidxFragment" } androidx-localbroadcastmanager = "androidx.localbroadcastmanager:localbroadcastmanager:1.1.0" 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-preference = { module = "androidx.preference:preference", version.ref = "androidxPreference" } androidx-swiperefreshlayout = "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0" androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "androidxComposeBom" } androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" } androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling" } androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" } androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } androidx-compose-activity = { module = "androidx.activity:activity-compose", version.ref = "androidxActivity" } androidx-compose-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidxLifecycle" } androidx-compose-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidxLifecycle" } androidx-compose-material = { module = "androidx.compose.material:material", version.ref = "androidxComposeMaterial" } androidx-compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "androidxComposeMaterial3" } androidx-compose-material3-windowSizeClass = { module = "androidx.compose.material3:material3-window-size-class", version.ref = "androidxComposeMaterial3" } androidx-compose-material-icons-extended = { module = "androidx.compose.material:material-icons-extended", version.ref = "androidxComposeMaterial" } androidx-compose-navigation = { module = "androidx.navigation:navigation-compose", version.ref = "androidxNavigation" } androidx-test-core = "androidx.test:core:1.5.0" androidx-test-ext-junit-ktx = "androidx.test.ext:junit-ktx:1.1.5" androidx-test-espresso-core = "androidx.test.espresso:espresso-core:3.5.1" android-material = "com.google.android.material:material:1.9.0" accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" } 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" } materialdrawer = "com.mikepenz:materialdrawer:8.4.5" preferencex = { module = "com.takisoft.preferencex:preferencex", version.ref = "preferencesFix" } preferencex-datetimepicker = { module = "com.takisoft.preferencex:preferencex-datetimepicker", version.ref = "preferencesFix" } preferencex-colorpicker = { module = "com.takisoft.preferencex:preferencex-colorpicker", version.ref = "preferencesFix" } okio = "com.squareup.okio:okio:3.6.0" moshi = { module = "com.squareup.moshi:moshi", version.ref = "moshi" } moshi-kotlin-codegen = { module = "com.squareup.moshi:moshi-kotlin-codegen", version.ref = "moshi" } timber = "com.jakewharton.timber:timber:5.0.1" koin-core = { module = "io.insert-koin:koin-core", version.ref = "koinCore" } koin-android = { module = "io.insert-koin:koin-android", version.ref = "koinAndroid" } koin-androidx-compose = { module = "io.insert-koin:koin-androidx-compose", version.ref = "koinAndroidCompose" } koin-test = { module = "io.insert-koin:koin-test", version.ref = "koinTest" } koin-test-junit4 = { module = "io.insert-koin:koin-test-junit4", version.ref = "koinTest" } commons-io = "commons-io:commons-io:2.11.0" mime4j-core = { module = "org.apache.james:apache-mime4j-core", version.ref = "mime4j" } mime4j-dom = { module = "org.apache.james:apache-mime4j-dom", version.ref = "mime4j" } okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } okhttp-mockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "okhttp" } minidns-hla = "org.minidns:minidns-hla:1.0.4" glide = { module = "com.github.bumptech.glide:glide", version.ref = "glide" } glide-compiler = { module = "com.github.bumptech.glide:compiler", version.ref = "glide" } jsoup = "org.jsoup:jsoup:1.15.4" apache-httpclient5 = "org.apache.httpcomponents.client5:httpclient5:5.2.1" clikt = "com.github.ajalt.clikt:clikt:3.5.2" jzlib = "com.jcraft:jzlib:1.0.7" jutf7 = "com.beetstra.jutf7:jutf7:1.0.0" jcip-annotations = "net.jcip:jcip-annotations:1.0" jmap-client = "rs.ltt.jmap:jmap-client:0.3.1" circleimageview = "de.hdodenhof:circleimageview:3.1.0" appauth = "net.openid:appauth:0.11.1" searchPreference = "com.github.ByteHamster:SearchPreference:v2.3.0" safeContentResolver = "de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0" tokenautocomplete = "com.splitwise:tokenautocomplete:4.0.0-beta01" ckchangelog-core = "de.cketti.library.changelog:ckchangelog-core:2.0.0-beta02" xmlpull = "com.github.cketti:xmlpull-extracted-from-android:1.0" kxml2 = "com.github.cketti:kxml2-extracted-from-android:1.0" junit = "junit:junit:4.13.2" robolectric = "org.robolectric:robolectric:4.11.1" mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockito" } mockito-kotlin = "org.mockito.kotlin:mockito-kotlin:5.1.0" turbine = "app.cash.turbine:turbine:0.13.0" jdom2 = "org.jdom:jdom2:2.0.6.1" icu4j-charset = "com.ibm.icu:icu4j-charset:72.1" assertk = "com.willowtreeapps.assertk:assertk-jvm:0.27.0" leakcanary-android = "com.squareup.leakcanary:leakcanary-android:2.9.1" detekt-plugin-compose = "io.nlopez.compose.rules:detekt:0.1.11" [bundles] shared-jvm-main = [ "koin-core", "kotlinx-datetime", "kotlinx-coroutines-core", ] shared-jvm-android = [ "androidx-core", "androidx-core-ktx", "koin-android", ] shared-jvm-android-app = [ "androidx-activity", "androidx-core-splashscreen", "android-material", ] shared-jvm-android-compose = [ "kotlinx-collections-immutable", "androidx-compose-foundation", "androidx-compose-ui-tooling-preview", "androidx-compose-lifecycle-runtime", "androidx-compose-lifecycle-viewmodel", "androidx-compose-navigation", "koin-androidx-compose", ] shared-jvm-android-compose-debug = [ "androidx-compose-ui-tooling", "androidx-compose-ui-test-manifest", ] shared-jvm-androidtest-compose = [ "androidx-compose-ui-test-junit4", ] shared-jvm-test = [ "kotlin-test", "kotlinx-coroutines-test", "junit", "assertk", "mockito-core", "mockito-kotlin", "koin-test", "koin-test-junit4", "turbine", ] shared-jvm-test-compose = [ "robolectric", "androidx-compose-ui-test-junit4", "androidx-test-espresso-core", ]