[versions] agp = "8.13.1" barcodeScanning = "17.3.0" cameraCore = "1.5.1" dav4jvm = "main-SNAPSHOT" dom4j = "2.2.0" jlatexmath = "1.2" kotlin = "2.2.21" coreKtx = "1.17.0" junit = "4.13.2" junitVersion = "1.3.0" espressoCore = "3.7.0" commons-text = "1.14.0" lifecycleRuntimeKtx = "2.9.4" activityCompose = "1.11.0" composeBom = "2025.11.00" media3 = "1.8.0" metadataExtractor = "2.19.0" nav2 = "2.9.6" nav3Core = "1.0.0-rc01" material3AdaptiveNav3 = "1.2.0" lifecycleViewmodelNav3 = "1.0.0-alpha04" nav3Material = "1.0.0-SNAPSHOT" markdown = "0.7.3" okhttp = "5.1.0" retrofit = "3.0.0" coil = "3.3.0" quickjs = "3.2.3" room = "2.8.3" koin-bom = "4.1.1" datastore = "1.1.7" serialization-json = "1.9.0" kotlin-coroutines-core = "1.10.2" kotlinx-datetime = "0.7.1" ksp = "2.2.21-2.0.4" paging = "3.3.6" lucide-icons = "1.1.0" image-viewer = "1.1.0-alpha.7" google-services = "4.4.4" firebase-bom = "34.6.0" firebase-crashlytics = "3.0.6" jsoup = "1.21.2" zxing = "3.5.4" quickie-bundled = "1.11.0" sonner = "0.4.0" leakcanary = "2.14" workmanager = "2.11.0" reorderable = "3.0.0" objectbox = "4.3.0" mcp = "0.7.7" pebble = "3.2.4" browser = "1.9.0" appcompat = "1.7.1" material = "1.13.0" ucrop = "2.2.11-native" uiautomator = "2.3.0" benchmarkMacroJunit4 = "1.4.1" baselineprofile = "1.4.1" profileinstaller = "1.4.1" ktor = "3.3.2" [libraries] androidx-camera-core = { module = "androidx.camera:camera-core", version.ref = "cameraCore" } androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } androidx-media3-common = { module = "androidx.media3:media3-common", version.ref = "media3" } androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3" } androidx-media3-ui = { module = "androidx.media3:media3-ui", version.ref = "media3" } barcode-scanning = { module = "com.google.mlkit:barcode-scanning", version.ref = "barcodeScanning" } dav4jvm = { module = "com.github.bitfireAT:dav4jvm", version.ref = "dav4jvm" } dom4j = { module = "org.dom4j:dom4j", version.ref = "dom4j" } jlatexmath = { module = "com.github.rikkahub.jlatexmath-android:jlatexmath", version.ref = "jlatexmath" } jlatexmath-font-greek = { module = "com.github.rikkahub.jlatexmath-android:jlatexmath-font-greek", version.ref = "jlatexmath" } jlatexmath-font-cyrillic = { module = "com.github.rikkahub.jlatexmath-android:jlatexmath-font-cyrillic", version.ref = "jlatexmath" } junit = { group = "junit", name = "junit", version.ref = "junit" } androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" } androidx-lifecycle-process = { group = "androidx.lifecycle", name = "lifecycle-process", version.ref = "lifecycleRuntimeKtx" } androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } androidx-ui = { group = "androidx.compose.ui", name = "ui" } androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-material3 = { group = "androidx.compose.material3", name = "material3", version = "1.5.0-alpha08" } androidx-navigation2 = { group = "androidx.navigation", name = "navigation-compose", version.ref = "nav2" } androidx-navigation3-runtime = { module = "androidx.navigation3:navigation3-runtime", version.ref = "nav3Core" } androidx-navigation3-ui = { module = "androidx.navigation3:navigation3-ui", version.ref = "nav3Core" } androidx-material3-adaptive = { group = "androidx.compose.material3.adaptive", name = "adaptive", version.ref = "material3AdaptiveNav3" } androidx-material3-adaptive-layout = { group = "androidx.compose.material3.adaptive", name = "adaptive-layout", version.ref = "material3AdaptiveNav3" } androidx-material3-adaptive-navigation3 = { group = "androidx.compose.material3.adaptive", name = "adaptive-navigation3", version.ref = "nav3Material" } androidx-lifecycle-viewmodel-navigation3 = { module = "androidx.lifecycle:lifecycle-viewmodel-navigation3", version.ref = "lifecycleViewmodelNav3" } androidx-room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "room" } androidx-room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" } androidx-room-paging = { group = "androidx.room", name = "room-paging", version.ref = "room" } androidx-room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "room" } androidx-paging-runtime = { group = "androidx.paging", name = "paging-runtime", version.ref = "paging" } androidx-paging-compose = { group = "androidx.paging", name = "paging-compose", version.ref = "paging" } androidx-datastore-preferences = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "datastore" } androidx-work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "workmanager" } jetbrains-markdown = { group = "org.jetbrains", name = "markdown", version.ref = "markdown" } metadata-extractor = { module = "com.drewnoakes:metadata-extractor", version.ref = "metadataExtractor" } okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp" } okhttp-sse = { group = "com.squareup.okhttp3", name = "okhttp-sse", version.ref = "okhttp" } okhttp-logging = { group = "com.squareup.okhttp3", name = "logging-interceptor", version.ref = "okhttp" } retrofit = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" } retrofit-serialization-json = { group = "com.squareup.retrofit2", name = "converter-kotlinx-serialization", version.ref = "retrofit" } coil-compose = { group = "io.coil-kt.coil3", name = "coil-compose", version.ref = "coil" } coil-okhttp = { group = "io.coil-kt.coil3", name = "coil-network-okhttp", version.ref = "coil" } coil-svg = { group = "io.coil-kt.coil3", name = "coil-svg", version.ref = "coil" } quickjs = { group = "wang.harlon.quickjs", name = "wrapper-android", version.ref = "quickjs" } koin-bom = { group = "io.insert-koin", name = "koin-bom", version.ref = "koin-bom" } koin-android = { group = "io.insert-koin", name = "koin-android" } koin-compose = { group = "io.insert-koin", name = "koin-androidx-compose" } koin-androidx-workmanager = { group = "io.insert-koin", name = "koin-androidx-workmanager" } kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "serialization-json" } kotlinx-coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "kotlin-coroutines-core" } kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinx-datetime" } lucide-icons = { group = "com.composables", name = "icons-lucide", version.ref = "lucide-icons" } image-viewer = { group = "com.jvziyaoyao.scale", name = "image-viewer", version.ref = "image-viewer" } firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebase-bom" } firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics" } firebase-crashlytics = { group = "com.google.firebase", name = "firebase-crashlytics" } firebase-config = { group = "com.google.firebase", name = "firebase-config" } jsoup = { group = "org.jsoup", name = "jsoup", version.ref = "jsoup" } zxing-core = { group = "com.google.zxing", name = "core", version.ref = "zxing" } quickie-bundled = { group = "io.github.g00fy2.quickie", name = "quickie-bundled", version.ref = "quickie-bundled" } sonner = { module = "io.github.brdominguez:compose-sonner", version.ref = "sonner" } leakcanary-android = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanary" } reorderable = { module = "sh.calvin.reorderable:reorderable", version.ref = "reorderable" } commons-text = { module = "org.apache.commons:commons-text", version.ref = "commons-text" } modelcontextprotocol-kotlin-sdk = { module = "io.modelcontextprotocol:kotlin-sdk", version.ref = "mcp" } pebble = { module = "io.pebbletemplates:pebble", version.ref = "pebble" } androidx-browser = { group = "androidx.browser", name = "browser", version.ref = "browser" } androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } material = { group = "com.google.android.material", name = "material", version.ref = "material" } ucrop = { group = "com.github.yalantis", name = "ucrop", version.ref = "ucrop" } androidx-uiautomator = { group = "androidx.test.uiautomator", name = "uiautomator", version.ref = "uiautomator" } androidx-benchmark-macro-junit4 = { group = "androidx.benchmark", name = "benchmark-macro-junit4", version.ref = "benchmarkMacroJunit4" } androidx-profileinstaller = { group = "androidx.profileinstaller", name = "profileinstaller", version.ref = "profileinstaller" } ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" } ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" } ktor-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } android-library = { id = "com.android.library", version.ref = "agp" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } google-services = { id = "com.google.gms.google-services", version.ref = "google-services" } firebase-crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "firebase-crashlytics" } android-test = { id = "com.android.test", version.ref = "agp" } baselineprofile = { id = "androidx.baselineprofile", version.ref = "baselineprofile" }