Complete Kotlin Multiplatform migration with iOS parity: - All 13 modules converted to KMP (commonMain + androidMain + iosMain) - 100% feature parity: auth, chat, SSE streaming, conversations, settings, agents, files, voice input, TTS, OAuth, file picker, clipboard paste - Platform consolidation: DataStore path, SessionCacheCleaner, bubble layouts, ChatInput core, MIME types, mention parsing, TextField styling, FilterChip components extracted to commonMain - iOS crash reporting via Kotlin/Native exception hook - YAML parsing via custom pure-Kotlin parser (zero dependencies) - Dependency health: Timber removed, kaml replaced, FuzzyWuzzy removed, security-crypto stabilized - CONTRIBUTING.md - Gradle configuration cache enabled
71 lines
2.4 KiB
Text
71 lines
2.4 KiB
Text
plugins {
|
|
`kotlin-dsl`
|
|
}
|
|
|
|
dependencies {
|
|
compileOnly(libs.android.gradlePlugin)
|
|
compileOnly(libs.kotlin.gradlePlugin)
|
|
compileOnly(libs.compose.gradlePlugin)
|
|
compileOnly(libs.compose.multiplatform.gradlePlugin)
|
|
compileOnly(libs.ksp.gradlePlugin)
|
|
compileOnly(libs.room.gradlePlugin)
|
|
compileOnly(libs.detekt.gradlePlugin)
|
|
compileOnly(libs.kover.gradlePlugin)
|
|
}
|
|
|
|
gradlePlugin {
|
|
plugins {
|
|
register("androidApplication") {
|
|
id = "librechat.android.application"
|
|
implementationClass = "AndroidApplicationConventionPlugin"
|
|
}
|
|
register("androidLibrary") {
|
|
id = "librechat.android.library"
|
|
implementationClass = "AndroidLibraryConventionPlugin"
|
|
}
|
|
register("androidCompose") {
|
|
id = "librechat.android.compose"
|
|
implementationClass = "AndroidComposeConventionPlugin"
|
|
}
|
|
register("androidFeature") {
|
|
id = "librechat.android.feature"
|
|
implementationClass = "AndroidFeatureConventionPlugin"
|
|
}
|
|
register("androidRoom") {
|
|
id = "librechat.android.room"
|
|
implementationClass = "AndroidRoomConventionPlugin"
|
|
}
|
|
register("androidKoin") {
|
|
id = "librechat.android.koin"
|
|
implementationClass = "AndroidKoinConventionPlugin"
|
|
}
|
|
register("kotlinSerialization") {
|
|
id = "librechat.kotlin.serialization"
|
|
implementationClass = "KotlinSerializationConventionPlugin"
|
|
}
|
|
register("androidDetekt") {
|
|
id = "librechat.android.detekt"
|
|
implementationClass = "AndroidDetektConventionPlugin"
|
|
}
|
|
register("kmpLibrary") {
|
|
id = "librechat.kmp.library"
|
|
implementationClass = "KmpLibraryConventionPlugin"
|
|
}
|
|
register("kmpCompose") {
|
|
id = "librechat.kmp.compose"
|
|
implementationClass = "KmpComposeConventionPlugin"
|
|
}
|
|
register("kmpKoin") {
|
|
id = "librechat.kmp.koin"
|
|
implementationClass = "KmpKoinConventionPlugin"
|
|
}
|
|
register("kmpRoom") {
|
|
id = "librechat.kmp.room"
|
|
implementationClass = "KmpRoomConventionPlugin"
|
|
}
|
|
register("kmpFeature") {
|
|
id = "librechat.kmp.feature"
|
|
implementationClass = "KmpFeatureConventionPlugin"
|
|
}
|
|
}
|
|
}
|