feat: add detekt-koin, .editorconfig, GitHub Actions CI for android + ios
This commit is contained in:
parent
1f252790e2
commit
b4872e4de0
32 changed files with 789 additions and 41 deletions
31
.editorconfig
Normal file
31
.editorconfig
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
indent_style = space
|
||||
|
||||
[*.{kt,kts}]
|
||||
indent_size = 4
|
||||
max_line_length = 140
|
||||
ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL
|
||||
ij_kotlin_packages_to_use_import_on_demand = unset
|
||||
ij_kotlin_name_count_to_use_star_import = 999
|
||||
ij_kotlin_name_count_to_use_star_import_for_members = 999
|
||||
|
||||
[*.xml]
|
||||
indent_size = 4
|
||||
|
||||
[*.{yml,yaml}]
|
||||
indent_size = 2
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.properties]
|
||||
indent_size = 4
|
||||
|
||||
[*.toml]
|
||||
indent_size = 4
|
||||
43
.github/CLAUDE.md
vendored
43
.github/CLAUDE.md
vendored
|
|
@ -1,31 +1,42 @@
|
|||
# GitHub CI/CD
|
||||
|
||||
## Workflow: Android CI
|
||||
## Workflow: CI
|
||||
|
||||
File: `.github/workflows/android.yml`
|
||||
File: `.github/workflows/ci.yml`
|
||||
|
||||
### Triggers
|
||||
|
||||
- Push to `main` or `develop`
|
||||
- Pull requests targeting `main`
|
||||
- Push to `develop`
|
||||
- Pull requests targeting `develop`
|
||||
|
||||
### Pipeline Steps
|
||||
### Jobs
|
||||
|
||||
1. Checkout code
|
||||
2. Set up JDK 17 (Temurin)
|
||||
3. Setup Gradle with caching (`~/.gradle/caches` and `~/.gradle/wrapper`)
|
||||
4. `./gradlew lint` -- Android lint checks
|
||||
5. `./gradlew test` -- unit tests across all modules
|
||||
6. `./gradlew assembleDebug` -- build debug APK
|
||||
7. Upload `app/build/outputs/apk/debug/app-debug.apk` as artifact (named `debug-apk`)
|
||||
#### `lint`
|
||||
- `./gradlew detekt detektMetadataCommonMain :app:lint --continue`
|
||||
- Uploads merged detekt SARIF to GitHub Code Scanning + lint HTML report
|
||||
|
||||
#### `test`
|
||||
- `./gradlew test`
|
||||
- Uploads test results XML
|
||||
|
||||
#### `android` (Build Android App)
|
||||
- `./gradlew :app:assembleDebug`
|
||||
|
||||
#### `ios` (Build iOS App)
|
||||
- Selects latest stable Xcode
|
||||
- Caches `~/.konan`
|
||||
- Builds shared KMP framework via `./gradlew :shared:linkDebugFrameworkIosSimulatorArm64`
|
||||
- Runs `xcodebuild` for the iOS simulator (arm64-only, no signing)
|
||||
|
||||
### Environment
|
||||
|
||||
- Runs on `ubuntu-latest`
|
||||
- Gradle cache key based on `**/*.gradle*` and `gradle-wrapper.properties`
|
||||
- `lint` + `test` + `android` jobs: `ubuntu-latest`, JDK 21
|
||||
- `ios` job: `macos-latest` (Apple Silicon — required since there's no `iosSimulatorX64` target), JDK 21
|
||||
- Concurrency: cancels in-progress runs for same branch
|
||||
|
||||
### Notes
|
||||
|
||||
- No release signing configured yet (debug builds only)
|
||||
- No release signing configured yet
|
||||
- No instrumented/UI tests in CI (only unit tests)
|
||||
- APK artifact is available for download from the Actions run summary
|
||||
- APK / iOS app are built but NOT uploaded as artifacts
|
||||
- Detekt SARIF is uploaded to GitHub Code Scanning (requires GitHub Advanced Security for private repos)
|
||||
|
|
|
|||
143
.github/workflows/ci.yml
vendored
Normal file
143
.github/workflows/ci.yml
vendored
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ develop ]
|
||||
pull_request:
|
||||
branches: [ develop ]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
name: Lint
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: 21
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v5
|
||||
|
||||
- name: Run lint
|
||||
run: ./gradlew detekt detektMetadataCommonMain :app:lint --continue
|
||||
|
||||
- name: Upload detekt SARIF
|
||||
if: always() && hashFiles('build/reports/detekt/merged.sarif') != ''
|
||||
uses: github/codeql-action/upload-sarif@v4
|
||||
with:
|
||||
sarif_file: build/reports/detekt/merged.sarif
|
||||
category: detekt
|
||||
|
||||
- name: Upload lint report
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: lint-report
|
||||
path: app/build/reports/lint-results-debug.html
|
||||
if-no-files-found: ignore
|
||||
|
||||
test:
|
||||
name: Test
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: 21
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v5
|
||||
|
||||
- name: Run tests
|
||||
run: ./gradlew test
|
||||
|
||||
- name: Upload test results
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: test-results
|
||||
path: '**/build/test-results/test*/TEST-*.xml'
|
||||
if-no-files-found: ignore
|
||||
|
||||
android:
|
||||
name: Build Android App
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: 21
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v5
|
||||
|
||||
- name: Build debug APK
|
||||
run: ./gradlew :app:assembleDebug
|
||||
|
||||
ios:
|
||||
name: Build iOS App
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Select Xcode
|
||||
uses: maxim-lobanov/setup-xcode@v1
|
||||
with:
|
||||
xcode-version: latest-stable
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: 21
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v5
|
||||
|
||||
- name: Cache Kotlin/Native toolchain
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: ~/.konan
|
||||
key: ${{ runner.os }}-konan-${{ hashFiles('gradle/libs.versions.toml') }}
|
||||
restore-keys: ${{ runner.os }}-konan-
|
||||
|
||||
- name: Build shared KMP framework
|
||||
run: ./gradlew :shared:linkDebugFrameworkIosSimulatorArm64
|
||||
|
||||
- name: Build iOS app
|
||||
run: |
|
||||
xcodebuild -project iosApp/iosApp.xcodeproj \
|
||||
-scheme iosApp \
|
||||
-sdk iphonesimulator \
|
||||
-destination 'generic/platform=iOS Simulator' \
|
||||
-configuration Debug \
|
||||
build \
|
||||
CODE_SIGNING_ALLOWED=NO \
|
||||
ARCHS=arm64 \
|
||||
ONLY_ACTIVE_ARCH=YES
|
||||
13
app/detekt-baseline.xml
Normal file
13
app/detekt-baseline.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues/>
|
||||
<CurrentIssues>
|
||||
<ID>LambdaParameterInRestartableEffect:LibreChatNavHost.kt$onDeepLinkConsumed</ID>
|
||||
<ID>MutableStateAutoboxing:MainActivity.kt$MainActivity$mutableStateOf(0)</ID>
|
||||
<ID>ParameterNaming:LibreChatNavHost.kt$onDeepLinkConsumed</ID>
|
||||
<ID>ViewModelForwarding:TabletLayout.kt$MainContent( navigator = navigator, navHostViewModel = navHostViewModel, isInAuthFlow = false, banners = banners, dismissedBannerIds = dismissedBannerIds, onToggleDrawer = { navHostViewModel.setTabletSidebarOpen(!isSidebarOpen) }, )</ID>
|
||||
<ID>ViewModelForwarding:TabletLayout.kt$MainContent( navigator = navigator, navHostViewModel = navHostViewModel, isInAuthFlow = true, banners = banners, dismissedBannerIds = dismissedBannerIds, onToggleDrawer = {}, modifier = Modifier.fillMaxSize(), )</ID>
|
||||
<ID>ViewModelForwarding:TabletLayout.kt$MainNavDisplay( navigator = navigator, navHostViewModel = navHostViewModel, onMenuClick = onToggleDrawer, modifier = Modifier.fillMaxSize(), )</ID>
|
||||
<ID>ViewModelForwarding:TabletLayout.kt$SidebarScaffold( viewModel = navHostViewModel, onNewChat = { if (navigator.currentRoute !is NewChat) { navigator.navigateToTopLevel(NewChat) } }, onConversationClick = { conversationId -> navigator.navigateToChat(conversationId) }, onSettingsClick = { navigator.navigate(SettingsTabbed) }, onSettingsCategorySelected = { category -> navigator.navigate(category.toRoute()) }, onAgentsClick = { navigator.navigate(AgentMarketplace) }, onFilesClick = { navigator.navigate(Files) }, modifier = Modifier .width(SidebarWidth) .fillMaxHeight(), )</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
package com.garfiec.librechat
|
||||
|
||||
import android.app.Application
|
||||
import co.touchlab.kermit.Logger
|
||||
import coil3.ImageLoader
|
||||
import coil3.SingletonImageLoader
|
||||
import coil3.disk.DiskCache
|
||||
|
|
@ -20,15 +21,16 @@ import com.garfiec.librechat.feature.files.di.filesModule
|
|||
import com.garfiec.librechat.feature.settings.di.settingsModule
|
||||
import com.garfiec.librechat.shared.navigation.sharedAppModule
|
||||
import io.ktor.client.HttpClient
|
||||
import org.koin.android.ext.android.get
|
||||
import org.koin.android.ext.android.inject
|
||||
import org.koin.android.ext.koin.androidContext
|
||||
import org.koin.android.ext.koin.androidLogger
|
||||
import org.koin.core.context.startKoin
|
||||
import org.koin.core.logger.Level
|
||||
import co.touchlab.kermit.Logger
|
||||
|
||||
class LibreChatApplication : Application(), SingletonImageLoader.Factory {
|
||||
|
||||
private val httpClient: HttpClient by inject()
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
try {
|
||||
|
|
@ -59,8 +61,6 @@ class LibreChatApplication : Application(), SingletonImageLoader.Factory {
|
|||
}
|
||||
|
||||
override fun newImageLoader(context: coil3.PlatformContext): ImageLoader {
|
||||
val httpClient: HttpClient = get()
|
||||
|
||||
return ImageLoader.Builder(context)
|
||||
.components {
|
||||
add(KtorNetworkFetcherFactory(httpClient))
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ import androidx.compose.ui.res.stringResource
|
|||
import androidx.compose.ui.unit.dp
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.garfiec.librechat.core.common.network.ConnectivityObserver
|
||||
import com.garfiec.librechat.core.data.datastore.ThemeDataStore
|
||||
import com.garfiec.librechat.core.data.datastore.ThemeMode
|
||||
|
|
@ -40,7 +41,6 @@ import com.garfiec.librechat.feature.chat.ShareIntentConsumer
|
|||
import com.garfiec.librechat.feature.chat.SharedContent
|
||||
import com.garfiec.librechat.navigation.LibreChatNavHost
|
||||
import org.koin.android.ext.android.inject
|
||||
import co.touchlab.kermit.Logger
|
||||
|
||||
class MainActivity : ComponentActivity() {
|
||||
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@ import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
|
|||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.ui.Modifier
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.garfiec.librechat.MainActivity
|
||||
import com.garfiec.librechat.shared.navigation.LibreChatNavHost as SharedLibreChatNavHost
|
||||
import com.garfiec.librechat.shared.navigation.PhoneLayout
|
||||
import com.garfiec.librechat.feature.chat.navigation.Chat
|
||||
import com.garfiec.librechat.feature.chat.navigation.NewChat
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.garfiec.librechat.shared.navigation.PhoneLayout
|
||||
import com.garfiec.librechat.shared.navigation.LibreChatNavHost as SharedLibreChatNavHost
|
||||
|
||||
/**
|
||||
* Android-specific entry point that wraps the shared [SharedLibreChatNavHost]
|
||||
|
|
|
|||
|
|
@ -28,15 +28,15 @@ import androidx.compose.ui.unit.dp
|
|||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.garfiec.librechat.core.model.Banner
|
||||
import com.garfiec.librechat.core.ui.components.BannerDisplay
|
||||
import com.garfiec.librechat.shared.navigation.NavHostViewModel
|
||||
import com.garfiec.librechat.shared.navigation.Navigator
|
||||
import com.garfiec.librechat.shared.navigation.MainNavDisplay
|
||||
import com.garfiec.librechat.shared.navigation.SidebarScaffold
|
||||
import com.garfiec.librechat.shared.navigation.toRoute
|
||||
import com.garfiec.librechat.feature.agents.navigation.AgentMarketplace
|
||||
import com.garfiec.librechat.feature.chat.navigation.NewChat
|
||||
import com.garfiec.librechat.feature.files.navigation.Files
|
||||
import com.garfiec.librechat.feature.settings.navigation.SettingsTabbed
|
||||
import com.garfiec.librechat.shared.navigation.MainNavDisplay
|
||||
import com.garfiec.librechat.shared.navigation.NavHostViewModel
|
||||
import com.garfiec.librechat.shared.navigation.Navigator
|
||||
import com.garfiec.librechat.shared.navigation.SidebarScaffold
|
||||
import com.garfiec.librechat.shared.navigation.toRoute
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
private val SidebarWidth = 320.dp
|
||||
|
|
|
|||
|
|
@ -68,11 +68,11 @@ import com.garfiec.librechat.feature.settings.di.settingsModule
|
|||
import com.garfiec.librechat.shared.navigation.sharedAppModule
|
||||
import kotlinx.coroutines.CoroutineDispatcher
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import java.io.File
|
||||
import org.junit.Test
|
||||
import org.koin.core.annotation.KoinExperimentalAPI
|
||||
import org.koin.core.module.Module
|
||||
import org.koin.test.verify.verify
|
||||
import java.io.File
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
class KoinGraphVerificationTest {
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@ package com.garfiec.librechat.navigation
|
|||
|
||||
import androidx.navigation3.runtime.NavBackStack
|
||||
import androidx.navigation3.runtime.NavKey
|
||||
import com.garfiec.librechat.shared.navigation.Navigator
|
||||
import com.garfiec.librechat.feature.agents.navigation.AgentMarketplace
|
||||
import com.garfiec.librechat.feature.auth.navigation.Login
|
||||
import com.garfiec.librechat.feature.auth.navigation.ServerUrl
|
||||
import com.garfiec.librechat.feature.chat.navigation.Chat
|
||||
import com.garfiec.librechat.feature.chat.navigation.NewChat
|
||||
import com.garfiec.librechat.feature.settings.navigation.SettingsTabbed
|
||||
import com.garfiec.librechat.shared.navigation.Navigator
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertNull
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ Convention plugins that apply consistent Gradle configuration across all modules
|
|||
| `librechat.mobile.koin` | `AndroidKoinConventionPlugin` | Koin core + Android dependencies |
|
||||
| `librechat.mobile.feature` | `AndroidFeatureConventionPlugin` | Auto-applies: library + compose + koin + serialization + Nav 3 |
|
||||
| `librechat.mobile.room` | `AndroidRoomConventionPlugin` | Room + KSP, schema export config |
|
||||
| `librechat.mobile.detekt` | `AndroidDetektConventionPlugin` | Detekt static analysis |
|
||||
| `librechat.detekt` | `DetektConventionPlugin` | Detekt static analysis (cross-platform, applied to all modules) |
|
||||
|
||||
### KMP
|
||||
| Plugin ID | Class | What it does |
|
||||
|
|
|
|||
|
|
@ -43,9 +43,9 @@ gradlePlugin {
|
|||
id = "librechat.kotlin.serialization"
|
||||
implementationClass = "KotlinSerializationConventionPlugin"
|
||||
}
|
||||
register("androidDetekt") {
|
||||
id = "librechat.mobile.detekt"
|
||||
implementationClass = "AndroidDetektConventionPlugin"
|
||||
register("detekt") {
|
||||
id = "librechat.detekt"
|
||||
implementationClass = "DetektConventionPlugin"
|
||||
}
|
||||
register("kmpLibrary") {
|
||||
id = "librechat.kmp.library"
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ class AndroidApplicationConventionPlugin : Plugin<Project> {
|
|||
with(target) {
|
||||
pluginManager.apply("com.android.application")
|
||||
pluginManager.apply("org.jetbrains.kotlin.android")
|
||||
pluginManager.apply("librechat.mobile.detekt")
|
||||
pluginManager.apply("librechat.detekt")
|
||||
pluginManager.apply("org.jetbrains.kotlinx.kover")
|
||||
|
||||
extensions.configure<KotlinAndroidProjectExtension> {
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
|
|||
with(target) {
|
||||
pluginManager.apply("com.android.library")
|
||||
pluginManager.apply("org.jetbrains.kotlin.android")
|
||||
pluginManager.apply("librechat.mobile.detekt")
|
||||
pluginManager.apply("librechat.detekt")
|
||||
pluginManager.apply("org.jetbrains.kotlinx.kover")
|
||||
|
||||
extensions.configure<KotlinAndroidProjectExtension> {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import org.gradle.api.Project
|
|||
import org.gradle.kotlin.dsl.configure
|
||||
import org.gradle.kotlin.dsl.dependencies
|
||||
|
||||
class AndroidDetektConventionPlugin : Plugin<Project> {
|
||||
class DetektConventionPlugin : Plugin<Project> {
|
||||
override fun apply(target: Project) {
|
||||
with(target) {
|
||||
pluginManager.apply("io.gitlab.arturbosch.detekt")
|
||||
|
|
@ -14,10 +14,13 @@ class AndroidDetektConventionPlugin : Plugin<Project> {
|
|||
buildUponDefaultConfig = true
|
||||
allRules = false
|
||||
parallel = true
|
||||
baseline = file("detekt-baseline.xml")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
add("detektPlugins", libs.findLibrary("detekt-formatting").get())
|
||||
add("detektPlugins", libs.findLibrary("detekt-koin").get())
|
||||
add("detektPlugins", libs.findLibrary("detekt-compose").get())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -9,7 +9,7 @@ class KmpLibraryConventionPlugin : Plugin<Project> {
|
|||
with(target) {
|
||||
pluginManager.apply("com.android.library")
|
||||
pluginManager.apply("org.jetbrains.kotlin.multiplatform")
|
||||
pluginManager.apply("librechat.mobile.detekt")
|
||||
pluginManager.apply("librechat.detekt")
|
||||
pluginManager.apply("org.jetbrains.kotlinx.kover")
|
||||
|
||||
extensions.configure<KotlinMultiplatformExtension> {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
import io.gitlab.arturbosch.detekt.Detekt
|
||||
import io.gitlab.arturbosch.detekt.report.ReportMergeTask
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.android.application) apply false
|
||||
alias(libs.plugins.android.library) apply false
|
||||
|
|
@ -20,3 +23,19 @@ dependencies {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
val detektReportMerge by tasks.registering(ReportMergeTask::class) {
|
||||
output.set(rootProject.layout.buildDirectory.file("reports/detekt/merged.sarif"))
|
||||
}
|
||||
|
||||
subprojects {
|
||||
plugins.withId("io.gitlab.arturbosch.detekt") {
|
||||
tasks.withType<Detekt>().configureEach {
|
||||
reports.sarif.required.set(true)
|
||||
finalizedBy(detektReportMerge)
|
||||
}
|
||||
detektReportMerge.configure {
|
||||
input.from(tasks.withType<Detekt>().map { it.sarifReportFile })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ complexity:
|
|||
thresholdInInterfaces: 25
|
||||
thresholdInObjects: 20
|
||||
thresholdInEnums: 10
|
||||
ignoreAnnotatedFunctions:
|
||||
- "Preview"
|
||||
NestedBlockDepth:
|
||||
threshold: 6
|
||||
CyclomaticComplexMethod:
|
||||
|
|
@ -54,6 +56,7 @@ style:
|
|||
active: true
|
||||
excludeImports:
|
||||
- "kotlinx.coroutines.flow.*"
|
||||
- "*.generated.resources.*"
|
||||
LoopWithTooManyJumpStatements:
|
||||
maxJumpCount: 3
|
||||
ThrowsCount:
|
||||
|
|
@ -96,9 +99,26 @@ exceptions:
|
|||
coroutines:
|
||||
active: true
|
||||
|
||||
# detekt-koin rule overrides (defaults ship in plugin jar; buildUponDefaultConfig = true)
|
||||
koin-rules:
|
||||
# Scope "test hygiene" rule to test sources only; the rule's heuristic
|
||||
# ("any class calling startKoin without stopKoin") incorrectly flags
|
||||
# production Application classes otherwise.
|
||||
MissingKoinStopInTest:
|
||||
active: true
|
||||
excludes:
|
||||
- "**/src/main/**"
|
||||
- "**/src/commonMain/**"
|
||||
- "**/src/androidMain/**"
|
||||
- "**/src/iosMain/**"
|
||||
|
||||
formatting:
|
||||
Indentation:
|
||||
active: false
|
||||
MaximumLineLength:
|
||||
active: false
|
||||
NoWildcardImports:
|
||||
active: false
|
||||
TrailingCommaOnCallSite:
|
||||
active: false
|
||||
TrailingCommaOnDeclarationSite:
|
||||
|
|
|
|||
9
core/common/detekt-baseline.xml
Normal file
9
core/common/detekt-baseline.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues/>
|
||||
<CurrentIssues>
|
||||
<ID>ImportOrdering:DateExt.kt$import kotlin.time.Clock import kotlin.time.Instant import kotlinx.datetime.LocalDate import kotlinx.datetime.TimeZone import kotlinx.datetime.daysUntil import kotlinx.datetime.toLocalDateTime</ID>
|
||||
<ID>ImportOrdering:FlowExt.kt$import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.retryWhen import kotlin.time.Clock import kotlin.math.pow</ID>
|
||||
<ID>NoUnusedImports:CommonModule.kt$com.garfiec.librechat.core.common.di.CommonModule.kt</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
13
core/data/detekt-baseline.xml
Normal file
13
core/data/detekt-baseline.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues/>
|
||||
<CurrentIssues>
|
||||
<ID>ImportOrdering:ConfigCacheDataStore.kt$import androidx.datastore.core.DataStore import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.stringPreferencesKey import com.garfiec.librechat.core.model.EndpointConfig import com.garfiec.librechat.core.model.config.StartupConfig import kotlinx.coroutines.flow.first import kotlinx.serialization.builtins.ListSerializer import kotlinx.serialization.builtins.MapSerializer import kotlinx.serialization.builtins.serializer import kotlinx.serialization.json.Json import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:ConfigRepositoryImpl.kt$import com.garfiec.librechat.core.common.BackendVersion import com.garfiec.librechat.core.common.result.ApiException import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.common.result.safeApiCall import com.garfiec.librechat.core.data.datastore.ConfigCacheDataStore import com.garfiec.librechat.core.model.EndpointConfig import com.garfiec.librechat.core.model.config.StartupConfig import com.garfiec.librechat.core.network.api.ConfigApi import io.ktor.client.plugins.HttpRequestTimeoutException import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.serialization.SerializationException import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:ConversationMapper.kt$import com.garfiec.librechat.core.data.db.entity.ConversationEntity import com.garfiec.librechat.core.model.Conversation import com.garfiec.librechat.core.model.EModelEndpoint import kotlin.time.Clock import kotlin.time.Instant import kotlinx.serialization.builtins.ListSerializer import kotlinx.serialization.json.Json import kotlinx.serialization.serializer</ID>
|
||||
<ID>ImportOrdering:ConversationRepositoryImpl.kt$import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.common.result.safeApiCall import com.garfiec.librechat.core.data.db.dao.ConversationDao import com.garfiec.librechat.core.data.mapper.toEntity import com.garfiec.librechat.core.data.mapper.toModel import com.garfiec.librechat.core.data.mapper.toModels import com.garfiec.librechat.core.model.Conversation import com.garfiec.librechat.core.model.request.ForkConversationRequest import com.garfiec.librechat.core.network.api.ConversationsApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import kotlin.time.Clock import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:MessageMapper.kt$import com.garfiec.librechat.core.data.db.entity.MessageEntity import com.garfiec.librechat.core.model.Attachment import com.garfiec.librechat.core.model.Feedback import com.garfiec.librechat.core.model.FileReference import com.garfiec.librechat.core.model.Message import com.garfiec.librechat.core.model.content.MessageContentPart import kotlin.time.Clock import kotlin.time.Instant import kotlinx.serialization.builtins.ListSerializer import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonObject</ID>
|
||||
<ID>ImportOrdering:MessageRepositoryImpl.kt$import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.common.result.safeApiCall import com.garfiec.librechat.core.data.db.dao.MessageDao import com.garfiec.librechat.core.data.mapper.toEntity import com.garfiec.librechat.core.data.mapper.toModels import com.garfiec.librechat.core.model.Message import com.garfiec.librechat.core.model.request.BranchMessageRequest import com.garfiec.librechat.core.model.request.UpdateMessageRequest import com.garfiec.librechat.core.network.api.MessagesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map import co.touchlab.kermit.Logger</ID>
|
||||
<ID>NoUnusedImports:DataModule.kt$com.garfiec.librechat.core.data.di.DataModule.kt</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
7
core/model/detekt-baseline.xml
Normal file
7
core/model/detekt-baseline.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues/>
|
||||
<CurrentIssues>
|
||||
<ID>NoUnusedImports:StartupConfig.kt$com.garfiec.librechat.core.model.config.StartupConfig.kt</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
13
core/network/detekt-baseline.xml
Normal file
13
core/network/detekt-baseline.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues/>
|
||||
<CurrentIssues>
|
||||
<ID>ImportOrdering:AgentsApi.kt$import com.garfiec.librechat.core.model.Agent import com.garfiec.librechat.core.model.AgentAction import com.garfiec.librechat.core.model.AgentCategory import com.garfiec.librechat.core.model.AgentExpanded import com.garfiec.librechat.core.model.AgentTool import com.garfiec.librechat.core.model.ToolAuthStatus import com.garfiec.librechat.core.model.ToolCallRecord import com.garfiec.librechat.core.model.ToolCallResult import com.garfiec.librechat.core.model.request.CreateActionRequest import com.garfiec.librechat.core.model.request.CreateAgentRequest import com.garfiec.librechat.core.model.request.RevertAgentRequest import com.garfiec.librechat.core.model.request.ToolCallRequest import com.garfiec.librechat.core.model.request.UpdateAgentRequest import com.garfiec.librechat.core.model.response.AgentListResponse import io.ktor.client.HttpClient import io.ktor.client.call.body import io.ktor.client.request.delete import io.ktor.client.request.forms.formData import io.ktor.client.request.forms.submitFormWithBinaryData import io.ktor.client.request.get import io.ktor.client.request.parameter import io.ktor.client.request.patch import io.ktor.client.request.post import io.ktor.client.request.setBody import io.ktor.http.Headers import io.ktor.http.HttpHeaders import io.ktor.http.path import kotlinx.serialization.json.JsonArray import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:AuthApi.kt$import com.garfiec.librechat.core.network.api.dto.LoginResult import com.garfiec.librechat.core.network.api.dto.RefreshResult import com.garfiec.librechat.core.network.api.dto.TwoFactorConfirmRequest import com.garfiec.librechat.core.model.request.LoginRequest import com.garfiec.librechat.core.model.request.OtpVerificationRequest import com.garfiec.librechat.core.model.request.PasswordResetRequest import com.garfiec.librechat.core.model.request.RegisterRequest import com.garfiec.librechat.core.model.request.ResetPasswordRequest import com.garfiec.librechat.core.model.request.TwoFactorDisableRequest import com.garfiec.librechat.core.model.request.TwoFactorVerifyRequest import com.garfiec.librechat.core.model.request.TwoFactorVerifyTempRequest import com.garfiec.librechat.core.model.response.LoginResponse import com.garfiec.librechat.core.model.response.RefreshResponse import com.garfiec.librechat.core.model.response.RegisterResponse import com.garfiec.librechat.core.model.response.TwoFactorSetupResponse import com.garfiec.librechat.core.network.client.CookieHelper import io.ktor.client.HttpClient import io.ktor.client.call.body import io.ktor.client.request.header import io.ktor.client.request.post import io.ktor.client.request.setBody import io.ktor.http.path</ID>
|
||||
<ID>ImportOrdering:LibreChatHttpClient.kt$import co.touchlab.kermit.Logger import io.ktor.client.HttpClient import io.ktor.client.engine.HttpClientEngineFactory import io.ktor.client.plugins.HttpRequestRetry import io.ktor.client.plugins.HttpResponseValidator import io.ktor.client.plugins.HttpTimeout import io.ktor.client.plugins.contentnegotiation.ContentNegotiation import io.ktor.client.plugins.defaultRequest import io.ktor.client.plugins.logging.LogLevel import io.ktor.client.plugins.logging.Logger as KtorLogger import io.ktor.client.plugins.logging.Logging import io.ktor.client.statement.bodyAsText import io.ktor.http.ContentType import io.ktor.http.HttpHeaders import io.ktor.http.contentType import io.ktor.http.isSuccess import io.ktor.http.takeFrom import io.ktor.serialization.kotlinx.json.json import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonPrimitive import kotlinx.serialization.json.jsonObject</ID>
|
||||
<ID>ImportOrdering:SseEventMapper.kt$import com.garfiec.librechat.core.model.Conversation import com.garfiec.librechat.core.model.Message import com.garfiec.librechat.core.model.StreamEvent import com.garfiec.librechat.core.model.content.MessageContentPart import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonPrimitive import kotlinx.serialization.json.booleanOrNull import kotlinx.serialization.json.contentOrNull import kotlinx.serialization.json.intOrNull import kotlinx.serialization.json.jsonArray import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:UserApi.kt$import com.garfiec.librechat.core.network.api.dto.UpdateFavoritesRequest import com.garfiec.librechat.core.network.api.dto.UpdatePluginsRequest import com.garfiec.librechat.core.network.api.dto.UserUpdateRequest import com.garfiec.librechat.core.model.User import com.garfiec.librechat.core.model.UserFavorite import com.garfiec.librechat.core.model.request.OtpVerificationRequest import com.garfiec.librechat.core.model.request.ResendVerificationRequest import com.garfiec.librechat.core.model.request.VerifyEmailRequest import com.garfiec.librechat.core.model.response.TermsResponse import io.ktor.client.HttpClient import io.ktor.client.call.body import io.ktor.client.request.delete import io.ktor.client.request.forms.formData import io.ktor.client.request.forms.submitFormWithBinaryData import io.ktor.client.request.get import io.ktor.client.request.post import io.ktor.client.request.setBody import io.ktor.http.Headers import io.ktor.http.HttpHeaders import io.ktor.http.path</ID>
|
||||
<ID>MaxLineLength:FilesApi.kt$FilesApi$"uploadFile success: fileId=${response.fileId}, filepath=${response.filepath}, type=${response.type}, width=${response.width}, height=${response.height}"</ID>
|
||||
<ID>NoEmptyFirstLineInMethodBlock:LibreChatHttpClient.kt$LibreChatHttpClient$ </ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
27
core/ui/detekt-baseline.xml
Normal file
27
core/ui/detekt-baseline.xml
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues/>
|
||||
<CurrentIssues>
|
||||
<ID>ComposableParamOrder:FilterChipBottomSheet.kt$FilterChipBottomSheet</ID>
|
||||
<ID>FunctionNaming:Drawable0.commonMain.kt$@InternalResourceApi internal fun _collectCommonMainDrawable0Resources(map: MutableMap<String, DrawableResource>)</ID>
|
||||
<ID>ImportOrdering:Drawable0.commonMain.kt$import kotlin.OptIn import kotlin.String import kotlin.collections.MutableMap import org.jetbrains.compose.resources.DrawableResource import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.ResourceContentHash import org.jetbrains.compose.resources.ResourceItem</ID>
|
||||
<ID>ImportOrdering:DynamicDropdown.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExposedDropdownMenuBox import androidx.compose.material3.ExposedDropdownMenuDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MenuAnchorType import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import org.jetbrains.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp</ID>
|
||||
<ID>ImportOrdering:DynamicInput.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import org.jetbrains.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp</ID>
|
||||
<ID>ImportOrdering:DynamicTextarea.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import org.jetbrains.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp</ID>
|
||||
<ID>ImportOrdering:ExpectResourceCollectors.kt$import kotlin.String import kotlin.collections.Map import org.jetbrains.compose.resources.DrawableResource import org.jetbrains.compose.resources.FontResource import org.jetbrains.compose.resources.PluralStringResource import org.jetbrains.compose.resources.StringArrayResource import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:Res.kt$import kotlin.ByteArray import kotlin.OptIn import kotlin.String import kotlin.Suppress import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.getResourceUri import org.jetbrains.compose.resources.readResourceBytes</ID>
|
||||
<ID>MaxLineLength:Res.kt$Res$public suspend</ID>
|
||||
<ID>MultiLineIfElse:DynamicSlider.kt$str + "0".repeat(decimals - existing)</ID>
|
||||
<ID>MultiLineIfElse:DynamicSlider.kt$str.substring(0, dot + decimals + 1)</ID>
|
||||
<ID>PackageName:Drawable0.commonMain.kt$package librechat_mobile.core.ui.generated.resources</ID>
|
||||
<ID>PackageName:ExpectResourceCollectors.kt$package librechat_mobile.core.ui.generated.resources</ID>
|
||||
<ID>PackageName:Res.kt$package librechat_mobile.core.ui.generated.resources</ID>
|
||||
<ID>PackageNaming:Drawable0.commonMain.kt$package librechat_mobile.core.ui.generated.resources</ID>
|
||||
<ID>PackageNaming:ExpectResourceCollectors.kt$package librechat_mobile.core.ui.generated.resources</ID>
|
||||
<ID>PackageNaming:Res.kt$package librechat_mobile.core.ui.generated.resources</ID>
|
||||
<ID>ParameterNaming:DynamicParameterPanel.kt$onValueChanged</ID>
|
||||
<ID>ParameterNaming:DynamicTagsInput.kt$onTagsChanged</ID>
|
||||
<ID>ParameterNaming:FilterChipBottomSheet.kt$onSelectionChanged</ID>
|
||||
<ID>ParameterNaming:ModelParameterSheet.kt$onParametersChanged</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
72
feature/agents/detekt-baseline.xml
Normal file
72
feature/agents/detekt-baseline.xml
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues/>
|
||||
<CurrentIssues>
|
||||
<ID>ComposableParamOrder:AgentDetailScreen.kt$AgentDetailScreen</ID>
|
||||
<ID>ComposableParamOrder:AgentEditorScreen.kt$AgentEditorScreen</ID>
|
||||
<ID>DeprecatedKoinApi:AgentsModule.kt$viewModel { params -> AgentDetailViewModel( savedStateHandle = get(), agentRepository = get(), serverDataStore = get(), initialAgentId = params.getOrNull(), ) }</ID>
|
||||
<ID>DeprecatedKoinApi:AgentsModule.kt$viewModel { params -> AgentEditorViewModel( savedStateHandle = get(), agentRepository = get(), configRepository = get(), mcpRepository = get(), contentReader = get(), initialAgentId = params.getOrNull(), ) }</ID>
|
||||
<ID>FunctionNaming:String0.commonMain.kt$@InternalResourceApi internal fun _collectCommonMainString0Resources(map: MutableMap<String, StringResource>)</ID>
|
||||
<ID>FunctionNaming:String1.commonMain.kt$@InternalResourceApi internal fun _collectCommonMainString1Resources(map: MutableMap<String, StringResource>)</ID>
|
||||
<ID>ImportOrdering:AgentActionsPanel.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.clickable import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Edit import androidx.compose.material.icons.filled.ExpandLess import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material.icons.filled.Lock import androidx.compose.material.icons.filled.Security import androidx.compose.material3.AlertDialog import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.RadioButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties import com.garfiec.librechat.core.model.ActionAuth import com.garfiec.librechat.core.model.ActionMetadata import com.garfiec.librechat.core.model.request.FunctionTool import com.garfiec.librechat.feature.agents.AgentActionDisplayData import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.* import com.garfiec.librechat.feature.agents.util.OpenApiSpecParser import com.garfiec.librechat.feature.agents.util.ParsedFunctionInfo import kotlinx.coroutines.delay</ID>
|
||||
<ID>ImportOrdering:AgentAdvancedPanel.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ExpandLess import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Slider import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableFloatStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.* import kotlin.math.roundToInt import com.garfiec.librechat.feature.agents.components.model.AgentAdvancedSettings</ID>
|
||||
<ID>ImportOrdering:AgentCapabilitiesSection.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.* import com.garfiec.librechat.feature.agents.components.model.AgentCapabilities</ID>
|
||||
<ID>ImportOrdering:AgentCategorySelector.kt$import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExposedDropdownMenuBox import androidx.compose.material3.ExposedDropdownMenuDefaults import androidx.compose.material3.MenuAnchorType import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import com.garfiec.librechat.core.model.AgentCategory import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:AgentCodeInterpreterSection.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:AgentDetailScreen.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.automirrored.filled.Chat import androidx.compose.material.icons.filled.ContentCopy import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Edit import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material3.AlertDialog import androidx.compose.material3.AssistChip import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.garfiec.librechat.core.model.EModelEndpoint import com.garfiec.librechat.core.ui.components.AvatarImage import com.garfiec.librechat.core.ui.components.endpointIconPainter import com.garfiec.librechat.core.ui.components.ErrorBanner import com.garfiec.librechat.core.ui.components.LoadingIndicator import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.* import com.garfiec.librechat.feature.agents.viewmodel.AgentDetailEvent import com.garfiec.librechat.feature.agents.viewmodel.AgentDetailViewModel import org.koin.compose.viewmodel.koinViewModel import org.koin.core.parameter.parametersOf</ID>
|
||||
<ID>ImportOrdering:AgentEditorScreen.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Build import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.ContentCopy import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.History import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.InputChip import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.garfiec.librechat.core.ui.components.ErrorBanner import com.garfiec.librechat.core.ui.components.LoadingIndicator import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.* import com.garfiec.librechat.feature.agents.components.AgentActionsPanel import com.garfiec.librechat.feature.agents.components.AgentAdvancedPanel import com.garfiec.librechat.feature.agents.components.AgentAvatarPicker import com.garfiec.librechat.feature.agents.components.AgentCategorySelector import com.garfiec.librechat.feature.agents.components.AgentCodeInterpreterSection import com.garfiec.librechat.feature.agents.components.AgentFileSearchSection import com.garfiec.librechat.feature.agents.components.AgentHandoffConfig import com.garfiec.librechat.feature.agents.components.AgentMcpToolsSelector import com.garfiec.librechat.feature.agents.components.AgentModelPicker import com.garfiec.librechat.feature.agents.components.AgentSharingSection import com.garfiec.librechat.feature.agents.components.AgentSupportContactSection import com.garfiec.librechat.feature.agents.components.AgentVersionHistory import com.garfiec.librechat.feature.agents.components.ToolSelectDialog import com.garfiec.librechat.feature.agents.viewmodel.AgentEditorEvent import com.garfiec.librechat.feature.agents.viewmodel.AgentEditorViewModel import org.koin.compose.viewmodel.koinViewModel import org.koin.core.parameter.parametersOf</ID>
|
||||
<ID>ImportOrdering:AgentEditorViewModel.kt$import androidx.compose.runtime.Immutable import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.garfiec.librechat.feature.agents.util.ContentReader import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.data.repository.AgentRepository import com.garfiec.librechat.core.data.repository.ConfigRepository import com.garfiec.librechat.core.data.repository.McpRepository import com.garfiec.librechat.core.model.ActionMetadata import com.garfiec.librechat.core.model.Agent import com.garfiec.librechat.core.model.AgentAction import com.garfiec.librechat.core.model.AgentCategory import com.garfiec.librechat.core.model.AgentTool import com.garfiec.librechat.core.model.SupportContact import com.garfiec.librechat.core.model.mcp.McpTool import com.garfiec.librechat.core.model.request.CreateActionRequest import com.garfiec.librechat.core.model.request.CreateAgentRequest import com.garfiec.librechat.core.model.request.FunctionTool import com.garfiec.librechat.core.model.request.RevertAgentRequest import com.garfiec.librechat.core.model.request.UpdateAgentRequest import com.garfiec.librechat.feature.agents.AgentActionDisplayData import com.garfiec.librechat.feature.agents.AgentHandoffDisplayData import com.garfiec.librechat.feature.agents.AgentToolDisplayData import com.garfiec.librechat.feature.agents.components.ModelOption import com.garfiec.librechat.feature.agents.components.model.AgentAdvancedSettings import com.garfiec.librechat.feature.agents.components.model.AgentCapabilities import com.garfiec.librechat.feature.agents.components.model.AgentSharingState import com.garfiec.librechat.feature.agents.components.model.AgentVersion import com.garfiec.librechat.feature.agents.components.model.AgentVisibility import com.garfiec.librechat.feature.agents.components.model.SupportContactState import com.garfiec.librechat.feature.agents.util.OpenApiSpecParser import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonPrimitive import kotlinx.serialization.json.floatOrNull import kotlinx.serialization.json.intOrNull import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:AgentFileSearchSection.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:AgentHandoffConfig.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.ExpandLess import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material3.AlertDialog import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExposedDropdownMenuBox import androidx.compose.material3.ExposedDropdownMenuDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.InputChip import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MenuAnchorType import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import com.garfiec.librechat.feature.agents.AgentHandoffDisplayData import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:AgentMarketplaceScreen.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.lazy.grid.rememberLazyGridState import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Search import androidx.compose.material.icons.filled.SmartToy import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FilterChip import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.pulltorefresh.PullToRefreshBox import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.garfiec.librechat.core.model.EModelEndpoint import com.garfiec.librechat.core.ui.components.AvatarImage import com.garfiec.librechat.core.ui.components.endpointIconPainter import com.garfiec.librechat.core.ui.components.EmptyState import com.garfiec.librechat.core.ui.components.ErrorBanner import com.garfiec.librechat.core.ui.components.LibreChatTopBar import com.garfiec.librechat.core.ui.components.LoadingIndicator import com.garfiec.librechat.feature.agents.AgentCardDisplayData import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.* import com.garfiec.librechat.feature.agents.viewmodel.AgentMarketplaceViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:AgentMcpToolsSelector.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ExpandLess import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material3.Checkbox import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.model.mcp.McpTool import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:AgentModelPicker.kt$import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.heightIn import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExposedDropdownMenuBox import androidx.compose.material3.ExposedDropdownMenuDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MenuAnchorType import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:AgentSharingSection.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ExpandLess import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExposedDropdownMenuBox import androidx.compose.material3.ExposedDropdownMenuDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MenuAnchorType import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.* import com.garfiec.librechat.feature.agents.components.model.AgentSharingState import com.garfiec.librechat.feature.agents.components.model.AgentVisibility</ID>
|
||||
<ID>ImportOrdering:AgentSupportContactSection.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.* import com.garfiec.librechat.feature.agents.components.model.SupportContactState</ID>
|
||||
<ID>ImportOrdering:AgentVersionHistory.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.material3.Button import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.SheetState import androidx.compose.material3.Text import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.* import com.garfiec.librechat.feature.agents.components.model.AgentVersion</ID>
|
||||
<ID>ImportOrdering:ExpectResourceCollectors.kt$import kotlin.String import kotlin.collections.Map import org.jetbrains.compose.resources.DrawableResource import org.jetbrains.compose.resources.FontResource import org.jetbrains.compose.resources.PluralStringResource import org.jetbrains.compose.resources.StringArrayResource import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:Res.kt$import kotlin.ByteArray import kotlin.OptIn import kotlin.String import kotlin.Suppress import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.getResourceUri import org.jetbrains.compose.resources.readResourceBytes</ID>
|
||||
<ID>ImportOrdering:String0.commonMain.kt$import kotlin.OptIn import kotlin.String import kotlin.collections.MutableMap import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.ResourceContentHash import org.jetbrains.compose.resources.ResourceItem import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:String1.commonMain.kt$import kotlin.OptIn import kotlin.String import kotlin.collections.MutableMap import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.ResourceContentHash import org.jetbrains.compose.resources.ResourceItem import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:ToolSelectDialog.kt$import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Build import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.Remove import androidx.compose.material.icons.filled.Search import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties import coil3.compose.AsyncImage import com.garfiec.librechat.feature.agents.AgentToolDisplayData import librechat_mobile.feature.agents.generated.resources.Res import librechat_mobile.feature.agents.generated.resources.*</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:AgentDetailScreen.kt$onBack</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:AgentDetailScreen.kt$onDuplicated</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:AgentEditorScreen.kt$onDeleted</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:AgentEditorScreen.kt$onDuplicated</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:AgentEditorScreen.kt$onSaved</ID>
|
||||
<ID>LoopWithTooManyJumpStatements:YamlParser.kt$YamlParser$while</ID>
|
||||
<ID>MaxLineLength:AgentEditorViewModel.kt$AgentEditorViewModel$"name=${agent.name}, description=${agent.description}, instructions=${agent.instructions}, model=${agent.model}, "</ID>
|
||||
<ID>MaxLineLength:AgentEditorViewModel.kt$AgentEditorViewModel$"name=${newState.name}, description=${newState.description}, instructions=${newState.instructions}, model=${newState.model}, "</ID>
|
||||
<ID>MaxLineLength:Res.kt$Res$public suspend</ID>
|
||||
<ID>NoConsecutiveBlankLines:AgentDetailScreen.kt$ </ID>
|
||||
<ID>NoConsecutiveBlankLines:AgentMarketplaceScreen.kt$ </ID>
|
||||
<ID>NoUnusedImports:OpenApiSpecParser.kt$com.garfiec.librechat.feature.agents.util.OpenApiSpecParser.kt</ID>
|
||||
<ID>PackageName:ExpectResourceCollectors.kt$package librechat_mobile.feature.agents.generated.resources</ID>
|
||||
<ID>PackageName:Res.kt$package librechat_mobile.feature.agents.generated.resources</ID>
|
||||
<ID>PackageName:String0.commonMain.kt$package librechat_mobile.feature.agents.generated.resources</ID>
|
||||
<ID>PackageName:String1.commonMain.kt$package librechat_mobile.feature.agents.generated.resources</ID>
|
||||
<ID>PackageNaming:ExpectResourceCollectors.kt$package librechat_mobile.feature.agents.generated.resources</ID>
|
||||
<ID>PackageNaming:Res.kt$package librechat_mobile.feature.agents.generated.resources</ID>
|
||||
<ID>PackageNaming:String0.commonMain.kt$package librechat_mobile.feature.agents.generated.resources</ID>
|
||||
<ID>PackageNaming:String1.commonMain.kt$package librechat_mobile.feature.agents.generated.resources</ID>
|
||||
<ID>ParameterNaming:AgentAdvancedPanel.kt$onSettingsChanged</ID>
|
||||
<ID>ParameterNaming:AgentAvatarPicker.kt$onImageSelected</ID>
|
||||
<ID>ParameterNaming:AgentCapabilitiesSection.kt$onCapabilitiesChanged</ID>
|
||||
<ID>ParameterNaming:AgentCategorySelector.kt$onCategorySelected</ID>
|
||||
<ID>ParameterNaming:AgentDetailScreen.kt$onDuplicated</ID>
|
||||
<ID>ParameterNaming:AgentEditorScreen.kt$onDeleted</ID>
|
||||
<ID>ParameterNaming:AgentEditorScreen.kt$onDuplicated</ID>
|
||||
<ID>ParameterNaming:AgentEditorScreen.kt$onSaved</ID>
|
||||
<ID>ParameterNaming:AgentMcpToolsSelector.kt$onToolToggled</ID>
|
||||
<ID>ParameterNaming:AgentModelPicker.kt$onModelSelected</ID>
|
||||
<ID>ParameterNaming:AgentSharingSection.kt$onSharingChanged</ID>
|
||||
<ID>ParameterNaming:AgentSupportContactSection.kt$onSupportContactChanged</ID>
|
||||
<ID>ParameterNaming:ToolSelectDialog.kt$onToolAdded</ID>
|
||||
<ID>ParameterNaming:ToolSelectDialog.kt$onToolRemoved</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:AgentsNavigation.kt$AgentDetail : AgentsRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:AgentsNavigation.kt$AgentEditorCreate : AgentsRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:AgentsNavigation.kt$AgentEditorEdit : AgentsRoute</ID>
|
||||
<ID>UnusedPrivateProperty:AgentDetailViewModel.kt$AgentDetailViewModel$savedStateHandle: SavedStateHandle</ID>
|
||||
<ID>UnusedPrivateProperty:AgentEditorViewModel.kt$AgentEditorViewModel$savedStateHandle: SavedStateHandle</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
58
feature/auth/detekt-baseline.xml
Normal file
58
feature/auth/detekt-baseline.xml
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues/>
|
||||
<CurrentIssues>
|
||||
<ID>ComposableParamOrder:ResetPasswordScreen.kt$ResetPasswordScreen</ID>
|
||||
<ID>ComposableParamOrder:TwoFactorScreen.kt$TwoFactorScreen</ID>
|
||||
<ID>ComposableParamOrder:VerifyEmailScreen.kt$VerifyEmailScreen</ID>
|
||||
<ID>DeprecatedKoinApi:AuthModule.kt$viewModel { params -> ResetPasswordViewModel( savedStateHandle = get(), authRepository = get(), initialUserId = params.getOrNull(), initialToken = params.getOrNull(), ) }</ID>
|
||||
<ID>DeprecatedKoinApi:AuthModule.kt$viewModel { params -> TwoFactorViewModel( savedStateHandle = get(), authRepository = get(), initialTempToken = params.getOrNull(), ) }</ID>
|
||||
<ID>DeprecatedKoinApi:AuthModule.kt$viewModel { params -> VerifyEmailViewModel( savedStateHandle = get(), userRepository = get(), initialEmail = params.getOrNull(), ) }</ID>
|
||||
<ID>FunctionNaming:String0.commonMain.kt$@InternalResourceApi internal fun _collectCommonMainString0Resources(map: MutableMap<String, StringResource>)</ID>
|
||||
<ID>ImportOrdering:ExpectResourceCollectors.kt$import kotlin.String import kotlin.collections.Map import org.jetbrains.compose.resources.DrawableResource import org.jetbrains.compose.resources.FontResource import org.jetbrains.compose.resources.PluralStringResource import org.jetbrains.compose.resources.StringArrayResource import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:ForgotPasswordScreen.kt$import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import librechat_mobile.feature.auth.generated.resources.Res import librechat_mobile.feature.auth.generated.resources.* import com.garfiec.librechat.feature.auth.viewmodel.ForgotPasswordViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:LoginScreen.kt$import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.lifecycle.Lifecycle import androidx.lifecycle.compose.LifecycleEventEffect import androidx.lifecycle.compose.collectAsStateWithLifecycle import librechat_mobile.feature.auth.generated.resources.Res import librechat_mobile.feature.auth.generated.resources.* import com.garfiec.librechat.feature.auth.viewmodel.LoginViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:RegisterScreen.kt$import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import librechat_mobile.feature.auth.generated.resources.Res import librechat_mobile.feature.auth.generated.resources.* import com.garfiec.librechat.feature.auth.viewmodel.RegisterViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:Res.kt$import kotlin.ByteArray import kotlin.OptIn import kotlin.String import kotlin.Suppress import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.getResourceUri import org.jetbrains.compose.resources.readResourceBytes</ID>
|
||||
<ID>ImportOrdering:ResetPasswordScreen.kt$import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import librechat_mobile.feature.auth.generated.resources.Res import librechat_mobile.feature.auth.generated.resources.* import com.garfiec.librechat.feature.auth.viewmodel.ResetPasswordViewModel import org.koin.compose.viewmodel.koinViewModel import org.koin.core.parameter.parametersOf</ID>
|
||||
<ID>ImportOrdering:ServerUrlScreen.kt$import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import librechat_mobile.feature.auth.generated.resources.Res import librechat_mobile.feature.auth.generated.resources.* import com.garfiec.librechat.feature.auth.viewmodel.ServerUrlViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:String0.commonMain.kt$import kotlin.OptIn import kotlin.String import kotlin.collections.MutableMap import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.ResourceContentHash import org.jetbrains.compose.resources.ResourceItem import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:TermsScreen.kt$import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import librechat_mobile.feature.auth.generated.resources.Res import librechat_mobile.feature.auth.generated.resources.* import com.garfiec.librechat.feature.auth.viewmodel.TermsViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:TwoFactorScreen.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import librechat_mobile.feature.auth.generated.resources.Res import librechat_mobile.feature.auth.generated.resources.* import com.garfiec.librechat.feature.auth.viewmodel.TwoFactorViewModel import org.koin.compose.viewmodel.koinViewModel import org.koin.core.parameter.parametersOf</ID>
|
||||
<ID>ImportOrdering:VerifyEmailScreen.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import librechat_mobile.feature.auth.generated.resources.Res import librechat_mobile.feature.auth.generated.resources.* import com.garfiec.librechat.feature.auth.viewmodel.VerifyEmailViewModel import org.koin.compose.viewmodel.koinViewModel import org.koin.core.parameter.parametersOf</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:LoginScreen.kt$onLoginSuccess</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:LoginScreen.kt$onNavigateToTwoFactor</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:RegisterScreen.kt$onRegistered</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:ServerUrlScreen.kt$onServerValidated</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:TermsScreen.kt$onAccepted</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:TwoFactorScreen.kt$onVerified</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:VerifyEmailScreen.kt$onVerified</ID>
|
||||
<ID>MaxLineLength:Res.kt$Res$public suspend</ID>
|
||||
<ID>MaxLineLength:TwoFactorScreen.kt$if (uiState.isBackupMode) stringResource(Res.string.use_authenticator_code) else stringResource(Res.string.use_backup_code)</ID>
|
||||
<ID>ModifierNotUsedAtRoot:ForgotPasswordScreen.kt$modifier = modifier .fillMaxSize() .background(MaterialTheme.colorScheme.background) .padding(padding) .padding(24.dp)</ID>
|
||||
<ID>NoBlankLineBeforeRbrace:ServerUrlViewModel.kt$ServerUrlViewModel$ </ID>
|
||||
<ID>PackageName:ExpectResourceCollectors.kt$package librechat_mobile.feature.auth.generated.resources</ID>
|
||||
<ID>PackageName:Res.kt$package librechat_mobile.feature.auth.generated.resources</ID>
|
||||
<ID>PackageName:String0.commonMain.kt$package librechat_mobile.feature.auth.generated.resources</ID>
|
||||
<ID>PackageNaming:ExpectResourceCollectors.kt$package librechat_mobile.feature.auth.generated.resources</ID>
|
||||
<ID>PackageNaming:Res.kt$package librechat_mobile.feature.auth.generated.resources</ID>
|
||||
<ID>PackageNaming:String0.commonMain.kt$package librechat_mobile.feature.auth.generated.resources</ID>
|
||||
<ID>ParameterNaming:RegisterScreen.kt$onRegistered</ID>
|
||||
<ID>ParameterNaming:ServerUrlScreen.kt$onServerValidated</ID>
|
||||
<ID>ParameterNaming:TermsScreen.kt$onAccepted</ID>
|
||||
<ID>ParameterNaming:TwoFactorScreen.kt$onCodeChanged</ID>
|
||||
<ID>ParameterNaming:TwoFactorScreen.kt$onDigitChanged</ID>
|
||||
<ID>ParameterNaming:TwoFactorScreen.kt$onVerified</ID>
|
||||
<ID>ParameterNaming:VerifyEmailScreen.kt$onVerified</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:AuthNavigation.kt$ForgotPassword : AuthRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:AuthNavigation.kt$Login : AuthRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:AuthNavigation.kt$Register : AuthRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:AuthNavigation.kt$ResetPassword : AuthRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:AuthNavigation.kt$Terms : AuthRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:AuthNavigation.kt$TwoFactor : AuthRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:AuthNavigation.kt$VerifyEmail : AuthRoute</ID>
|
||||
<ID>UnusedPrivateProperty:ResetPasswordViewModel.kt$ResetPasswordViewModel$savedStateHandle: SavedStateHandle</ID>
|
||||
<ID>UnusedPrivateProperty:TwoFactorViewModel.kt$TwoFactorViewModel$savedStateHandle: SavedStateHandle</ID>
|
||||
<ID>UnusedPrivateProperty:VerifyEmailViewModel.kt$VerifyEmailViewModel$savedStateHandle: SavedStateHandle</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
118
feature/chat/detekt-baseline.xml
Normal file
118
feature/chat/detekt-baseline.xml
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues/>
|
||||
<CurrentIssues>
|
||||
<ID>ComposableParamOrder:CommonChatInputCore.kt$CommonChatInputCore</ID>
|
||||
<ID>DeprecatedKoinApi:ChatModule.kt$viewModel { params -> PromptEditorViewModel( promptRepository = get(), savedStateHandle = get(), initialGroupId = params.getOrNull(), ) }</ID>
|
||||
<ID>FunctionNaming:String0.commonMain.kt$@InternalResourceApi internal fun _collectCommonMainString0Resources(map: MutableMap<String, StringResource>)</ID>
|
||||
<ID>FunctionNaming:String1.commonMain.kt$@InternalResourceApi internal fun _collectCommonMainString1Resources(map: MutableMap<String, StringResource>)</ID>
|
||||
<ID>FunctionNaming:String2.commonMain.kt$@InternalResourceApi internal fun _collectCommonMainString2Resources(map: MutableMap<String, StringResource>)</ID>
|
||||
<ID>ImportOrdering:AgentHandoffCard.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.SmartToy import androidx.compose.material.icons.filled.SwapHoriz import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ArtifactButton.kt$import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.Article import androidx.compose.material.icons.automirrored.filled.OpenInNew import androidx.compose.material.icons.filled.AccountTree import androidx.compose.material.icons.filled.Code import androidx.compose.material.icons.filled.Image import androidx.compose.material.icons.filled.Web import androidx.compose.material.icons.filled.Widgets import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ArtifactVersionNav.kt$import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.KeyboardArrowLeft import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:AttachmentChipsRow.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.expandVertically import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.shrinkVertically import androidx.compose.foundation.background import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.InsertDriveFile import androidx.compose.material.icons.filled.AttachFile import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.Code import androidx.compose.material.icons.filled.Extension import androidx.compose.material.icons.filled.FindInPage import androidx.compose.material.icons.filled.TravelExplore import androidx.compose.material3.AssistChip import androidx.compose.material3.AssistChipDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.IconButtonDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.role import androidx.compose.ui.semantics.semantics import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import coil3.compose.AsyncImage import com.garfiec.librechat.core.common.ToolConstants import com.garfiec.librechat.feature.chat.model.McpServerDisplayData import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ChatInputToolbar.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Code import androidx.compose.material.icons.filled.FindInPage import androidx.compose.material.icons.filled.MoreHoriz import androidx.compose.material.icons.filled.Search import androidx.compose.material3.FilterChip import androidx.compose.material3.FilterChipDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.common.ToolConstants import com.garfiec.librechat.feature.chat.model.McpServerDisplayData import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ChatToolsBottomSheet.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight import androidx.compose.material.icons.filled.AttachFile import androidx.compose.material.icons.filled.Code import androidx.compose.material.icons.filled.Extension import androidx.compose.material.icons.filled.FindInPage import androidx.compose.material.icons.filled.PhotoCamera import androidx.compose.material.icons.filled.PhotoLibrary import androidx.compose.material.icons.filled.Search import androidx.compose.material.icons.filled.SmartToy import androidx.compose.material.icons.filled.Tune import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Checkbox import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.Switch import androidx.compose.material3.SwitchDefaults import androidx.compose.material3.Text import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.role import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.common.ToolConstants import com.garfiec.librechat.feature.chat.model.McpServerDisplayData import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ChatViewModel.kt$import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.garfiec.librechat.core.common.EndpointConstants import com.garfiec.librechat.core.common.ToolConstants import com.garfiec.librechat.core.common.network.ConnectivityObserver import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.common.result.getOrNull import com.garfiec.librechat.core.data.datastore.LatexRenderer import com.garfiec.librechat.core.data.datastore.ServerDataStore import com.garfiec.librechat.core.data.datastore.SettingsDataStore import com.garfiec.librechat.core.data.repository.AgentRepository import com.garfiec.librechat.core.data.repository.ChatRepository import com.garfiec.librechat.core.data.repository.ConfigRepository import com.garfiec.librechat.core.data.repository.ConversationRepository import com.garfiec.librechat.core.data.repository.DraftRepository import com.garfiec.librechat.core.data.repository.McpRepository import com.garfiec.librechat.core.data.repository.MessageRepository import com.garfiec.librechat.core.data.repository.PresetRepository import com.garfiec.librechat.core.data.repository.PromptRepository import com.garfiec.librechat.core.data.repository.ShareRepository import com.garfiec.librechat.core.data.repository.UserRepository import com.garfiec.librechat.core.model.Attachment import com.garfiec.librechat.core.model.EModelEndpoint import com.garfiec.librechat.core.model.Message import com.garfiec.librechat.core.model.Preset import com.garfiec.librechat.core.model.StreamEvent import com.garfiec.librechat.core.model.request.EphemeralAgent import com.garfiec.librechat.core.ui.components.ModelParameters import com.garfiec.librechat.feature.chat.model.PresetDisplayData import com.garfiec.librechat.feature.chat.model.PromptMentionDisplayData import com.garfiec.librechat.feature.chat.components.AttachedFile import com.garfiec.librechat.feature.chat.util.NEW_CHAT_DRAFT_KEY import com.garfiec.librechat.feature.chat.util.buildActiveMessagePath import com.garfiec.librechat.feature.chat.viewmodel.delegate.ConversationActionsDelegate import com.garfiec.librechat.feature.chat.viewmodel.delegate.InConversationSearchDelegate import com.garfiec.librechat.feature.chat.viewmodel.delegate.ModelSelectionDelegate import com.garfiec.librechat.feature.chat.viewmodel.delegate.PlatformDelegateFactory import com.garfiec.librechat.feature.chat.viewmodel.delegate.PresetPromptDelegate import com.garfiec.librechat.feature.chat.viewmodel.delegate.toSerialName import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import co.touchlab.kermit.Logger import kotlin.time.Clock import kotlin.uuid.ExperimentalUuidApi import kotlin.uuid.Uuid</ID>
|
||||
<ID>ImportOrdering:CitationChip.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.ClickableText import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.OpenInNew import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalUriHandler import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.window.Popup import androidx.compose.ui.window.PopupProperties import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:CodeBlock.kt$import androidx.compose.animation.AnimatedContent import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.togetherWith import androidx.compose.foundation.background import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Check import androidx.compose.material.icons.filled.ContentCopy import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import com.garfiec.librechat.feature.chat.util.copyToClipboard import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.* import kotlinx.coroutines.delay</ID>
|
||||
<ID>ImportOrdering:CodeExecutionCard.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.expandVertically import androidx.compose.animation.shrinkVertically import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Cancel import androidx.compose.material.icons.filled.CheckCircle import androidx.compose.material.icons.filled.Code import androidx.compose.material.icons.filled.ExpandLess import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SuggestionChip import androidx.compose.material3.SuggestionChipDefaults import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.role import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ComparisonDualPane.kt$import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.VerticalDivider import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ComparisonTabBar.kt$import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Tab import androidx.compose.material3.TabRow import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.* import kotlinx.coroutines.launch</ID>
|
||||
<ID>ImportOrdering:ExpectResourceCollectors.kt$import kotlin.String import kotlin.collections.Map import org.jetbrains.compose.resources.DrawableResource import org.jetbrains.compose.resources.FontResource import org.jetbrains.compose.resources.PluralStringResource import org.jetbrains.compose.resources.StringArrayResource import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:FeedbackCommentDialog.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.AlertDialog import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ForkOptionsBottomSheet.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.CallSplit import androidx.compose.material.icons.filled.AccountTree import androidx.compose.material.icons.filled.LinearScale import androidx.compose.material3.Checkbox import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.Text import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.model.request.ForkOption import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ImageGenCard.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.BrokenImage import androidx.compose.material.icons.filled.Image import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.role import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import coil3.compose.SubcomposeAsyncImage import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:InConvoSearchBar.kt$import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.KeyboardArrowDown import androidx.compose.material.icons.filled.KeyboardArrowUp import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.OutlinedTextFieldDefaults import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalSoftwareKeyboardController import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.* import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.flow.debounce import kotlinx.coroutines.flow.filter</ID>
|
||||
<ID>ImportOrdering:InlineEditInput.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.Button import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.OutlinedTextFieldDefaults import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:LandingContent.kt$import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ChatBubbleOutline import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.* import kotlin.time.Clock import kotlinx.datetime.DayOfWeek import kotlinx.datetime.TimeZone import kotlinx.datetime.toLocalDateTime</ID>
|
||||
<ID>ImportOrdering:LogContentCard.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.expandVertically import androidx.compose.animation.shrinkVertically import androidx.compose.foundation.clickable import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ExpandLess import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material.icons.filled.Terminal import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.role import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:McpResourceCarousel.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Extension import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:McpServerSelector.kt$import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Hub import androidx.compose.material.icons.filled.KeyboardArrowDown import androidx.compose.material3.Checkbox import androidx.compose.material3.DropdownMenu import androidx.compose.material3.FilterChip import androidx.compose.material3.FilterChipDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.garfiec.librechat.feature.chat.model.McpServerDisplayData import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:MemoryArtifactCard.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SuggestionChip import androidx.compose.material3.SuggestionChipDefaults import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:MessageContentAndActions.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.CallSplit import androidx.compose.material.icons.automirrored.filled.VolumeUp import androidx.compose.material.icons.filled.ContentCopy import androidx.compose.material.icons.filled.Edit import androidx.compose.material.icons.filled.Refresh import androidx.compose.material.icons.filled.Stop import androidx.compose.material.icons.filled.ThumbDown import androidx.compose.material.icons.filled.ThumbUp import androidx.compose.material.icons.outlined.ThumbDown import androidx.compose.material.icons.outlined.ThumbUp import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.layout.LayoutCoordinates import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.model.Message import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.* import org.jetbrains.compose.resources.stringResource</ID>
|
||||
<ID>ImportOrdering:MessageFiles.kt$import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.InsertDriveFile import androidx.compose.material.icons.filled.AttachFile import androidx.compose.material.icons.filled.BrokenImage import androidx.compose.material.icons.filled.Description import androidx.compose.material.icons.filled.PictureAsPdf import androidx.compose.material.icons.filled.TableChart import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.layout.ContentScale import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.role import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import coil3.compose.SubcomposeAsyncImage import com.garfiec.librechat.core.model.FileReference import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:MessageList.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.foundation.gestures.animateScrollBy import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.KeyboardArrowDown import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FloatingActionButtonDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SmallFloatingActionButton import androidx.compose.material3.pulltorefresh.PullToRefreshBox import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.input.pointer.PointerEventPass import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.boundsInRoot import androidx.compose.ui.platform.LocalDensity import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.common.ChatLayoutConstants import com.garfiec.librechat.core.model.FeedbackRating import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.* import com.garfiec.librechat.feature.chat.util.MessageNode import com.garfiec.librechat.feature.chat.viewmodel.ActiveToolCall import com.garfiec.librechat.feature.chat.viewmodel.SearchMatch import kotlinx.coroutines.delay import kotlinx.coroutines.launch</ID>
|
||||
<ID>ImportOrdering:ModelSelectionDelegate.kt$import com.garfiec.librechat.core.common.EndpointConstants import com.garfiec.librechat.core.common.ToolConstants import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.data.datastore.SettingsDataStore import com.garfiec.librechat.core.data.repository.AgentRepository import com.garfiec.librechat.core.data.repository.ConfigRepository import com.garfiec.librechat.core.data.repository.McpRepository import com.garfiec.librechat.core.model.EModelEndpoint import com.garfiec.librechat.core.model.mcp.McpServer import com.garfiec.librechat.core.model.request.AddedConversation import com.garfiec.librechat.core.ui.components.ModelParameters import com.garfiec.librechat.feature.chat.model.McpServerDisplayData import com.garfiec.librechat.feature.chat.viewmodel.ChatScreenState import com.garfiec.librechat.feature.chat.viewmodel.ChatStateHandle import com.garfiec.librechat.feature.chat.viewmodel.ComparisonState import kotlinx.coroutines.launch import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:ModelSelectorButton.kt$import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowDropDown import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ModelSelectorSheet.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyItemScope import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Check import androidx.compose.material.icons.filled.Clear import androidx.compose.material.icons.filled.ExpandLess import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material.icons.outlined.AutoAwesome import androidx.compose.material.icons.outlined.Create import androidx.compose.material.icons.outlined.Public import androidx.compose.material.icons.outlined.SmartToy import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateMapOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.dp import coil3.compose.AsyncImage import com.garfiec.librechat.core.common.EndpointConstants import com.garfiec.librechat.core.model.Agent import com.garfiec.librechat.core.model.EndpointConfig import com.garfiec.librechat.core.ui.components.endpointIconPainter import com.garfiec.librechat.core.ui.components.isMonochromeEndpointIcon import com.garfiec.librechat.feature.chat.util.FuzzyMatch import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.* import org.jetbrains.compose.resources.stringResource</ID>
|
||||
<ID>ImportOrdering:PlatformFileHandler.kt$import com.garfiec.librechat.feature.chat.components.AttachedFile import com.garfiec.librechat.core.model.FileReference import kotlinx.coroutines.Job import kotlinx.coroutines.flow.StateFlow</ID>
|
||||
<ID>ImportOrdering:PresetPicker.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Edit import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.Text import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.garfiec.librechat.feature.chat.model.PresetDisplayData import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:PresetPromptDelegate.kt$import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.data.repository.PresetRepository import com.garfiec.librechat.core.data.repository.PromptRepository import com.garfiec.librechat.core.model.EModelEndpoint import com.garfiec.librechat.core.model.Preset import com.garfiec.librechat.core.model.PromptGroup import com.garfiec.librechat.feature.chat.model.PresetDisplayData import com.garfiec.librechat.feature.chat.model.PromptMentionDisplayData import com.garfiec.librechat.feature.chat.viewmodel.ChatStateHandle import kotlinx.coroutines.launch import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:PromptDetailScreen.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Edit import androidx.compose.material.icons.filled.Share import androidx.compose.material.icons.outlined.Description import androidx.compose.material3.Button import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.ui.components.LibreChatTopBar import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.* import com.garfiec.librechat.feature.chat.prompts.components.PromptPreviewPanel</ID>
|
||||
<ID>ImportOrdering:PromptEditorScreen.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.History import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.garfiec.librechat.core.ui.components.LoadingIndicator import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.* import org.koin.compose.viewmodel.koinViewModel import org.koin.core.parameter.parametersOf</ID>
|
||||
<ID>ImportOrdering:PromptFilterSheet.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FilterChip import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.SheetState import androidx.compose.material3.Text import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:PromptPreviewPanel.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:PromptShareDialog.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ContentCopy import androidx.compose.material3.AlertDialog import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.RadioButton import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import com.garfiec.librechat.feature.chat.util.copyToClipboard import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:PromptVariablesSection.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:PromptVersionsSheet.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.material3.Badge import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.model.Prompt import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:PromptsLibraryScreen.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.FilterList import androidx.compose.material.icons.filled.Share import androidx.compose.material.icons.outlined.Description import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FilterChip import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.material3.pulltorefresh.PullToRefreshBox import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.garfiec.librechat.core.ui.components.EmptyState import com.garfiec.librechat.core.ui.components.ErrorBanner import com.garfiec.librechat.core.ui.components.LibreChatTopBar import com.garfiec.librechat.core.ui.components.LoadingIndicator import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.* import com.garfiec.librechat.feature.chat.prompts.components.PromptFilterSheet import com.garfiec.librechat.feature.chat.prompts.components.PromptShareDialog import com.garfiec.librechat.feature.chat.prompts.components.PromptSortOrder import com.garfiec.librechat.feature.chat.prompts.components.VariableInputDialog import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:PromptsViewModel.kt$import androidx.compose.runtime.Immutable import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.data.repository.PromptRepository import com.garfiec.librechat.core.model.PromptGroup import com.garfiec.librechat.core.model.request.AddPromptToGroupRequest import com.garfiec.librechat.core.model.request.CreatePromptData import com.garfiec.librechat.core.model.request.CreatePromptGroupData import com.garfiec.librechat.core.model.request.CreatePromptRequest import com.garfiec.librechat.core.model.request.UpdatePromptGroupRequest import com.garfiec.librechat.core.model.request.UpdatePromptTagRequest import com.garfiec.librechat.feature.chat.prompts.components.PromptSortOrder import com.garfiec.librechat.feature.chat.prompts.components.extractVariables import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:Res.kt$import kotlin.ByteArray import kotlin.OptIn import kotlin.String import kotlin.Suppress import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.getResourceUri import org.jetbrains.compose.resources.readResourceBytes</ID>
|
||||
<ID>ImportOrdering:SavePresetDialog.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.material3.AlertDialog import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:SecondaryMessageList.kt$import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.common.ChatLayoutConstants import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.* import com.garfiec.librechat.feature.chat.util.MessageNode import com.garfiec.librechat.feature.chat.viewmodel.ActiveToolCall</ID>
|
||||
<ID>ImportOrdering:SharedContentParts.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.expandVertically import androidx.compose.animation.shrinkVertically import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.BrokenImage import androidx.compose.material.icons.filled.Build import androidx.compose.material.icons.filled.ExpandLess import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material.icons.filled.Psychology import androidx.compose.material.icons.filled.Videocam import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.LayoutCoordinates import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.role import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import coil3.compose.SubcomposeAsyncImage import com.garfiec.librechat.core.common.ToolConstants import com.garfiec.librechat.core.model.Attachment import com.garfiec.librechat.core.model.ContentType import com.garfiec.librechat.core.model.content.MessageContentPart import com.garfiec.librechat.feature.chat.components.artifact.Artifact import com.garfiec.librechat.feature.chat.components.artifact.ArtifactButton import com.garfiec.librechat.feature.chat.components.artifact.ArtifactPanel import com.garfiec.librechat.feature.chat.components.artifact.ArtifactSegment import com.garfiec.librechat.feature.chat.components.artifact.detectArtifacts import com.garfiec.librechat.feature.chat.components.artifact.groupArtifactVersions import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.* import org.jetbrains.compose.resources.stringResource</ID>
|
||||
<ID>ImportOrdering:SiblingNavigator.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.KeyboardArrowLeft import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.semantics import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:StreamingIndicator.kt$import androidx.compose.animation.core.LinearEasing import androidx.compose.animation.core.RepeatMode import androidx.compose.animation.core.animateFloat import androidx.compose.animation.core.infiniteRepeatable import androidx.compose.animation.core.rememberInfiniteTransition import androidx.compose.animation.core.tween import androidx.compose.foundation.layout.padding import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:StreamingToolCallCard.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.expandVertically import androidx.compose.animation.shrinkVertically import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Build import androidx.compose.material.icons.filled.Check import androidx.compose.material.icons.filled.ExpandLess import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.* import com.garfiec.librechat.feature.chat.viewmodel.ActiveToolCall</ID>
|
||||
<ID>ImportOrdering:String0.commonMain.kt$import kotlin.OptIn import kotlin.String import kotlin.collections.MutableMap import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.ResourceContentHash import org.jetbrains.compose.resources.ResourceItem import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:String1.commonMain.kt$import kotlin.OptIn import kotlin.String import kotlin.collections.MutableMap import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.ResourceContentHash import org.jetbrains.compose.resources.ResourceItem import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:String2.commonMain.kt$import kotlin.OptIn import kotlin.String import kotlin.collections.MutableMap import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.ResourceContentHash import org.jetbrains.compose.resources.ResourceItem import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:ToolCallParsing.kt$import com.garfiec.librechat.core.model.content.AgentToolCall import com.garfiec.librechat.core.model.Attachment import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonArray import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonPrimitive import kotlinx.serialization.json.contentOrNull import kotlinx.serialization.json.intOrNull import kotlinx.serialization.json.jsonArray import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:ToolsDropdownMenu.kt$import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Check import androidx.compose.material.icons.filled.Code import androidx.compose.material.icons.filled.Image import androidx.compose.material.icons.filled.Search import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import org.jetbrains.compose.resources.stringResource import com.garfiec.librechat.core.common.ToolConstants import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:VariableInputDialog.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.AlertDialog import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateMapOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:WebSearchResultCard.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Language import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.LocalUriHandler import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.role import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import coil3.compose.SubcomposeAsyncImage import librechat_mobile.feature.chat.generated.resources.Res import librechat_mobile.feature.chat.generated.resources.*</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:MessageList.kt$onSearchScrollHandled</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:PromptEditorScreen.kt$onBack</ID>
|
||||
<ID>MaxLineLength:ChatViewModel.kt$ChatViewModel$Logger.d { "sendMessage: webSearch=$webSearchEnabled, endpoint=${_uiState.value.selectedEndpoint}, model=${_uiState.value.selectedModel}, files=${fileRefs.size}, ephemeralAgent=$ephemeralAgent" }</ID>
|
||||
<ID>MaxLineLength:ModelSelectorSheet.kt$contentDescription = stringResource(if (isExpanded) Res.string.cd_collapse_section else Res.string.cd_expand_section, displayLabel)</ID>
|
||||
<ID>MaxLineLength:Res.kt$Res$public suspend</ID>
|
||||
<ID>MaxLineLength:SharedContentParts.kt$Icon(Icons.Default.BrokenImage, stringResource(Res.string.cd_failed_to_load_image), Modifier.size(32.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant)</ID>
|
||||
<ID>MaxLineLength:SharedContentParts.kt$Icon(Icons.Default.Build, stringResource(Res.string.cd_tool_call), Modifier.size(16.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant)</ID>
|
||||
<ID>MaxLineLength:SharedContentParts.kt$Icon(Icons.Default.Psychology, stringResource(Res.string.cd_thinking_indicator), Modifier.size(18.dp), tint = MaterialTheme.colorScheme.primary)</ID>
|
||||
<ID>MaxLineLength:SharedContentParts.kt$Icon(Icons.Filled.Videocam, contentDescription = null, tint = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.size(18.dp))</ID>
|
||||
<ID>MaxLineLength:SharedContentParts.kt$MarkdownContent(segment.text, Modifier.fillMaxWidth(), fontSizeMultiplier, useKatex, searchQuery, searchFocusedOccurrence, onFocusedOccurrencePositioned)</ID>
|
||||
<ID>MaxLineLength:SharedContentParts.kt$MarkdownContent(thinkingText, fontSizeMultiplier = fontSizeMultiplier, useKatex = useKatex, searchQuery = searchQuery, searchFocusedOccurrence = searchFocusedOccurrence, onFocusedOccurrencePositioned = onFocusedOccurrencePositioned)</ID>
|
||||
<ID>MaxLineLength:SharedContentParts.kt$Text(stringResource(Res.string.label_input), style = MaterialTheme.typography.labelSmall, color = MaterialTheme.colorScheme.onSurfaceVariant)</ID>
|
||||
<ID>MaxLineLength:SharedContentParts.kt$Text(stringResource(Res.string.label_output), style = MaterialTheme.typography.labelSmall, color = MaterialTheme.colorScheme.onSurfaceVariant)</ID>
|
||||
<ID>MaxLineLength:SharedContentParts.kt$Text(stringResource(Res.string.label_thinking), style = MaterialTheme.typography.titleSmall, color = MaterialTheme.colorScheme.primary, modifier = Modifier.weight(1f))</ID>
|
||||
<ID>MaxLineLength:SharedContentParts.kt$Text(stringResource(Res.string.video_not_supported), style = MaterialTheme.typography.bodyMedium, color = MaterialTheme.colorScheme.onSurfaceVariant)</ID>
|
||||
<ID>MaxLineLength:SharedContentParts.kt$Text(toolName, style = MaterialTheme.typography.titleSmall, color = MaterialTheme.colorScheme.onSurface, modifier = Modifier.weight(1f))</ID>
|
||||
<ID>ModifierMissing:CommonChatInputCore.kt$ChatInputPlaceholder</ID>
|
||||
<ID>ModifierWithoutDefault:SharedContentParts.kt$modifier</ID>
|
||||
<ID>NoConsecutiveBlankLines:MarkdownParsing.kt$ </ID>
|
||||
<ID>PackageName:ExpectResourceCollectors.kt$package librechat_mobile.feature.chat.generated.resources</ID>
|
||||
<ID>PackageName:Res.kt$package librechat_mobile.feature.chat.generated.resources</ID>
|
||||
<ID>PackageName:String0.commonMain.kt$package librechat_mobile.feature.chat.generated.resources</ID>
|
||||
<ID>PackageName:String1.commonMain.kt$package librechat_mobile.feature.chat.generated.resources</ID>
|
||||
<ID>PackageName:String2.commonMain.kt$package librechat_mobile.feature.chat.generated.resources</ID>
|
||||
<ID>PackageNaming:ExpectResourceCollectors.kt$package librechat_mobile.feature.chat.generated.resources</ID>
|
||||
<ID>PackageNaming:Res.kt$package librechat_mobile.feature.chat.generated.resources</ID>
|
||||
<ID>PackageNaming:String0.commonMain.kt$package librechat_mobile.feature.chat.generated.resources</ID>
|
||||
<ID>PackageNaming:String1.commonMain.kt$package librechat_mobile.feature.chat.generated.resources</ID>
|
||||
<ID>PackageNaming:String2.commonMain.kt$package librechat_mobile.feature.chat.generated.resources</ID>
|
||||
<ID>ParameterNaming:ComparisonTabBar.kt$onTabChanged</ID>
|
||||
<ID>ParameterNaming:InConvoSearchBar.kt$onQueryChanged</ID>
|
||||
<ID>ParameterNaming:InlineEditInput.kt$onTextChanged</ID>
|
||||
<ID>ParameterNaming:MessageContentAndActions.kt$onEditTextChanged</ID>
|
||||
<ID>ParameterNaming:MessageContentAndActions.kt$onFocusedOccurrencePositioned</ID>
|
||||
<ID>ParameterNaming:MessageList.kt$onEditTextChanged</ID>
|
||||
<ID>ParameterNaming:MessageList.kt$onSearchScrollHandled</ID>
|
||||
<ID>ParameterNaming:ModelSelectorSheet.kt$onModelSelected</ID>
|
||||
<ID>ParameterNaming:PlatformChatComponents.kt$onEditTextChanged</ID>
|
||||
<ID>ParameterNaming:PlatformChatComponents.kt$onFocusedOccurrencePositioned</ID>
|
||||
<ID>ParameterNaming:PlatformScreens.kt$onConversationStarted</ID>
|
||||
<ID>ParameterNaming:PresetPicker.kt$onPresetSelected</ID>
|
||||
<ID>ParameterNaming:PromptFilterSheet.kt$onCategorySelected</ID>
|
||||
<ID>ParameterNaming:PromptFilterSheet.kt$onSortOrderChanged</ID>
|
||||
<ID>ParameterNaming:PromptShareDialog.kt$onShareToggled</ID>
|
||||
<ID>ParameterNaming:PromptVariablesSection.kt$onVariableChanged</ID>
|
||||
<ID>ParameterNaming:SharedContentParts.kt$onFocusedOccurrencePositioned</ID>
|
||||
<ID>ParameterNaming:SlashCommandMenu.kt$onCommandSelected</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:ChatNavigation.kt$Chat : ChatRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:ChatNavigation.kt$PromptEditor : ChatRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:ChatNavigation.kt$PromptsLibrary : ChatRoute</ID>
|
||||
<ID>UnusedPrivateProperty:ChatViewModel.kt$ChatViewModel$savedStateHandle: SavedStateHandle</ID>
|
||||
<ID>UnusedPrivateProperty:PromptEditorViewModel.kt$PromptEditorViewModel$savedStateHandle: SavedStateHandle</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
36
feature/conversations/detekt-baseline.xml
Normal file
36
feature/conversations/detekt-baseline.xml
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues/>
|
||||
<CurrentIssues>
|
||||
<ID>FunctionNaming:String0.commonMain.kt$@InternalResourceApi internal fun _collectCommonMainString0Resources(map: MutableMap<String, StringResource>)</ID>
|
||||
<ID>ImportOrdering:ArchivedConversationsScreen.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.Archive import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Unarchive import androidx.compose.material3.AlertDialog import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.material3.pulltorefresh.PullToRefreshBox import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.garfiec.librechat.core.ui.components.EmptyState import com.garfiec.librechat.core.ui.components.ErrorBanner import com.garfiec.librechat.core.ui.components.LoadingIndicator import com.garfiec.librechat.feature.conversations.ArchivedConversationDisplayData import librechat_mobile.feature.conversations.generated.resources.Res import librechat_mobile.feature.conversations.generated.resources.* import com.garfiec.librechat.feature.conversations.viewmodel.ArchivedConversationsEvent import com.garfiec.librechat.feature.conversations.viewmodel.ArchivedConversationsViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:ArchivedConversationsViewModel.kt$import androidx.compose.runtime.Immutable import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.data.repository.ConversationRepository import com.garfiec.librechat.core.model.Conversation import com.garfiec.librechat.feature.conversations.ArchivedConversationDisplayData import com.garfiec.librechat.feature.conversations.toArchivedDisplayData import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:ConversationActions.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Archive import androidx.compose.material.icons.filled.Bookmark import androidx.compose.material.icons.filled.BookmarkBorder import androidx.compose.material.icons.filled.ContentCopy import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Edit import androidx.compose.material.icons.filled.FileDownload import androidx.compose.material.icons.filled.Share import androidx.compose.material3.AlertDialog import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.model.Conversation import librechat_mobile.feature.conversations.generated.resources.Res import librechat_mobile.feature.conversations.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ConversationExporter.kt$import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.data.repository.ConversationRepository import com.garfiec.librechat.core.data.repository.MessageRepository import com.garfiec.librechat.core.model.ConversationExport import com.garfiec.librechat.core.model.Message import kotlin.time.Clock import kotlinx.datetime.TimeZone import kotlinx.datetime.toLocalDateTime import kotlinx.serialization.json.Json</ID>
|
||||
<ID>ImportOrdering:ConversationItem.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Bookmark import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material.icons.filled.SmartToy import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.common.extensions.toInstantOrNull import com.garfiec.librechat.core.model.EModelEndpoint import com.garfiec.librechat.core.ui.components.endpointIconPainter import com.garfiec.librechat.core.ui.components.isMonochromeIcon import librechat_mobile.feature.conversations.generated.resources.Res import librechat_mobile.feature.conversations.generated.resources.* import kotlin.time.Clock import kotlin.time.Instant import kotlinx.datetime.TimeZone import kotlinx.datetime.toLocalDateTime</ID>
|
||||
<ID>ImportOrdering:ConversationListScreen.kt$import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Archive import androidx.compose.material.icons.filled.Forum import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.pulltorefresh.PullToRefreshBox import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.garfiec.librechat.core.model.Conversation import com.garfiec.librechat.core.ui.components.EmptyState import com.garfiec.librechat.core.ui.components.ErrorBanner import com.garfiec.librechat.core.ui.components.LoadingIndicator import librechat_mobile.feature.conversations.generated.resources.Res import librechat_mobile.feature.conversations.generated.resources.* import com.garfiec.librechat.feature.conversations.components.ConversationActions import com.garfiec.librechat.feature.conversations.components.ConversationItem import com.garfiec.librechat.feature.conversations.components.ConversationSearchBar import com.garfiec.librechat.feature.conversations.components.DateGroupHeader import com.garfiec.librechat.feature.conversations.components.TagFilterBar import com.garfiec.librechat.feature.conversations.components.TagPicker import com.garfiec.librechat.feature.conversations.export.ExportFormat import com.garfiec.librechat.feature.conversations.export.ExportFormatPicker import com.garfiec.librechat.feature.conversations.platform.FileSaver import com.garfiec.librechat.feature.conversations.platform.copyToClipboard import com.garfiec.librechat.feature.conversations.platform.showToast import com.garfiec.librechat.feature.conversations.viewmodel.ConversationListEvent import com.garfiec.librechat.feature.conversations.viewmodel.ConversationListViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:ConversationListViewModel.kt$import androidx.compose.runtime.Immutable import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.garfiec.librechat.core.common.extensions.toInstantOrNull import com.garfiec.librechat.core.common.extensions.toRelativeDateGroup import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.data.datastore.SettingsDataStore import com.garfiec.librechat.core.data.repository.ConversationRepository import com.garfiec.librechat.core.data.repository.SearchRepository import com.garfiec.librechat.core.data.repository.ShareRepository import com.garfiec.librechat.core.data.repository.TagRepository import com.garfiec.librechat.core.model.Conversation import com.garfiec.librechat.core.model.ConversationTag import com.garfiec.librechat.feature.conversations.components.ConversationDisplayData import com.garfiec.librechat.feature.conversations.components.toDisplayData import com.garfiec.librechat.feature.conversations.export.ConversationExporter import com.garfiec.librechat.feature.conversations.export.ConversationImporter import com.garfiec.librechat.feature.conversations.export.ExportFormat import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:ConversationSearchBar.kt$import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.Search import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.material3.TextFieldDefaults import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.conversations.generated.resources.Res import librechat_mobile.feature.conversations.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ExpectResourceCollectors.kt$import kotlin.String import kotlin.collections.Map import org.jetbrains.compose.resources.DrawableResource import org.jetbrains.compose.resources.FontResource import org.jetbrains.compose.resources.PluralStringResource import org.jetbrains.compose.resources.StringArrayResource import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:ExportFormatPicker.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Code import androidx.compose.material.icons.filled.Description import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.Text import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.conversations.generated.resources.Res import librechat_mobile.feature.conversations.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:Res.kt$import kotlin.ByteArray import kotlin.OptIn import kotlin.String import kotlin.Suppress import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.getResourceUri import org.jetbrains.compose.resources.readResourceBytes</ID>
|
||||
<ID>ImportOrdering:String0.commonMain.kt$import kotlin.OptIn import kotlin.String import kotlin.collections.MutableMap import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.ResourceContentHash import org.jetbrains.compose.resources.ResourceItem import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:TagFilterBar.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.expandVertically import androidx.compose.animation.shrinkVertically import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.BookmarkBorder import androidx.compose.material.icons.filled.Close import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FilterChip import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.model.ConversationTag import librechat_mobile.feature.conversations.generated.resources.Res import librechat_mobile.feature.conversations.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:TagPicker.kt$import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import com.garfiec.librechat.core.model.ConversationTag import com.garfiec.librechat.core.ui.components.FilterChipBottomSheet import librechat_mobile.feature.conversations.generated.resources.Res import librechat_mobile.feature.conversations.generated.resources.* import org.jetbrains.compose.resources.stringResource</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:ConversationListScreen.kt$onConversationClick</ID>
|
||||
<ID>MaxLineLength:ConversationExporter.kt$ConversationExporter$val exportDate = "${now.year}-${now.monthNumber.toString().padStart(2, '0')}-${now.dayOfMonth.toString().padStart(2, '0')} ${now.hour.toString().padStart(2, '0')}:${now.minute.toString().padStart(2, '0')}"</ID>
|
||||
<ID>MaxLineLength:Res.kt$Res$public</ID>
|
||||
<ID>MaxLineLength:Res.kt$Res$public suspend</ID>
|
||||
<ID>PackageName:ExpectResourceCollectors.kt$package librechat_mobile.feature.conversations.generated.resources</ID>
|
||||
<ID>PackageName:Res.kt$package librechat_mobile.feature.conversations.generated.resources</ID>
|
||||
<ID>PackageName:String0.commonMain.kt$package librechat_mobile.feature.conversations.generated.resources</ID>
|
||||
<ID>PackageNaming:ExpectResourceCollectors.kt$package librechat_mobile.feature.conversations.generated.resources</ID>
|
||||
<ID>PackageNaming:Res.kt$package librechat_mobile.feature.conversations.generated.resources</ID>
|
||||
<ID>PackageNaming:String0.commonMain.kt$package librechat_mobile.feature.conversations.generated.resources</ID>
|
||||
<ID>ParameterNaming:ConversationListScreen.kt$onNavigateToArchived</ID>
|
||||
<ID>ParameterNaming:ConversationSearchBar.kt$onQueryChanged</ID>
|
||||
<ID>ParameterNaming:ExportFormatPicker.kt$onFormatSelected</ID>
|
||||
<ID>ParameterNaming:TagPicker.kt$onTagsChanged</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:ConversationsNavigation.kt$ArchivedConversations : ConversationsRoute</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
25
feature/files/detekt-baseline.xml
Normal file
25
feature/files/detekt-baseline.xml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues/>
|
||||
<CurrentIssues>
|
||||
<ID>Filename:FilePicker.kt$com.garfiec.librechat.feature.files.platform.FilePicker.kt</ID>
|
||||
<ID>FunctionNaming:String0.commonMain.kt$@InternalResourceApi internal fun _collectCommonMainString0Resources(map: MutableMap<String, StringResource>)</ID>
|
||||
<ID>ImportOrdering:ExpectResourceCollectors.kt$import kotlin.String import kotlin.collections.Map import org.jetbrains.compose.resources.DrawableResource import org.jetbrains.compose.resources.FontResource import org.jetbrains.compose.resources.PluralStringResource import org.jetbrains.compose.resources.StringArrayResource import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:FilePreviewDialog.kt$import androidx.compose.foundation.gestures.rememberTransformableState import androidx.compose.foundation.gestures.transformable import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.AudioFile import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.Description import androidx.compose.material.icons.filled.ErrorOutline import androidx.compose.material.icons.filled.Image import androidx.compose.material.icons.filled.PictureAsPdf import androidx.compose.material.icons.filled.VideoFile import androidx.compose.material3.Card import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableFloatStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties import coil3.compose.AsyncImage import co.touchlab.kermit.Logger import com.garfiec.librechat.feature.files.FilePreviewDisplayData import com.garfiec.librechat.feature.files.platform.PdfPreview import org.jetbrains.compose.resources.stringResource import librechat_mobile.feature.files.generated.resources.Res import librechat_mobile.feature.files.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:FileSortMenu.kt$import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowDownward import androidx.compose.material.icons.filled.ArrowUpward import androidx.compose.material.icons.filled.Check import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import org.jetbrains.compose.resources.stringResource import librechat_mobile.feature.files.generated.resources.Res import librechat_mobile.feature.files.generated.resources.* import com.garfiec.librechat.feature.files.viewmodel.FileSortField import com.garfiec.librechat.feature.files.viewmodel.FileSortOrder</ID>
|
||||
<ID>ImportOrdering:FilesScreen.kt$import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.automirrored.filled.InsertDriveFile import androidx.compose.material.icons.automirrored.filled.Sort import androidx.compose.material.icons.automirrored.filled.ViewList import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.AudioFile import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.Code import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Description import androidx.compose.material.icons.filled.Edit import androidx.compose.material.icons.filled.Folder import androidx.compose.material.icons.filled.GridView import androidx.compose.material.icons.filled.Image import androidx.compose.material.icons.filled.PictureAsPdf import androidx.compose.material.icons.filled.SelectAll import androidx.compose.material.icons.filled.VideoFile import androidx.compose.material3.AlertDialog import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Checkbox import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.ScrollableTabRow import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Tab import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.material3.pulltorefresh.PullToRefreshBox import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil3.compose.AsyncImage import com.garfiec.librechat.core.ui.components.EmptyState import com.garfiec.librechat.core.ui.components.ErrorBanner import com.garfiec.librechat.feature.files.FileDisplayData import com.garfiec.librechat.feature.files.components.UploadProgressCard import com.garfiec.librechat.feature.files.platform.rememberFilePickerLauncher import com.garfiec.librechat.feature.files.viewmodel.FileTypeFilter import com.garfiec.librechat.feature.files.viewmodel.FileViewMode import com.garfiec.librechat.feature.files.viewmodel.FilesViewModel import org.jetbrains.compose.resources.stringResource import librechat_mobile.feature.files.generated.resources.Res import librechat_mobile.feature.files.generated.resources.* import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:FilesViewModel.kt$import androidx.compose.runtime.Immutable import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.data.datastore.ServerDataStore import com.garfiec.librechat.core.data.repository.FileRepository import com.garfiec.librechat.core.model.FileObject import com.garfiec.librechat.core.model.request.DeleteFileEntry import com.garfiec.librechat.feature.files.FileDisplayData import com.garfiec.librechat.feature.files.FilePreviewDisplayData import com.garfiec.librechat.feature.files.platform.FileReader import com.garfiec.librechat.feature.files.platform.formatFileSize import kotlinx.coroutines.Job import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import co.touchlab.kermit.Logger import kotlin.uuid.ExperimentalUuidApi import kotlin.uuid.Uuid</ID>
|
||||
<ID>ImportOrdering:Res.kt$import kotlin.ByteArray import kotlin.OptIn import kotlin.String import kotlin.Suppress import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.getResourceUri import org.jetbrains.compose.resources.readResourceBytes</ID>
|
||||
<ID>ImportOrdering:String0.commonMain.kt$import kotlin.OptIn import kotlin.String import kotlin.collections.MutableMap import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.ResourceContentHash import org.jetbrains.compose.resources.ResourceItem import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:UploadProgressCard.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.slideInVertically import androidx.compose.animation.slideOutVertically import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.UploadFile import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.LinearProgressIndicator import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import org.jetbrains.compose.resources.stringResource import librechat_mobile.feature.files.generated.resources.Res import librechat_mobile.feature.files.generated.resources.*</ID>
|
||||
<ID>MaxLineLength:Res.kt$Res$public suspend</ID>
|
||||
<ID>PackageName:ExpectResourceCollectors.kt$package librechat_mobile.feature.files.generated.resources</ID>
|
||||
<ID>PackageName:Res.kt$package librechat_mobile.feature.files.generated.resources</ID>
|
||||
<ID>PackageName:String0.commonMain.kt$package librechat_mobile.feature.files.generated.resources</ID>
|
||||
<ID>PackageNaming:ExpectResourceCollectors.kt$package librechat_mobile.feature.files.generated.resources</ID>
|
||||
<ID>PackageNaming:Res.kt$package librechat_mobile.feature.files.generated.resources</ID>
|
||||
<ID>PackageNaming:String0.commonMain.kt$package librechat_mobile.feature.files.generated.resources</ID>
|
||||
<ID>ParameterNaming:FilePicker.kt$onFilePicked</ID>
|
||||
<ID>ParameterNaming:FileSortMenu.kt$onSortSelected</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
97
feature/settings/detekt-baseline.xml
Normal file
97
feature/settings/detekt-baseline.xml
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues/>
|
||||
<CurrentIssues>
|
||||
<ID>DeprecatedKoinApi:SettingsModule.kt$viewModel { SettingsViewModel( contentReader = get(), cacheCleaner = get(), userRepository = get(), authRepository = get(), conversationRepository = get(), themeDataStore = get(), serverDataStore = get(), settingsDataStore = get(), mcpRepository = get(), memoryRepository = get(), speechSettingsFactory = get(), balanceRepository = get(), shareRepository = get(), keyRepository = get(), ) }</ID>
|
||||
<ID>FunctionNaming:String0.commonMain.kt$@InternalResourceApi internal fun _collectCommonMainString0Resources(map: MutableMap<String, StringResource>)</ID>
|
||||
<ID>FunctionNaming:String1.commonMain.kt$@InternalResourceApi internal fun _collectCommonMainString1Resources(map: MutableMap<String, StringResource>)</ID>
|
||||
<ID>FunctionNaming:String2.commonMain.kt$@InternalResourceApi internal fun _collectCommonMainString2Resources(map: MutableMap<String, StringResource>)</ID>
|
||||
<ID>ImportOrdering:AccountSection.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.CameraAlt import androidx.compose.material.icons.filled.Person import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import coil3.compose.AsyncImage import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:AccountSettingsScreen.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight import androidx.compose.material.icons.filled.CameraAlt import androidx.compose.material.icons.filled.Key import androidx.compose.material.icons.filled.Person import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarResult import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.layout.ContentScale import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil3.compose.AsyncImage import com.garfiec.librechat.core.ui.components.ErrorBanner import com.garfiec.librechat.core.ui.components.LoadingIndicator import com.garfiec.librechat.core.ui.components.OtpVerificationDialog import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.* import com.garfiec.librechat.feature.settings.screen.sections.BackupCodesDialog import com.garfiec.librechat.feature.settings.screen.sections.TwoFactorCodeDialog import com.garfiec.librechat.feature.settings.screen.sections.TwoFactorSetupDialog import com.garfiec.librechat.feature.settings.viewmodel.SettingsViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:ApiKeyCreateDialog.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ContentCopy import androidx.compose.material3.AlertDialog import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import com.garfiec.librechat.feature.settings.util.copyToClipboard import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.model.ApiKey import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ApiKeysScreen.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Key import androidx.compose.material3.AlertDialog import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.material3.pulltorefresh.PullToRefreshBox import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.garfiec.librechat.core.model.ApiKey import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.* import com.garfiec.librechat.feature.settings.viewmodel.ApiKeysViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:AppearanceSection.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.selection.selectable import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Tablet import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.data.datastore.ThemeMode import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:BalanceSection.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.AccountBalanceWallet import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ChatPreferencesSection.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ChatSettingsScreen.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.automirrored.filled.Chat import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight import androidx.compose.material.icons.filled.Brush import androidx.compose.material.icons.filled.Terminal import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.* import com.garfiec.librechat.feature.settings.viewmodel.SettingsViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:ChatSettingsSection.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.selection.selectable import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.common.ChatLayoutConstants import com.garfiec.librechat.core.data.datastore.ChatFontSize import com.garfiec.librechat.core.data.datastore.LatexRenderer import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:CommandsConfigScreen.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:DataManagementDelegate.kt$import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.feature.settings.util.PlatformCacheCleaner import com.garfiec.librechat.core.data.repository.ConversationRepository import com.garfiec.librechat.core.data.repository.KeyRepository import com.garfiec.librechat.core.data.repository.ShareRepository import com.garfiec.librechat.core.model.SharedLink import com.garfiec.librechat.feature.settings.model.SharedLinkDisplayData import com.garfiec.librechat.feature.settings.viewmodel.SettingsStateHandle import kotlinx.coroutines.launch</ID>
|
||||
<ID>ImportOrdering:DataManagementSection.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:DataSettingsScreen.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight import androidx.compose.material3.AlertDialog import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.* import com.garfiec.librechat.feature.settings.viewmodel.SettingsViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:DataSettingsSection.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight import androidx.compose.material.icons.filled.Archive import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:ExpectResourceCollectors.kt$import kotlin.String import kotlin.collections.Map import org.jetbrains.compose.resources.DrawableResource import org.jetbrains.compose.resources.FontResource import org.jetbrains.compose.resources.PluralStringResource import org.jetbrains.compose.resources.StringArrayResource import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:ForkSettingsDialog.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.selection.selectable import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.AlertDialog import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.model.request.ForkOption import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:GeneralSettingsScreen.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.selection.selectable import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight import androidx.compose.material.icons.filled.Language import androidx.compose.material.icons.filled.Person import androidx.compose.material.icons.filled.Tablet import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.vector.ImageVector import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.garfiec.librechat.core.data.datastore.ThemeMode import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.* import com.garfiec.librechat.feature.settings.viewmodel.SettingsViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:LanguageSelectorDialog.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Check import androidx.compose.material3.AlertDialog import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:McpServerDelegate.kt$import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.data.repository.McpRepository import com.garfiec.librechat.core.model.mcp.McpApiKeyConfig import com.garfiec.librechat.core.model.mcp.McpOAuthConfig import com.garfiec.librechat.core.model.mcp.McpServer import com.garfiec.librechat.core.model.mcp.McpServerType import com.garfiec.librechat.feature.settings.viewmodel.SettingsStateHandle import kotlinx.coroutines.launch import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:McpServersScreen.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Build import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Edit import androidx.compose.material.icons.filled.Refresh import androidx.compose.material3.AlertDialog import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarResult import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.material3.pulltorefresh.PullToRefreshBox import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.garfiec.librechat.core.model.mcp.McpServer import com.garfiec.librechat.core.model.mcp.McpServerStatus import com.garfiec.librechat.core.ui.components.ErrorBanner import com.garfiec.librechat.core.ui.components.LoadingIndicator import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.* import com.garfiec.librechat.feature.settings.viewmodel.McpViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:McpSettingsSection.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Edit import androidx.compose.material.icons.filled.Refresh import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.model.mcp.McpServer import com.garfiec.librechat.core.model.mcp.McpServerStatus import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:McpToolList.kt$import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.expandVertically import androidx.compose.animation.shrinkVertically import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Build import androidx.compose.material.icons.filled.KeyboardArrowDown import androidx.compose.material.icons.filled.KeyboardArrowUp import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.model.mcp.McpTool import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:McpToolsSheet.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.model.mcp.McpTool import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:McpViewModel.kt$import androidx.compose.runtime.Immutable import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.data.repository.McpRepository import com.garfiec.librechat.core.model.mcp.McpApiKeyConfig import com.garfiec.librechat.core.model.mcp.McpOAuthConfig import com.garfiec.librechat.core.model.mcp.McpServer import com.garfiec.librechat.core.model.mcp.McpServerStatus import com.garfiec.librechat.core.model.mcp.McpServerType import com.garfiec.librechat.core.model.mcp.McpTool import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:MemoriesScreen.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Edit import androidx.compose.material3.AlertDialog import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarResult import androidx.compose.material3.Surface import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.material3.pulltorefresh.PullToRefreshBox import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.garfiec.librechat.core.model.Memory import com.garfiec.librechat.core.ui.components.ErrorBanner import com.garfiec.librechat.core.ui.components.LoadingIndicator import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.* import com.garfiec.librechat.feature.settings.viewmodel.MemoriesViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:MemoriesSettingsSection.kt$import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Edit import androidx.compose.material3.AlertDialog import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.model.Memory import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:MemoryEditDialog.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.material3.AlertDialog import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.model.Memory import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:MemoryManagementDelegate.kt$import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.data.repository.MemoryRepository import com.garfiec.librechat.core.model.Memory import com.garfiec.librechat.core.model.request.CreateMemoryRequest import com.garfiec.librechat.core.model.request.UpdateMemoryPreferencesRequest import com.garfiec.librechat.core.model.request.UpdateMemoryRequest import com.garfiec.librechat.feature.settings.viewmodel.SettingsStateHandle import kotlinx.coroutines.launch import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:PersonalizationDialog.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.width import androidx.compose.material3.AlertDialog import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:PresetManagerScreen.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Tune import androidx.compose.material3.AlertDialog import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.material3.pulltorefresh.PullToRefreshBox import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.garfiec.librechat.core.ui.components.EmptyState import com.garfiec.librechat.core.ui.components.LoadingIndicator import com.garfiec.librechat.feature.settings.model.PresetManagerDisplayData import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.* import com.garfiec.librechat.feature.settings.viewmodel.PresetManagerViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:Res.kt$import kotlin.ByteArray import kotlin.OptIn import kotlin.String import kotlin.Suppress import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.getResourceUri import org.jetbrains.compose.resources.readResourceBytes</ID>
|
||||
<ID>ImportOrdering:SecuritySection.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.CheckCircle import androidx.compose.material.icons.filled.Warning import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:SecuritySection.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.material3.AlertDialog import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.dp import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:SettingsScreen.kt$import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.automirrored.filled.Chat import androidx.compose.material.icons.filled.Key import androidx.compose.material.icons.filled.Language import androidx.compose.material.icons.filled.Person import androidx.compose.material.icons.filled.Terminal import androidx.compose.material3.AlertDialog import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarResult import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.garfiec.librechat.core.ui.components.ErrorBanner import com.garfiec.librechat.core.ui.components.LoadingIndicator import com.garfiec.librechat.core.ui.components.OtpVerificationDialog import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.* import com.garfiec.librechat.feature.settings.screen.sections.AboutInfo import com.garfiec.librechat.feature.settings.screen.sections.AccountInfo import com.garfiec.librechat.feature.settings.screen.sections.BackupCodesDialog import com.garfiec.librechat.feature.settings.screen.sections.DangerZone import com.garfiec.librechat.feature.settings.screen.sections.DataExtraActions import com.garfiec.librechat.feature.settings.screen.sections.SettingsRow import com.garfiec.librechat.feature.settings.screen.sections.SpeechDetailButtons import com.garfiec.librechat.feature.settings.screen.sections.TabletSidebarGestureToggle import com.garfiec.librechat.feature.settings.screen.sections.ThemeSelector import com.garfiec.librechat.feature.settings.screen.sections.TwoFactorCodeDialog import com.garfiec.librechat.feature.settings.screen.sections.TwoFactorSetupDialog import com.garfiec.librechat.feature.settings.viewmodel.SettingsViewModel import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:SettingsViewModel.kt$import androidx.compose.runtime.Immutable import com.garfiec.librechat.feature.settings.util.ContentReader import com.garfiec.librechat.feature.settings.util.PlatformCacheCleaner import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.garfiec.librechat.core.common.ChatLayoutConstants import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.core.data.datastore.ChatFontSize import com.garfiec.librechat.core.data.datastore.LatexRenderer import com.garfiec.librechat.core.data.datastore.ServerDataStore import com.garfiec.librechat.core.data.datastore.SettingsDataStore import com.garfiec.librechat.core.data.datastore.ThemeDataStore import com.garfiec.librechat.core.data.datastore.ThemeMode import com.garfiec.librechat.core.data.repository.AuthRepository import com.garfiec.librechat.core.data.repository.BalanceRepository import com.garfiec.librechat.core.data.repository.ConversationRepository import com.garfiec.librechat.core.data.repository.KeyRepository import com.garfiec.librechat.core.data.repository.McpRepository import com.garfiec.librechat.core.data.repository.MemoryRepository import com.garfiec.librechat.core.data.repository.ShareRepository import com.garfiec.librechat.core.data.repository.SpeechRepository import com.garfiec.librechat.core.data.repository.UserRepository import com.garfiec.librechat.core.model.Memory import com.garfiec.librechat.core.model.User import com.garfiec.librechat.core.model.mcp.McpApiKeyConfig import com.garfiec.librechat.core.model.mcp.McpOAuthConfig import com.garfiec.librechat.core.model.mcp.McpServer import com.garfiec.librechat.core.model.mcp.McpServerStatus import com.garfiec.librechat.core.model.mcp.McpServerType import com.garfiec.librechat.core.model.speech.TtsVoice import com.garfiec.librechat.feature.settings.model.SharedLinkDisplayData import com.garfiec.librechat.feature.settings.model.UserDisplayData import com.garfiec.librechat.feature.settings.screen.DeviceVoiceInfo import com.garfiec.librechat.feature.settings.viewmodel.delegate.DataManagementDelegate import com.garfiec.librechat.feature.settings.viewmodel.delegate.McpServerDelegate import com.garfiec.librechat.feature.settings.viewmodel.delegate.MemoryManagementDelegate import com.garfiec.librechat.feature.settings.viewmodel.delegate.SpeechSettingsFactory import com.garfiec.librechat.feature.settings.viewmodel.delegate.TwoFactorSecurityDelegate import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import co.touchlab.kermit.Logger</ID>
|
||||
<ID>ImportOrdering:SharedLinksScreen.kt$import com.garfiec.librechat.feature.settings.util.copyToClipboard import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.ContentCopy import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Link import androidx.compose.material.icons.filled.Visibility import androidx.compose.material.icons.filled.VisibilityOff import androidx.compose.material3.AlertDialog import androidx.compose.material3.Card import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.ui.components.EmptyState import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.* import com.garfiec.librechat.feature.settings.model.SharedLinkDisplayData</ID>
|
||||
<ID>ImportOrdering:SpeechDetailDialogs.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.PlayArrow import androidx.compose.material.icons.filled.Stop import androidx.compose.material3.AlertDialog import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExposedDropdownMenuBox import androidx.compose.material3.ExposedDropdownMenuDefaults import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MenuAnchorType import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Slider import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableFloatStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:SpeechSection.kt$import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.unit.dp import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:SpeechSettingsSection.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.Button import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExposedDropdownMenuBox import androidx.compose.material3.ExposedDropdownMenuDefaults import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MenuAnchorType import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import com.garfiec.librechat.core.model.speech.TtsVoice import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.*</ID>
|
||||
<ID>ImportOrdering:String0.commonMain.kt$import kotlin.OptIn import kotlin.String import kotlin.collections.MutableMap import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.ResourceContentHash import org.jetbrains.compose.resources.ResourceItem import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:String1.commonMain.kt$import kotlin.OptIn import kotlin.String import kotlin.collections.MutableMap import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.ResourceContentHash import org.jetbrains.compose.resources.ResourceItem import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:String2.commonMain.kt$import kotlin.OptIn import kotlin.String import kotlin.collections.MutableMap import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.ResourceContentHash import org.jetbrains.compose.resources.ResourceItem import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:TabbedSettingsScreen.kt$import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.Scaffold import androidx.compose.material3.SecondaryTabRow import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Tab import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import org.jetbrains.compose.resources.stringResource import librechat_mobile.feature.settings.generated.resources.Res import librechat_mobile.feature.settings.generated.resources.* import com.garfiec.librechat.feature.settings.viewmodel.SettingsViewModel import kotlinx.coroutines.launch import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:TwoFactorSecurityDelegate.kt$import com.garfiec.librechat.core.common.result.Result import com.garfiec.librechat.feature.settings.viewmodel.isHttpStatus import com.garfiec.librechat.core.data.repository.AuthRepository import com.garfiec.librechat.feature.settings.viewmodel.SettingsStateHandle import kotlinx.coroutines.launch</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:AccountSettingsScreen.kt$onLogout</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:SettingsScreen.kt$onLogout</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:SharedLinksScreen.kt$onLoadMore</ID>
|
||||
<ID>MaxLineLength:Res.kt$Res$public suspend</ID>
|
||||
<ID>ModifierNotUsedAtRoot:AccountSettingsScreen.kt$modifier = modifier</ID>
|
||||
<ID>ModifierNotUsedAtRoot:AccountSettingsScreen.kt$modifier = modifier.fillMaxSize()</ID>
|
||||
<ID>ModifierNotUsedAtRoot:ChatSettingsScreen.kt$modifier = modifier.fillMaxSize()</ID>
|
||||
<ID>ModifierNotUsedAtRoot:DataSettingsScreen.kt$modifier = modifier.fillMaxSize()</ID>
|
||||
<ID>ModifierNotUsedAtRoot:GeneralSettingsScreen.kt$modifier = modifier.fillMaxSize()</ID>
|
||||
<ID>NoUnusedImports:SettingsViewModel.kt$com.garfiec.librechat.feature.settings.viewmodel.SettingsViewModel.kt</ID>
|
||||
<ID>PackageName:ExpectResourceCollectors.kt$package librechat_mobile.feature.settings.generated.resources</ID>
|
||||
<ID>PackageName:Res.kt$package librechat_mobile.feature.settings.generated.resources</ID>
|
||||
<ID>PackageName:String0.commonMain.kt$package librechat_mobile.feature.settings.generated.resources</ID>
|
||||
<ID>PackageName:String1.commonMain.kt$package librechat_mobile.feature.settings.generated.resources</ID>
|
||||
<ID>PackageName:String2.commonMain.kt$package librechat_mobile.feature.settings.generated.resources</ID>
|
||||
<ID>PackageNaming:ExpectResourceCollectors.kt$package librechat_mobile.feature.settings.generated.resources</ID>
|
||||
<ID>PackageNaming:Res.kt$package librechat_mobile.feature.settings.generated.resources</ID>
|
||||
<ID>PackageNaming:String0.commonMain.kt$package librechat_mobile.feature.settings.generated.resources</ID>
|
||||
<ID>PackageNaming:String1.commonMain.kt$package librechat_mobile.feature.settings.generated.resources</ID>
|
||||
<ID>PackageNaming:String2.commonMain.kt$package librechat_mobile.feature.settings.generated.resources</ID>
|
||||
<ID>ParameterNaming:DataSettingsScreen.kt$onNavigateToArchived</ID>
|
||||
<ID>ParameterNaming:DataSettingsSection.kt$onViewArchived</ID>
|
||||
<ID>ParameterNaming:ForkSettingsDialog.kt$onModeSelected</ID>
|
||||
<ID>ParameterNaming:LanguageSelectorDialog.kt$onLanguageSelected</ID>
|
||||
<ID>ParameterNaming:MemoriesSettingsSection.kt$onToggleEnabled</ID>
|
||||
<ID>ParameterNaming:SettingsScreen.kt$onNavigateToArchived</ID>
|
||||
<ID>ParameterNaming:SpeechSettingsSection.kt$onVoiceSelected</ID>
|
||||
<ID>ParameterNaming:TabbedSettingsScreen.kt$onNavigateToArchived</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:SettingsNavigation.kt$ApiKeys : SettingsRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:SettingsNavigation.kt$PresetManager : SettingsRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:SettingsNavigation.kt$SettingsAccount : SettingsRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:SettingsNavigation.kt$SettingsChat : SettingsRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:SettingsNavigation.kt$SettingsData : SettingsRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:SettingsNavigation.kt$SettingsGeneral : SettingsRoute</ID>
|
||||
<ID>SpacingBetweenDeclarationsWithAnnotations:SettingsNavigation.kt$SharedLinks : SettingsRoute</ID>
|
||||
<ID>ViewModelForwarding:AccountSettingsScreen.kt$AccountSettingsContent( onLogout = onLogout, onNavigateToApiKeys = onNavigateToApiKeys, snackbarHostState = snackbarHostState, modifier = Modifier .fillMaxSize() .padding(innerPadding), viewModel = viewModel, )</ID>
|
||||
<ID>ViewModelForwarding:ChatSettingsScreen.kt$ChatSettingsContent( onNavigateToPresets = onNavigateToPresets, modifier = Modifier .fillMaxSize() .padding(innerPadding), viewModel = viewModel, )</ID>
|
||||
<ID>ViewModelForwarding:DataSettingsScreen.kt$DataSettingsContent( onNavigateToArchived = onNavigateToArchived, onNavigateToSharedLinks = onNavigateToSharedLinks, snackbarHostState = snackbarHostState, modifier = Modifier .fillMaxSize() .padding(innerPadding), viewModel = viewModel, )</ID>
|
||||
<ID>ViewModelForwarding:GeneralSettingsScreen.kt$GeneralSettingsContent( modifier = Modifier .fillMaxSize() .padding(innerPadding), viewModel = viewModel, )</ID>
|
||||
<ID>ViewModelForwarding:TabbedSettingsScreen.kt$AccountSettingsContent( onLogout = onLogout, onNavigateToApiKeys = onNavigateToApiKeys, snackbarHostState = snackbarHostState, modifier = Modifier.fillMaxSize(), viewModel = viewModel, )</ID>
|
||||
<ID>ViewModelForwarding:TabbedSettingsScreen.kt$ChatSettingsContent( onNavigateToPresets = onNavigateToPresets, modifier = Modifier.fillMaxSize(), viewModel = viewModel, )</ID>
|
||||
<ID>ViewModelForwarding:TabbedSettingsScreen.kt$DataSettingsContent( onNavigateToArchived = onNavigateToArchived, onNavigateToSharedLinks = onNavigateToSharedLinks, snackbarHostState = snackbarHostState, modifier = Modifier.fillMaxSize(), viewModel = viewModel, )</ID>
|
||||
<ID>ViewModelForwarding:TabbedSettingsScreen.kt$GeneralSettingsContent( modifier = Modifier.fillMaxSize(), viewModel = viewModel, )</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
|
|
@ -28,7 +28,6 @@ import androidx.compose.runtime.mutableStateOf
|
|||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import org.jetbrains.compose.resources.stringResource
|
||||
import androidx.compose.ui.text.input.PasswordVisualTransformation
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.garfiec.librechat.core.model.mcp.McpApiKeyConfig
|
||||
|
|
@ -38,8 +37,9 @@ import com.garfiec.librechat.core.model.mcp.McpAuthorizationType
|
|||
import com.garfiec.librechat.core.model.mcp.McpOAuthConfig
|
||||
import com.garfiec.librechat.core.model.mcp.McpServer
|
||||
import com.garfiec.librechat.core.model.mcp.McpServerType
|
||||
import librechat_mobile.feature.settings.generated.resources.Res
|
||||
import librechat_mobile.feature.settings.generated.resources.*
|
||||
import librechat_mobile.feature.settings.generated.resources.Res
|
||||
import org.jetbrains.compose.resources.stringResource
|
||||
|
||||
/** Add/edit MCP server dialog with server type dropdown and auth configuration. */
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
|
|
|
|||
|
|
@ -168,6 +168,7 @@ room-gradlePlugin = { group = "androidx.room", name = "room-gradle-plugin", vers
|
|||
# Code Quality
|
||||
detekt-formatting = { group = "io.gitlab.arturbosch.detekt", name = "detekt-formatting", version.ref = "detekt" }
|
||||
detekt-koin = { group = "dev.androidbroadcast.rules.koin", name = "detekt-koin4-rules", version = "1.1.0" }
|
||||
detekt-compose = { group = "io.nlopez.compose.rules", name = "detekt", version = "0.4.28" }
|
||||
detekt-gradlePlugin = { group = "io.gitlab.arturbosch.detekt", name = "detekt-gradle-plugin", version.ref = "detekt" }
|
||||
leakcanary = { group = "com.squareup.leakcanary", name = "leakcanary-android", version = "2.14" }
|
||||
compose-lint-checks = { group = "com.slack.lint.compose", name = "compose-lint-checks", version.ref = "compose-lint-checks" }
|
||||
|
|
|
|||
32
shared/detekt-baseline.xml
Normal file
32
shared/detekt-baseline.xml
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues/>
|
||||
<CurrentIssues>
|
||||
<ID>ComposableParamOrder:LibreChatNavHost.kt$MainNavDisplay</ID>
|
||||
<ID>FunctionNaming:String0.commonMain.kt$@InternalResourceApi internal fun _collectCommonMainString0Resources(map: MutableMap<String, StringResource>)</ID>
|
||||
<ID>ImportOrdering:DrawerDisplayMapping.kt$import com.garfiec.librechat.core.common.extensions.toInstantOrNull import com.garfiec.librechat.core.common.extensions.formatMonthAbbrev import com.garfiec.librechat.core.model.Conversation import kotlin.time.Clock import kotlin.time.Instant import kotlinx.datetime.TimeZone import kotlinx.datetime.toLocalDateTime</ID>
|
||||
<ID>ImportOrdering:ExpectResourceCollectors.kt$import kotlin.String import kotlin.collections.Map import org.jetbrains.compose.resources.DrawableResource import org.jetbrains.compose.resources.FontResource import org.jetbrains.compose.resources.PluralStringResource import org.jetbrains.compose.resources.StringArrayResource import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>ImportOrdering:LibreChatNavHost.kt$import androidx.compose.animation.core.FastOutSlowInEasing import androidx.compose.animation.core.LinearEasing import androidx.compose.animation.core.tween import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.scaleIn import androidx.compose.animation.scaleOut import androidx.compose.animation.slideInHorizontally import androidx.compose.animation.slideOutHorizontally import androidx.compose.animation.togetherWith import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material3.AlertDialog import androidx.compose.material3.DrawerValue import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalDrawerSheet import androidx.compose.material3.ModalNavigationDrawer import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.rememberDrawerState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation3.runtime.NavKey import androidx.navigation3.runtime.entryProvider import androidx.navigation3.runtime.rememberNavBackStack import androidx.navigation3.ui.NavDisplay import androidx.navigation3.runtime.rememberSaveableStateHolderNavEntryDecorator import androidx.lifecycle.viewmodel.navigation3.rememberViewModelStoreNavEntryDecorator import com.garfiec.librechat.core.ui.components.BannerDisplay import com.garfiec.librechat.feature.agents.navigation.AgentMarketplace import com.garfiec.librechat.feature.agents.navigation.agentsEntries import com.garfiec.librechat.feature.auth.navigation.AuthRoute import com.garfiec.librechat.feature.auth.navigation.ServerUrl import com.garfiec.librechat.feature.auth.navigation.authEntries import com.garfiec.librechat.feature.chat.navigation.Chat import com.garfiec.librechat.feature.chat.navigation.NewChat import com.garfiec.librechat.feature.chat.navigation.chatEntries import com.garfiec.librechat.feature.conversations.navigation.ArchivedConversations import com.garfiec.librechat.feature.conversations.navigation.conversationsEntries import com.garfiec.librechat.feature.files.navigation.Files import com.garfiec.librechat.feature.files.navigation.filesEntries import com.garfiec.librechat.feature.settings.navigation.SettingsTabbed import com.garfiec.librechat.feature.settings.navigation.memoriesEntry import com.garfiec.librechat.feature.settings.navigation.mcpServersEntry import com.garfiec.librechat.feature.settings.navigation.settingsEntries import kotlinx.coroutines.launch import librechat_mobile.shared.generated.resources.Res import librechat_mobile.shared.generated.resources.dismiss import librechat_mobile.shared.generated.resources.dont_warn_again import librechat_mobile.shared.generated.resources.version_mismatch_message import librechat_mobile.shared.generated.resources.version_mismatch_title import org.jetbrains.compose.resources.stringResource import org.koin.compose.viewmodel.koinViewModel</ID>
|
||||
<ID>ImportOrdering:NavHostViewModel.kt$import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.garfiec.librechat.core.data.repository.AuthRepository import com.garfiec.librechat.core.data.repository.BannerRepository import com.garfiec.librechat.core.data.datastore.SettingsDataStore import com.garfiec.librechat.core.data.repository.ConfigRepository import com.garfiec.librechat.core.data.repository.ConversationRepository import com.garfiec.librechat.core.model.Banner import com.garfiec.librechat.core.network.client.TokenManager import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import co.touchlab.kermit.Logger import com.garfiec.librechat.core.common.extensions.firstBlocking</ID>
|
||||
<ID>ImportOrdering:Res.kt$import kotlin.ByteArray import kotlin.OptIn import kotlin.String import kotlin.Suppress import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.getResourceUri import org.jetbrains.compose.resources.readResourceBytes</ID>
|
||||
<ID>ImportOrdering:String0.commonMain.kt$import kotlin.OptIn import kotlin.String import kotlin.collections.MutableMap import org.jetbrains.compose.resources.InternalResourceApi import org.jetbrains.compose.resources.ResourceContentHash import org.jetbrains.compose.resources.ResourceItem import org.jetbrains.compose.resources.StringResource</ID>
|
||||
<ID>LambdaParameterInRestartableEffect:DrawerContent.kt$onLoadMore</ID>
|
||||
<ID>MaxLineLength:NavHostViewModel.kt$NavHostViewModel$private val favoritesStateHolder = FavoritesStateHolder(settingsDataStore, conversationListStateHolder.recentConversations, viewModelScope)</ID>
|
||||
<ID>MaxLineLength:Res.kt$Res$public suspend</ID>
|
||||
<ID>NoUnusedImports:LibreChatNavHost.kt$com.garfiec.librechat.shared.navigation.LibreChatNavHost.kt</ID>
|
||||
<ID>PackageName:ExpectResourceCollectors.kt$package librechat_mobile.shared.generated.resources</ID>
|
||||
<ID>PackageName:Res.kt$package librechat_mobile.shared.generated.resources</ID>
|
||||
<ID>PackageName:String0.commonMain.kt$package librechat_mobile.shared.generated.resources</ID>
|
||||
<ID>PackageNaming:ExpectResourceCollectors.kt$package librechat_mobile.shared.generated.resources</ID>
|
||||
<ID>PackageNaming:Res.kt$package librechat_mobile.shared.generated.resources</ID>
|
||||
<ID>PackageNaming:String0.commonMain.kt$package librechat_mobile.shared.generated.resources</ID>
|
||||
<ID>ParameterNaming:DrawerContent.kt$onSearchQueryChanged</ID>
|
||||
<ID>ParameterNaming:SettingsSidebarContent.kt$onCategorySelected</ID>
|
||||
<ID>ParameterNaming:SidebarScaffold.kt$onSettingsCategorySelected</ID>
|
||||
<ID>PropertyWrapping:NavHostViewModel.kt$NavHostViewModel$private val favoritesStateHolder = FavoritesStateHolder(settingsDataStore, conversationListStateHolder.recentConversations, viewModelScope)</ID>
|
||||
<ID>ViewModelForwarding:LibreChatNavHost.kt$MainNavDisplay( navigator = navigator, navHostViewModel = navHostViewModel, onMenuClick = { scope.launch { drawerState.open() } }, modifier = Modifier.fillMaxSize(), )</ID>
|
||||
<ID>ViewModelForwarding:LibreChatNavHost.kt$PhoneLayout( navigator = navigator, navHostViewModel = navHostViewModel, modifier = modifier, )</ID>
|
||||
<ID>ViewModelForwarding:LibreChatNavHost.kt$SidebarScaffold( viewModel = navHostViewModel, onNewChat = { scope.launch { drawerState.close() } if (navigator.currentRoute !is NewChat) { navigator.navigateToTopLevel(NewChat) } }, onConversationClick = { conversationId -> scope.launch { drawerState.close() } navigator.navigateToChat(conversationId) }, onSettingsClick = { scope.launch { drawerState.close() } navigator.navigate(SettingsTabbed) }, onSettingsCategorySelected = { category -> navigator.navigate(category.toRoute()) }, onAgentsClick = { scope.launch { drawerState.close() } navigator.navigate(AgentMarketplace) }, onFilesClick = { scope.launch { drawerState.close() } navigator.navigate(Files) }, )</ID>
|
||||
<ID>ViewModelForwarding:SidebarScaffold.kt$DrawerContent( viewModel = viewModel, onNewChat = onNewChat, onConversationClick = onConversationClick, onSettingsClick = onSettingsClick, onAgentsClick = onAgentsClick, onFilesClick = onFilesClick, )</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
Loading…
Reference in a new issue