[versions] aboutLibraries = "15.2.0" android-desugar = "2.1.5" android-gradle = "9.3.2" androidx-activity-compose = "1.13.0" androidx-annotation = "1.10.0" androidx-appCompat = "1.8.0" androidx-baselineProfile = "1.5.0-rc02" androidx-benchmark = "1.4.1" androidx-biometric = "1.2.0-alpha05" androidx-compose-bom = "2026.07.01" androidx-constraintLayout = "2.2.2" androidx-core = "1.19.0" androidx-coreSplashScreen = "1.2.0" androidx-glance = "1.2.0" androidx-interpolator = "1.0.0" androidx-lifecycle = "2.11.0" androidx-paging = "3.5.1" androidx-preference = "1.2.1" androidx-profileInstaller = "1.4.1" androidx-recyclerView = "1.4.0" androidx-sqlite = "2.7.0" androidx-test-espresso = "3.7.0" androidx-test-junit = "1.3.0" androidx-test-uiautomator = "2.4.0" androidx-viewPager = "1.1.0" androidx-webkit = "1.17.0" androidx-work = "2.11.2" archive = "1.1.6" coil = "3.6.2" composeGrid = "2.8.0" composeMaterialMotion = "2.0.1" composeRichEditor = "1.0.0-rc13" composeWebview = "0.33.6" conscrypt = "2.7.0" directionalViewPager = "1.0.0" diskLruCache = "2.0.2" firebase-bom = "34.18.0" firebase-crashlytics = "3.0.8" flexibleAdapter = "c8013533" google-services = "4.5.0" image-decoder = "10" injekt = "91edab2317" jsoup = "1.23.2" junit = "6.1.3" kim = "0.38.1" kotest-assertions = "6.2.4" kotlin-gradle = "2.4.10" kotlinx-coroutines = "1.11.0" kotlinx-datetime = "0.8.0" kotlinx-serialization = "1.11.0" ktlint = "1.8.0" leakCanary = "2.14" logcat = "0.4" markdown = "0.43.0" material = "1.12.0" materialKolor = "5.0.1" metro = "1.4.2" metrox-viewmodel = "1.4.2" metrox-viewmodel-compose = "1.4.2" mockk = "1.14.11" moko-resources = "0.26.4" okhttp = "5.5.0" okio = "3.18.1" photoView = "2.3.0" quickJs = "547f5b1597" reorderable = "3.1.0" rxJava = "1.3.8" shizuku = "13.1.5" spotless = "8.10.1" sqldelight = "2.3.2" sqldelight-androidx-driver = "0637a964a1" stringSimilarity = "0.1.0" subsamplingScaleImageView = "94915e6f73" swipe = "1.3.0" tapmoc = "0.4.2" unifile = "08f224c8f9" valkyrie = "0.5.2" voyager = "2.2.21-1.10.3" webgpuviewer = "40" xmlutil = "1.0.2" [libraries] aboutLibraries-compose = { module = "com.mikepenz:aboutlibraries-compose-m3", version.ref = "aboutLibraries" } android-desugar = { module = "com.android.tools:desugar_jdk_libs", version.ref = "android-desugar" } android-gradle = { module = "com.android.tools.build:gradle", version.ref = "android-gradle" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" } androidx-annotation = { module = "androidx.annotation:annotation", version.ref = "androidx-annotation" } androidx-appCompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appCompat" } androidx-benchmark-macroJunit4 = { module = "androidx.benchmark:benchmark-macro-junit4", version.ref = "androidx-benchmark" } androidx-biometric = { module = "androidx.biometric:biometric-ktx", version.ref = "androidx-biometric" } androidx-compose-animation = { module = "androidx.compose.animation:animation" } androidx-compose-animationGraphics = { module = "androidx.compose.animation:animation-graphics" } androidx-compose-bom = { module = "androidx.compose:compose-bom-alpha", version.ref = "androidx-compose-bom" } androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" } androidx-compose-material3 = { module = "androidx.compose.material3:material3" } androidx-compose-material3NavSuite = { module = "androidx.compose.material3:material3-adaptive-navigation-suite" } androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" } androidx-compose-runtimeAnnotation = { module = "androidx.compose.runtime:runtime-annotation" } androidx-compose-ui = { module = "androidx.compose.ui:ui" } androidx-compose-uiTooling = { module = "androidx.compose.ui:ui-tooling" } androidx-compose-uiToolingPreview = { module = "androidx.compose.ui:ui-tooling-preview" } androidx-compose-uiUtil = { module = "androidx.compose.ui:ui-util" } androidx-constraintLayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "androidx-constraintLayout" } androidx-core = { module = "androidx.core:core", version.ref = "androidx-core" } androidx-coreSplashScreen = { module = "androidx.core:core-splashscreen", version.ref = "androidx-coreSplashScreen" } androidx-glance-appWidget = { module = "androidx.glance:glance-appwidget", version.ref = "androidx-glance" } androidx-interpolator = { module = "androidx.interpolator:interpolator", version.ref = "androidx-interpolator" } androidx-lifecycle-common = { module = "androidx.lifecycle:lifecycle-common", version.ref = "androidx-lifecycle" } androidx-lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "androidx-lifecycle" } androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime", version.ref = "androidx-lifecycle" } androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel", version.ref = "androidx-lifecycle" } androidx-lifecycle-viewmodelCompose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" } androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "androidx-paging" } androidx-paging-runtime = { module = "androidx.paging:paging-runtime", version.ref = "androidx-paging" } androidx-preference = { module = "androidx.preference:preference-ktx", version.ref = "androidx-preference" } androidx-profileInstaller = { module = "androidx.profileinstaller:profileinstaller", version.ref = "androidx-profileInstaller" } androidx-recyclerView = { module = "androidx.recyclerview:recyclerview", version.ref = "androidx-recyclerView" } androidx-sqlite-bundled = { module = "androidx.sqlite:sqlite-bundled", version.ref = "androidx-sqlite" } androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-test-espresso" } androidx-test-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-test-junit" } androidx-test-uiautomator = { module = "androidx.test.uiautomator:uiautomator", version.ref = "androidx-test-uiautomator" } androidx-viewPager = { module = "androidx.viewpager:viewpager", version.ref = "androidx-viewPager" } androidx-webkit = { module = "androidx.webkit:webkit", version.ref = "androidx-webkit" } androidx-work = { module = "androidx.work:work-runtime", version.ref = "androidx-work" } archive = { module = "me.zhanghai.android.libarchive:library", version.ref = "archive" } coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coil" } coil-core = { module = "io.coil-kt.coil3:coil", version.ref = "coil" } coil-gif = { module = "io.coil-kt.coil3:coil-gif", version.ref = "coil" } coil-network-okhttp = { module = "io.coil-kt.coil3:coil-network-okhttp", version.ref = "coil" } composeGrid = { module = "com.cheonjaeung.compose.grid:grid", version.ref = "composeGrid" } composeMaterialMotion = { module = "io.github.fornewid:material-motion-compose-core", version.ref = "composeMaterialMotion" } composeRichEditor = { module = "com.mohamedrejeb.richeditor:richeditor-compose", version.ref = "composeRichEditor" } composeWebview = { module = "io.github.kevinnzou:compose-webview", version.ref = "composeWebview" } conscrypt = { module = "org.conscrypt:conscrypt-android", version.ref = "conscrypt" } directionalViewPager = { module = "com.github.tachiyomiorg:DirectionalViewPager", version.ref = "directionalViewPager" } diskLruCache = { module = "com.jakewharton:disklrucache", version.ref = "diskLruCache" } firebase-analytics = { module = "com.google.firebase:firebase-analytics" } firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebase-bom" } firebase-crashlytics = { module = "com.google.firebase:firebase-crashlytics" } flexibleAdapter = { module = "com.github.arkon.FlexibleAdapter:flexible-adapter", version.ref = "flexibleAdapter" } image-decoder = { module = "ca.mpreg:imagedecoder", version.ref = "image-decoder" } injekt = { module = "com.github.mihonapp:injekt", version.ref = "injekt" } jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" } junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit" } junit-platform-launcher = { module = "org.junit.platform:junit-platform-launcher" } kim = { module = "de.stefan-oltmann:kim", version.ref = "kim" } kotest-assertions = { module = "io.kotest:kotest-assertions-core", version.ref = "kotest-assertions" } kotlin-compose-compiler-gradle = { module = "org.jetbrains.kotlin:compose-compiler-gradle-plugin", version.ref = "kotlin-gradle" } kotlin-gradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin-gradle" } kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin-gradle" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinx-coroutines" } kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" } kotlinx-coroutines-guava = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-guava", version.ref = "kotlinx-coroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines" } kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinx-datetime" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization" } kotlinx-serialization-jsonOkio = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json-okio", version.ref = "kotlinx-serialization" } kotlinx-serialization-protobuf = { module = "org.jetbrains.kotlinx:kotlinx-serialization-protobuf", version.ref = "kotlinx-serialization" } ktlint-bom = { module = "com.pinterest.ktlint:ktlint-bom", version.ref = "ktlint" } leakCanary-core = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakCanary" } leakCanary-plumber = { module = "com.squareup.leakcanary:plumber-android", version.ref = "leakCanary" } logcat = { module = "com.squareup.logcat:logcat", version.ref = "logcat" } markdown-coil = { module = "com.mikepenz:multiplatform-markdown-renderer-coil3", version.ref = "markdown" } markdown-core = { module = "com.mikepenz:multiplatform-markdown-renderer", version.ref = "markdown" } material = { module = "com.google.android.material:material", version.ref = "material" } materialKolor = { module = "com.materialkolor:material-kolor", version.ref = "materialKolor" } metro-runtime = { module = "dev.zacsweers.metro:runtime", version.ref = "metro" } metrox-viewmodel = { module = "dev.zacsweers.metro:metrox-viewmodel", version.ref = "metrox-viewmodel" } metrox-viewmodel-compose = { module = "dev.zacsweers.metro:metrox-viewmodel-compose", version.ref = "metrox-viewmodel-compose" } mockk = { module = "io.mockk:mockk", version.ref = "mockk" } moko-resources = { module = "dev.icerock.moko:resources", version.ref = "moko-resources" } natural-comparator = { module = "com.github.gpanther:java-nat-sort", version = "natural-comparator-1.1" } okhttp-brotli = { module = "com.squareup.okhttp3:okhttp-brotli", version.ref = "okhttp" } okhttp-core = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } okhttp-dnsOverHttps = { module = "com.squareup.okhttp3:okhttp-dnsoverhttps", version.ref = "okhttp" } okhttp-logging = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okhttp" } okhttp-zstd = { module = "com.squareup.okhttp3:okhttp-zstd", version.ref = "okhttp" } okio = { module = "com.squareup.okio:okio", version.ref = "okio" } photoView = { module = "com.github.chrisbanes:PhotoView", version.ref = "photoView" } quickJs = { module = "com.github.zhanghai.quickjs-java:quickjs-android", version.ref = "quickJs" } reorderable = { module = "sh.calvin.reorderable:reorderable", version.ref = "reorderable" } rxJava = { module = "io.reactivex:rxjava", version.ref = "rxJava" } shizuku-api = { module = "dev.rikka.shizuku:api", version.ref = "shizuku" } shizuku-provider = { module = "dev.rikka.shizuku:provider", version.ref = "shizuku" } spotless-gradle = { module = "com.diffplug.spotless:spotless-plugin-gradle", version.ref = "spotless" } sqldelight-androidxDriver = { module = "com.github.mihon.sqldelight-androidx-driver:sqldelight-androidx-driver", version.ref = "sqldelight-androidx-driver" } sqldelight-androidxPaging = { module = "app.cash.sqldelight:androidx-paging3-extensions", version.ref = "sqldelight" } sqldelight-async = { module = "app.cash.sqldelight:async-extensions", version.ref = "sqldelight" } sqldelight-coroutines = { module = "app.cash.sqldelight:coroutines-extensions", version.ref = "sqldelight" } sqldelight-sqliteDialect338 = { module = "app.cash.sqldelight:sqlite-3-38-dialect", version.ref = "sqldelight" } stringSimilarity = { module = "com.aallam.similarity:string-similarity-kotlin", version.ref = "stringSimilarity" } subsamplingScaleImageView = { module = "com.github.mihonapp:subsampling-scale-image-view", version.ref = "subsamplingScaleImageView" } swipe = { module = "me.saket.swipe:swipe", version.ref = "swipe" } tapmoc-gradle = { module = "com.gradleup.tapmoc:tapmoc-gradle-plugin", version.ref = "tapmoc" } unifile = { module = "com.github.mihon:unifile", version.ref = "unifile" } voyager-navigator = { module = "cafe.adriel.voyager:voyager-navigator", version.ref = "voyager" } voyager-tabNavigator = { module = "cafe.adriel.voyager:voyager-tab-navigator", version.ref = "voyager" } voyager-transitions = { module = "cafe.adriel.voyager:voyager-transitions", version.ref = "voyager" } webgpuviewer = { module = "ca.mpreg:webgpuviewer", version.ref = "webgpuviewer" } xmlutil-core = { module = "io.github.pdvrieze.xmlutil:core-android", version.ref = "xmlutil" } xmlutil-serialization = { module = "io.github.pdvrieze.xmlutil:serialization", version.ref = "xmlutil" } [plugins] aboutLibraries = { id = "com.mikepenz.aboutlibraries.plugin.android", version.ref = "aboutLibraries" } android-application = { id = "com.android.application", version.ref = "android-gradle" } android-kmp-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "android-gradle" } android-library = { id = "com.android.library", version.ref = "android-gradle" } android-test = { id = "com.android.test", version.ref = "android-gradle" } androidx-baselineProfile = { id = "androidx.baselineprofile", version.ref = "androidx-baselineProfile" } firebase-crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "firebase-crashlytics" } google-services = { id = "com.google.gms.google-services", version.ref = "google-services" } kotlin-compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin-gradle" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin-gradle" } kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin-gradle" } kotlin-samWithReceiver = { id = "org.jetbrains.kotlin.plugin.sam.with.receiver", version.ref = "kotlin-gradle" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin-gradle" } moko-resources = { id = "dev.icerock.mobile.multiplatform-resources", version.ref = "moko-resources" } metro = { id = "dev.zacsweers.metro", version.ref = "metro" } spotless = { id = "com.diffplug.spotless", version.ref = "spotless" } sqldelight = { id = "app.cash.sqldelight", version.ref = "sqldelight" } valkyrie = { id = "io.github.composegears.valkyrie", version.ref = "valkyrie" } [bundles] androidx-lifecycle = ["androidx-lifecycle-common", "androidx-lifecycle-process", "androidx-lifecycle-runtime", "androidx-lifecycle-viewmodel", "androidx-lifecycle-viewmodelCompose"] coil = ["coil-core", "coil-gif", "coil-compose", "coil-network-okhttp"] kotlinx-coroutines = ["kotlinx-coroutines-core", "kotlinx-coroutines-android", "kotlinx-coroutines-guava"] markdown = ["markdown-core", "markdown-coil"] okhttp = ["okhttp-core", "okhttp-logging", "okhttp-brotli", "okhttp-dnsOverHttps", "okhttp-zstd"] serialization = ["kotlinx-serialization-json", "kotlinx-serialization-jsonOkio", "kotlinx-serialization-protobuf", "xmlutil-core", "xmlutil-serialization"] shizuku = ["shizuku-api", "shizuku-provider"] sqldelight = ["sqldelight-androidxDriver", "sqldelight-async", "sqldelight-coroutines", "sqldelight-androidxPaging"] test = ["junit-jupiter", "kotest-assertions", "mockk"] voyager = ["voyager-navigator", "voyager-tabNavigator", "voyager-transitions"]