mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-30 07:37:38 +00:00
A Linux desktop at 125% or 150% tells X11 apps through Xft.dpi, but AWT only takes whole scales there, so the app drew at 100%: sharp but too small. That is also what JetBrains suggests for blurry fractional scaling on Wayland (JBR-10582): XWayland with KDE's "legacy apps apply scaling themselves", which only works if the app scales itself. DesktopUiScale reads Xft.dpi (XSETTINGS, then the X resource database via JNA; AMETHYST_SCALE overrides) and AppWindow and the crash dialog raise Compose's density by what AWT left out. Measured on Xvfb at Xft.dpi 120: a 1-px checkerboard stays pure black and white at the right size. LocalDensity no longer equals AWT's scale there, so the two places that converted AWT coordinates with it (fullscreen overlay origin, gutter wheel redispatch) now read the component's own AWT scale. The default window size cap scales with it. Native Wayland, macOS and Windows are unchanged. JNA (LGPL-2.1+ or Apache-2.0, used under Apache-2.0) was already shipped through nestsClient; desktopApp now declares it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YFyERkpgRiWgXWyc5Jg7Xa
292 lines
22 KiB
TOML
292 lines
22 KiB
TOML
[versions]
|
|
# Amethyst app version — single source of truth consumed by both Android (amethyst/)
|
|
# and Desktop (desktopApp/). `appCode` is the Android versionCode: a monotonic
|
|
# integer that must increment on every release, even when `app` is unchanged.
|
|
app = "1.19.0"
|
|
appCode = "464"
|
|
accompanistAdaptive = "0.37.3"
|
|
# Pinned: 0.3.0 turns CacheMap.entries/keys/values into DeprecationLevel.ERROR (and
|
|
# throws UnsupportedOperationException at runtime), which breaks quartz's appleMain
|
|
# LargeCache/ConcurrentHashCache — they read those views directly and through the
|
|
# stdlib Map operators (filter/map/groupBy/associate/count). Bumping needs a port to
|
|
# the new forEach/forEachKey/forEachValue API, verified on an Apple target.
|
|
composeMultiplatform = "1.12.1"
|
|
activityCompose = "1.13.0"
|
|
# 9.4.0's PerModuleBundleTask rejects an AAB entry whose name contains a colon, which every
|
|
# .kotlin_module named after a Gradle project path has. Worked around in amethyst/build.gradle.kts
|
|
# (stripColonNamedEntries) rather than by pinning to 9.3.1; drop that block if AGP fixes it.
|
|
agp = "9.4.1"
|
|
android-compileSdk = "37"
|
|
android-minSdk = "26"
|
|
android-targetSdk = "37"
|
|
androidxJunit = "1.3.0"
|
|
appcompat = "1.8.0"
|
|
audiowaveform = "1.1.2"
|
|
benchmark = "1.5.0"
|
|
uiautomator = "2.4.0"
|
|
biometricKtx = "1.4.0-alpha02"
|
|
coil = "3.6.3"
|
|
composeBom = "2026.09.00"
|
|
tracingPerfetto = "1.0.1"
|
|
composeRuntimeAnnotation = "1.12.1"
|
|
coreKtx = "1.19.1"
|
|
datastore = "1.2.1"
|
|
devWhyolegCryptography = "0.6.0"
|
|
espressoCore = "3.7.0"
|
|
firebaseBom = "34.19.0"
|
|
fragmentKtx = "1.9.1"
|
|
gms = "4.5.0"
|
|
healthConnect = "1.1.0"
|
|
jackson = "2.22.3"
|
|
jacksonModuleKotlin = "2.22.3"
|
|
jna = "5.19.1"
|
|
javaKeyring = "1.0.4"
|
|
kmpTorRuntime = "2.6.0"
|
|
kmpTorResource = "409.5.0"
|
|
kodeinEmoji = "2.5.0"
|
|
junit = "4.13.2"
|
|
kchesslib = "1.0.5"
|
|
kotlin = "2.4.20"
|
|
kotlinxCollectionsImmutable = "0.5.2"
|
|
kotlinxCoroutinesCore = "1.11.0"
|
|
kotlinxSerialization = "1.11.0"
|
|
genaiProofreading = "1.0.0-beta1"
|
|
genaiPrompt = "1.0.0-beta4"
|
|
genaiRewriting = "1.0.0-beta1"
|
|
genaiImageDescription = "1.0.0-beta1"
|
|
languageId = "17.0.6"
|
|
lifecycleRuntimeKtx = "2.11.0"
|
|
lightcompressor-enhanced = "2.2.3"
|
|
jlatexmath = "1.5"
|
|
markdown = "4d3b3dd173"
|
|
highlights = "1.1.0"
|
|
okio = "3.18.2"
|
|
# JetBrains material3 must track Compose Multiplatform's foundation: CMP 1.12.0 changed
|
|
# the CustomStyle.applyStyle signature, so the stable 1.9.0 (and the 1.11.0-alpha07 that
|
|
# kodein-emoji pulls in) crash at runtime with AbstractMethodError in OutlinedTextField.
|
|
# 1.12.0-alpha03 is the first release built against foundation 1.12.x. Android keeps taking
|
|
# androidx material3 from composeBom; this ref only drives desktop/iOS.
|
|
material3 = "1.12.0-alpha03"
|
|
media3 = "1.11.1"
|
|
mockk = "1.14.11"
|
|
kotlinx-coroutines-test = "1.11.0"
|
|
negentropyKmp = "v1.2.0"
|
|
# Navigation 3, the Compose Multiplatform build (Apache-2.0): Android, desktop and iOS. The
|
|
# ViewModel decorator scopes each back-stack entry's ViewModels; match it to the lifecycle version.
|
|
navigation3 = "1.1.2"
|
|
# What navigation3-ui 1.1.2 resolves to; commonsUI skikoMain uses it directly for PlatformBackHandler.
|
|
jetbrainsNavigationevent = "1.1.0"
|
|
lifecycleNavigation3 = "2.11.0"
|
|
okhttp = "5.5.0"
|
|
osmdroid = "6.1.20"
|
|
runner = "1.7.0"
|
|
secp256k1KmpJniAndroid = "0.24.0"
|
|
schnorr256k1Kmp = "1.0.5"
|
|
securityCryptoKtx = "1.1.0"
|
|
slf4j = "2.0.20"
|
|
sonarqubeGradlePlugin = "7.5.0.8588"
|
|
spotless = "8.10.3"
|
|
streamWebrtcAndroid = "1.3.10"
|
|
translate = "17.0.3"
|
|
jetbrainsCompose = "1.12.1"
|
|
unifiedpush = "3.0.10"
|
|
playServicesCast = "22.3.1"
|
|
vico-charts-compose = "3.3.1"
|
|
zelory = "3.0.1"
|
|
pdfbox = "3.0.8"
|
|
zoomable = "2.16.0"
|
|
composemediaplayer = "0.11.4"
|
|
jcodec = "0.2.5"
|
|
commonsImaging = "1.0.0-alpha6"
|
|
thumbnailator = "0.4.21"
|
|
zxing = "3.5.4"
|
|
webkit = "1.17.1"
|
|
# Cross-process UI embedding (SurfaceControlViewHost wrapper) for the in-app browser surface. Apache-2.0.
|
|
privacysandboxUi = "1.0.0-alpha17"
|
|
windowCoreAndroid = "1.5.1"
|
|
workRuntime = "2.12.0"
|
|
androidxCamera = "1.6.2"
|
|
androidxCollection = "1.6.0"
|
|
androidxProfileinstaller = "1.4.1"
|
|
androidxExifinterface = "1.4.2"
|
|
kotlinTest = "2.4.20"
|
|
core = "1.7.0"
|
|
mavenPublish = "0.37.0"
|
|
sqlite = "2.7.1"
|
|
ktor = "3.6.0"
|
|
fourkoma = "1.2.0"
|
|
|
|
# Phase 2 (Gemini App Functions) — both still pre-stable as of May 2026.
|
|
# Scoped to the play flavor only (see amethyst/build.gradle.kts) so the
|
|
# fdroid channel doesn't pull in Google alpha dependencies.
|
|
# Capped by appfunctions-service: `appfunctions` and `appfunctions-compiler`
|
|
# publish alpha10, but -service stopped at alpha09, and all three share this
|
|
# ref. Check every artifact before bumping, not just the main one.
|
|
appfunctions = "1.0.0-alpha09"
|
|
ksp = "2.3.12"
|
|
|
|
[libraries]
|
|
abedElazizShe-video-compressor-fork = { group = "com.github.davotoula", name = "LightCompressor-enhanced", version.ref = "lightcompressor-enhanced" }
|
|
accompanist-adaptive = { group = "com.google.accompanist", name = "accompanist-adaptive", version.ref = "accompanistAdaptive" }
|
|
accompanist-permissions = { group = "com.google.accompanist", name = "accompanist-permissions", version.ref = "accompanistAdaptive" }
|
|
androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activityCompose" }
|
|
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
|
|
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
|
|
androidx-appfunctions = { group = "androidx.appfunctions", name = "appfunctions", version.ref = "appfunctions" }
|
|
androidx-appfunctions-service = { group = "androidx.appfunctions", name = "appfunctions-service", version.ref = "appfunctions" }
|
|
androidx-appfunctions-compiler = { group = "androidx.appfunctions", name = "appfunctions-compiler", version.ref = "appfunctions" }
|
|
androidx-benchmark-junit4 = { group = "androidx.benchmark", name = "benchmark-junit4", version.ref = "benchmark" }
|
|
androidx-benchmark-macro-junit4 = { group = "androidx.benchmark", name = "benchmark-macro-junit4", version.ref = "benchmark" }
|
|
androidx-biometric-ktx = { group = "androidx.biometric", name = "biometric-ktx", version.ref = "biometricKtx" }
|
|
androidx-camera-camera2 = { module = "androidx.camera:camera-camera2", version.ref = "androidxCamera" }
|
|
androidx-camera-core = { module = "androidx.camera:camera-core", version.ref = "androidxCamera" }
|
|
androidx-camera-extensions = { module = "androidx.camera:camera-extensions", 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 = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
|
|
androidx-compose-runtime-tracing = { group = "androidx.compose.runtime", name = "runtime-tracing" }
|
|
androidx-tracing-perfetto = { group = "androidx.tracing", name = "tracing-perfetto", version.ref = "tracingPerfetto" }
|
|
androidx-tracing-perfetto-binary = { group = "androidx.tracing", name = "tracing-perfetto-binary", version.ref = "tracingPerfetto" }
|
|
androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation" }
|
|
androidx-compose-runtime-annotation = { group = "androidx.compose.runtime", name = "runtime-annotation", version.ref = "composeRuntimeAnnotation" }
|
|
androidx-collection = { group = "androidx.collection", name = "collection", version.ref = "androidxCollection" }
|
|
androidx-exifinterface = { group = "androidx.exifinterface", name = "exifinterface", version.ref = "androidxExifinterface" }
|
|
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
|
|
androidx-profileinstaller = { group = "androidx.profileinstaller", name = "profileinstaller", version.ref = "androidxProfileinstaller" }
|
|
androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "datastore" }
|
|
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
|
|
androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "fragmentKtx" }
|
|
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidxJunit" }
|
|
androidx-junit-ktx = { group = "androidx.test.ext", name = "junit-ktx", version.ref = "androidxJunit" }
|
|
androidx-lifecycle-runtime-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "lifecycleRuntimeKtx" }
|
|
androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
|
|
androidx-lifecycle-viewmodel = { group = "androidx.lifecycle", name = "lifecycle-viewmodel", version.ref = "lifecycleRuntimeKtx" }
|
|
androidx-lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "lifecycleRuntimeKtx" }
|
|
androidx-material3 = { group = "androidx.compose.material3", name = "material3" }
|
|
androidx-material3-windowSize = { group = "androidx.compose.material3", name = "material3-window-size-class" }
|
|
androidx-media3-datasource-okhttp = { group = "androidx.media3", name = "media3-datasource-okhttp", version.ref = "media3" }
|
|
androidx-media3-exoplayer = { group = "androidx.media3", name = "media3-exoplayer", version.ref = "media3" }
|
|
androidx-media3-exoplayer-hls = { group = "androidx.media3", name = "media3-exoplayer-hls", version.ref = "media3" }
|
|
androidx-media3-session = { group = "androidx.media3", name = "media3-session", version.ref = "media3" }
|
|
androidx-media3-ui-compose-material3 = { group = "androidx.media3", name = "media3-ui-compose-material3", version.ref = "media3" }
|
|
jetbrains-navigation3-ui = { module = "org.jetbrains.androidx.navigation3:navigation3-ui", version.ref = "navigation3" }
|
|
jetbrains-navigationevent-compose = { module = "org.jetbrains.androidx.navigationevent:navigationevent-compose", version.ref = "jetbrainsNavigationevent" }
|
|
jetbrains-lifecycle-viewmodel-navigation3 = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-navigation3", version.ref = "lifecycleNavigation3" }
|
|
androidx-runner = { group = "androidx.test", name = "runner", version.ref = "runner" }
|
|
androidx-uiautomator = { group = "androidx.test.uiautomator", name = "uiautomator", version.ref = "uiautomator" }
|
|
androidx-security-crypto-ktx = { group = "androidx.security", name = "security-crypto-ktx", version.ref = "securityCryptoKtx" }
|
|
androidx-ui = { group = "androidx.compose.ui", name = "ui" }
|
|
androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
|
|
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-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
|
|
androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
|
|
audiowaveform = { group = "com.github.lincollincol", name = "compose-audiowaveform", version.ref = "audiowaveform" }
|
|
coil-compose = { group = "io.coil-kt.coil3", name = "coil-compose", version.ref = "coil" }
|
|
coil-gif = { group = "io.coil-kt.coil3", name = "coil-gif", version.ref = "coil" }
|
|
coil-svg = { group = "io.coil-kt.coil3", name = "coil-svg", version.ref = "coil" }
|
|
coil-network-core = { group = "io.coil-kt.coil3", name = "coil-network-core", version.ref = "coil" }
|
|
coil-okhttp = { group = "io.coil-kt.coil3", name = "coil-network-okhttp", version.ref = "coil" }
|
|
coil-video = { group = "io.coil-kt.coil3", name = "coil-video", version.ref = "coil" }
|
|
commons-imaging = { group = "org.apache.commons", name = "commons-imaging", version.ref = "commonsImaging" }
|
|
thumbnailator = { group = "net.coobird", name = "thumbnailator", version.ref = "thumbnailator" }
|
|
slf4j-nop = { module = "org.slf4j:slf4j-nop", version.ref = "slf4j" }
|
|
composemediaplayer = { group = "io.github.kdroidfilter", name = "composemediaplayer", version.ref = "composemediaplayer" }
|
|
jcodec = { group = "org.jcodec", name = "jcodec", version.ref = "jcodec" }
|
|
jcodec-javase = { group = "org.jcodec", name = "jcodec-javase", version.ref = "jcodec" }
|
|
dev-whyoleg-cryptography-provider-optimal = { module = "dev.whyoleg.cryptography:cryptography-provider-optimal", version.ref = "devWhyolegCryptography" }
|
|
firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebaseBom" }
|
|
firebase-messaging = { group = "com.google.firebase", name = "firebase-messaging" }
|
|
jetbrains-compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "jetbrainsCompose" }
|
|
jetbrains-compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "jetbrainsCompose" }
|
|
jetbrains-compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "material3" }
|
|
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-tooling-preview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "jetbrainsCompose" }
|
|
jetbrains-compose-ui-test-junit4 = { module = "org.jetbrains.compose.ui:ui-test-junit4", version.ref = "jetbrainsCompose" }
|
|
google-mlkit-genai-proofreading = { group = "com.google.mlkit", name = "genai-proofreading", version.ref = "genaiProofreading" }
|
|
google-mlkit-genai-prompt = { group = "com.google.mlkit", name = "genai-prompt", version.ref = "genaiPrompt" }
|
|
google-mlkit-genai-rewriting = { group = "com.google.mlkit", name = "genai-rewriting", version.ref = "genaiRewriting" }
|
|
google-mlkit-genai-image-description = { group = "com.google.mlkit", name = "genai-image-description", version.ref = "genaiImageDescription" }
|
|
google-mlkit-language-id = { group = "com.google.mlkit", name = "language-id", version.ref = "languageId" }
|
|
google-mlkit-translate = { group = "com.google.mlkit", name = "translate", version.ref = "translate" }
|
|
jackson-databind = { group = "com.fasterxml.jackson.core", name = "jackson-databind", version.ref = "jackson" }
|
|
jackson-module-kotlin = { group = "com.fasterxml.jackson.module", name = "jackson-module-kotlin", version.ref = "jacksonModuleKotlin" }
|
|
jna = { group = "net.java.dev.jna", name = "jna", version.ref = "jna" }
|
|
java-keyring = { group = "com.github.javakeyring", name = "java-keyring", version.ref = "javaKeyring" }
|
|
kmp-tor-runtime = { group = "io.matthewnelson.kmp-tor", name = "runtime", version.ref = "kmpTorRuntime" }
|
|
kmp-tor-resource-exec-tor = { group = "io.matthewnelson.kmp-tor", name = "resource-exec-tor", version.ref = "kmpTorResource" }
|
|
kodein-emoji-compose-m3 = { group = "org.kodein.emoji", name = "emoji-compose-m3", version.ref = "kodeinEmoji" }
|
|
junit = { group = "junit", name = "junit", version.ref = "junit" }
|
|
kchesslib = { module = "io.github.cvb941:kchesslib", version.ref = "kchesslib" }
|
|
kotlinx-collections-immutable = { group = "org.jetbrains.kotlinx", name = "kotlinx-collections-immutable", version.ref = "kotlinxCollectionsImmutable" }
|
|
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinxCoroutinesCore" }
|
|
kotlinx-coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinxCoroutinesCore" }
|
|
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerialization" }
|
|
kotlinx-serialization-cbor = { module = "org.jetbrains.kotlinx:kotlinx-serialization-cbor", version.ref = "kotlinxSerialization" }
|
|
jlatexmath-android = { 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" }
|
|
markdown-commonmark = { group = "com.github.vitorpamplona.compose-richtext", name = "richtext-commonmark", version.ref = "markdown" }
|
|
markdown-ui = { group = "com.github.vitorpamplona.compose-richtext", name = "richtext-ui", version.ref = "markdown" }
|
|
markdown-ui-material3 = { group = "com.github.vitorpamplona.compose-richtext", name = "richtext-ui-material3", version.ref = "markdown" }
|
|
highlights = { group = "dev.snipme", name = "highlights", version.ref = "highlights" }
|
|
okio = { group = "com.squareup.okio", name = "okio", version.ref = "okio" }
|
|
mockk = { group = "io.mockk", name = "mockk", version.ref = "mockk" }
|
|
mockk-android = { group = "io.mockk", name = "mockk-android", version.ref = "mockk" }
|
|
kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinx-coroutines-test"}
|
|
negentropy-kmp = { module = "com.vitorpamplona.negentropy:kmp-negentropy", version.ref = "negentropyKmp" }
|
|
okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp" }
|
|
okhttpCoroutines = { group = "com.squareup.okhttp3", name = "okhttp-coroutines", version.ref = "okhttp" }
|
|
osmdroid-android = { group = "org.osmdroid", name = "osmdroid-android", version.ref = "osmdroid" }
|
|
ktor-server-core = { group = "io.ktor", name = "ktor-server-core", version.ref = "ktor" }
|
|
ktor-server-cio = { group = "io.ktor", name = "ktor-server-cio", version.ref = "ktor" }
|
|
ktor-server-websockets = { group = "io.ktor", name = "ktor-server-websockets", version.ref = "ktor" }
|
|
fourkoma = { module = "cc.ekblad:4koma", version.ref = "fourkoma" }
|
|
secp256k1-kmp-common = { group = "fr.acinq.secp256k1", name = "secp256k1-kmp", version.ref = "secp256k1KmpJniAndroid" }
|
|
secp256k1-kmp-jni-android = { group = "fr.acinq.secp256k1", name = "secp256k1-kmp-jni-android", version.ref = "secp256k1KmpJniAndroid" }
|
|
secp256k1-kmp-jni-jvm = { group = "fr.acinq.secp256k1", name = "secp256k1-kmp-jni-jvm", version.ref = "secp256k1KmpJniAndroid" }
|
|
schnorr256k1-kmp = { group = "com.vitorpamplona.schnorr256k1", name = "schnorr256k1-kmp", version.ref = "schnorr256k1Kmp" }
|
|
# Build-time only, gated behind the local.properties sonar opt-in in the root build script (LGPL-3.0).
|
|
sonarqube-gradle-plugin = { group = "org.sonarsource.scanner.gradle", name = "sonarqube-gradle-plugin", version.ref = "sonarqubeGradlePlugin" }
|
|
stream-webrtc-android = { group = "io.getstream", name = "stream-webrtc-android", version.ref = "streamWebrtcAndroid" }
|
|
unifiedpush = { group = "com.github.UnifiedPush", name = "android-connector", version.ref = "unifiedpush" }
|
|
play-services-cast-framework = { group = "com.google.android.gms", name = "play-services-cast-framework", version.ref = "playServicesCast" }
|
|
vico-charts-compose = { group = "com.patrykandpatrick.vico", name = "compose", version.ref = "vico-charts-compose" }
|
|
androidx-webkit = { group = "androidx.webkit", name = "webkit", version.ref = "webkit" }
|
|
androidx-privacysandbox-ui-core = { group = "androidx.privacysandbox.ui", name = "ui-core", version.ref = "privacysandboxUi" }
|
|
androidx-privacysandbox-ui-client = { group = "androidx.privacysandbox.ui", name = "ui-client", version.ref = "privacysandboxUi" }
|
|
androidx-privacysandbox-ui-provider = { group = "androidx.privacysandbox.ui", name = "ui-provider", version.ref = "privacysandboxUi" }
|
|
vico-charts-m3 = { group = "com.patrykandpatrick.vico", name = "compose-m3", version.ref = "vico-charts-compose" }
|
|
zelory-image-compressor = { group = "id.zelory", name = "compressor", version.ref = "zelory" }
|
|
pdfbox = { group = "org.apache.pdfbox", name = "pdfbox", version.ref = "pdfbox" }
|
|
zoomable = { group = "net.engawapg.lib", name = "zoomable", version.ref = "zoomable" }
|
|
zxing = { group = "com.google.zxing", name = "core", version.ref = "zxing" }
|
|
androidx-window-core-android = { group = "androidx.window", name = "window-core-android", version.ref = "windowCoreAndroid" }
|
|
kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" }
|
|
kotlin-test = { group = "org.jetbrains.kotlin", name = "kotlin-test", version.ref = "kotlinTest" }
|
|
androidx-core = { group = "androidx.test", name = "core", version.ref = "core" }
|
|
androidx-sqlite = { group = "androidx.sqlite", name = "sqlite", version.ref = "sqlite" }
|
|
androidx-sqlite-bundled = { module = "androidx.sqlite:sqlite-bundled", version.ref = "sqlite" }
|
|
androidx-sqlite-bundled-jvm = { module = "androidx.sqlite:sqlite-bundled-jvm", version.ref = "sqlite" }
|
|
androidx-work-runtime-ktx = { group = "androidx.work", name = "work-runtime-ktx", version.ref = "workRuntime" }
|
|
androidx-health-connect-client = { group = "androidx.health.connect", name = "connect-client", version.ref = "healthConnect" }
|
|
|
|
[plugins]
|
|
androidApplication = { id = "com.android.application", version.ref = "agp" }
|
|
androidBenchmark = { id = "androidx.benchmark", version.ref = "benchmark" }
|
|
androidLibrary = { id = "com.android.library", version.ref = "agp" }
|
|
androidTest = { id = "com.android.test", version.ref = "agp" }
|
|
androidxBaselineProfile = { id = "androidx.baselineprofile", version.ref = "benchmark" }
|
|
diffplugSpotless = { id = "com.diffplug.spotless", version.ref = "spotless" }
|
|
googleServices = { id = "com.google.gms.google-services", version.ref = "gms" }
|
|
jetbrainsKotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
|
|
jetbrainsComposeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
|
|
serialization = { id = 'org.jetbrains.kotlin.plugin.serialization', version.ref = 'kotlin' }
|
|
kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
|
|
androidKotlinMultiplatformLibrary = { id = "com.android.kotlin.multiplatform.library", version.ref = "agp" }
|
|
vanniktech-mavenPublish = { id = "com.vanniktech.maven.publish", version.ref = "mavenPublish" }
|
|
composeMultiplatform = { id = "org.jetbrains.compose", version.ref = "composeMultiplatform" }
|
|
googleKsp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
|