Commit graph

31 commits

Author SHA1 Message Date
Tim Abil
08f8445ea8 fix: bump JVM toolchain to 21 and centralize build constants
Extract JVM_TOOLCHAIN_VERSION, COMPILE_SDK, MIN_SDK, and TARGET_SDK
into a shared BuildConstants object so all convention plugins reference
a single source of truth.
2026-04-06 23:53:05 -04:00
Tim Abil
11ecdb590e fix: use jvmToolchain(17) to align Java and Kotlin JVM targets 2026-04-06 12:37:01 -04:00
Garfie Chiu
c8a98f9962
Merge pull request #14 from garfiec/refactor/consolidate-navigation
refactor: consolidate duplicate navigation code between app and shared modules
2026-04-05 22:38:37 -05:00
Garfie Chiu
bd29c2fde5
Merge pull request #9 from garfiec/dependabot/gradle/lifecycle-kmp-2.10.0
chore(deps): bump lifecycle-kmp from 2.9.0 to 2.10.0
2026-04-05 22:29:48 -05:00
dependabot[bot]
d4a277ddab
Bump lifecycle-kmp from 2.9.0 to 2.10.0
Bumps `lifecycle-kmp` from 2.9.0 to 2.10.0.

Updates `org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose` from 2.9.0 to 2.10.0
- [Release notes](https://github.com/JetBrains/compose-jb/releases)
- [Changelog](https://github.com/JetBrains/compose-multiplatform/blob/master/CHANGELOG.md)
- [Commits](https://github.com/JetBrains/compose-jb/commits)

Updates `org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose` from 2.9.0 to 2.10.0
- [Release notes](https://github.com/JetBrains/compose-jb/releases)
- [Changelog](https://github.com/JetBrains/compose-multiplatform/blob/master/CHANGELOG.md)
- [Commits](https://github.com/JetBrains/compose-jb/commits)

---
updated-dependencies:
- dependency-name: org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose
  dependency-version: 2.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose
  dependency-version: 2.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-06 03:29:14 +00:00
Garfie Chiu
d648be986a
Merge pull request #4 from garfiec/dependabot/gradle/lifecycle-2.10.0
chore(deps): bump lifecycle from 2.9.0 to 2.10.0
2026-04-05 22:27:59 -05:00
Garfie Chiu
37aad763d2
Merge pull request #11 from garfiec/dependabot/gradle/coil3-3.4.0
Bump coil3 from 3.3.0 to 3.4.0
2026-04-05 22:27:35 -05:00
Garfie
acd83661cc refactor: consolidate duplicate navigation code between app and shared modules 2026-04-05 20:50:48 -05:00
Garfie Chiu
8f43addcc3
Merge pull request #15 from garfiec/chore/ios-setup-audit
chore: fix iOS setup docs, remove dead Swift files, fix Xcode release build config
2026-04-05 18:48:58 -05:00
Garfie Chiu
c95c6fd57d
Merge pull request #13 from garfiec/fix/ios-room-db-crash
fix: create Application Support directory before opening Room database on iOS
2026-04-05 18:35:37 -05:00
Garfie
2d06b7e2f6 chore: fix iOS setup docs, remove dead Swift files, fix Xcode release build config 2026-04-05 18:25:53 -05:00
Garfie
21825a4943 fix: create Application Support directory before opening Room database on iOS 2026-04-05 15:42:34 -05:00
dependabot[bot]
746f52ea41
Bump lifecycle from 2.8.7 to 2.10.0
Bumps `lifecycle` from 2.8.7 to 2.10.0.

Updates `androidx.lifecycle:lifecycle-runtime-compose` from 2.8.7 to 2.10.0

Updates `androidx.lifecycle:lifecycle-viewmodel-compose` from 2.8.7 to 2.10.0

---
updated-dependencies:
- dependency-name: androidx.lifecycle:lifecycle-runtime-compose
  dependency-version: 2.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.lifecycle:lifecycle-viewmodel-compose
  dependency-version: 2.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-05 03:33:55 +00:00
Garfie Chiu
d8bdfa843b
Merge pull request #12 from garfiec/feature/nav3-migration
Migrate to Navigation Compose 3 with type-safe routes
2026-04-04 22:32:51 -05:00
Garfie
d8effb7ea3 chore: remove Nav 3 research document 2026-04-04 22:28:00 -05:00
Garfie
40ee348b12 refactor: migrate from Navigation Compose 2 to Navigation Compose 3 2026-04-04 22:26:27 -05:00
Garfie
2756efa812 refactor: convert navigation to type-safe routes with polymorphic serialization 2026-04-04 21:39:25 -05:00
dependabot[bot]
0da60b81a2
Bump coil3 from 3.3.0 to 3.4.0
Bumps `coil3` from 3.3.0 to 3.4.0.

Updates `io.coil-kt.coil3:coil-compose` from 3.3.0 to 3.4.0
- [Release notes](https://github.com/coil-kt/coil/releases)
- [Changelog](https://github.com/coil-kt/coil/blob/main/CHANGELOG.md)
- [Commits](https://github.com/coil-kt/coil/compare/3.3.0...3.4.0)

Updates `io.coil-kt.coil3:coil-network-ktor3` from 3.3.0 to 3.4.0
- [Release notes](https://github.com/coil-kt/coil/releases)
- [Changelog](https://github.com/coil-kt/coil/blob/main/CHANGELOG.md)
- [Commits](https://github.com/coil-kt/coil/compare/3.3.0...3.4.0)

---
updated-dependencies:
- dependency-name: io.coil-kt.coil3:coil-compose
  dependency-version: 3.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: io.coil-kt.coil3:coil-network-ktor3
  dependency-version: 3.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-04 00:32:55 +00:00
Garfie Chiu
9be9a57b9b
Merge pull request #8 from garfiec/chore/rename-to-mobile
Rename project from LibreChat Android to LibreChat Mobile
2026-04-03 16:57:52 -05:00
Garfie
00056b634b chore: rename project from LibreChat Android to LibreChat Mobile 2026-04-03 16:56:36 -05:00
Garfie Chiu
7652f669c4
Merge pull request #7 from garfiec/chore/package-rename
Rename package from com.librechat to com.garfiec.librechat
2026-04-03 16:20:55 -05:00
Garfie
e5c5b549db chore: rename package com.librechat to com.garfiec.librechat 2026-04-03 16:12:37 -05:00
Garfie Chiu
af7a662754
Merge pull request #6 from garfiec/kmp_migration
Kotlin Multiplatform migration with iOS parity
2026-04-03 15:08:21 -05:00
Garfie
4c3e0b13e4 Update README 2026-04-02 23:21:10 -05:00
Garfie
c627940a31 Upgrade to Kotlin 2.3.20, CMP 1.11, AGP 9.1, Gradle 9.4
- Kotlin 2.1.20 → 2.3.20, KSP → 2.3.6
- Compose Multiplatform 1.8.0 → 1.11.0-beta01
- AGP 8.7.3 → 9.1.0, Gradle 8.11.1 → 9.4.1
- Koin 4.1.0 → 4.2.0, Ktor 3.0.3 → 3.4.2
- kotlinx-serialization 1.7.3 → 1.10.0
- kotlinx-datetime 0.6.1 → 0.7.1 (Instant → kotlin.time)
- Room 2.7.1 → 2.8.4, sqlite-bundled 2.5.0 → 2.6.2
- Lifecycle 2.8.7 → 2.9.0, Navigation 2.8.5 → 2.9.2
- SKIE 0.10.10 → 0.10.11, Coil 3.1.0 → 3.3.0
- Kermit 2.0.4 → 2.1.0, DataStore 1.1.1 → 1.2.1
- Paging 3.3.5 → 3.4.2, Media3 1.2.0 → 1.10.0
- Markdown renderer 0.27.0 → 0.39.2
- compileSdk 35 → 36, Compose BOM → 2025.05.00
2026-04-02 19:54:58 -05:00
Garfie
770603e466 KMP iOS migration
Complete Kotlin Multiplatform migration with iOS parity:
- All 13 modules converted to KMP (commonMain + androidMain + iosMain)
- 100% feature parity: auth, chat, SSE streaming, conversations,
  settings, agents, files, voice input, TTS, OAuth, file picker,
  clipboard paste
- Platform consolidation: DataStore path, SessionCacheCleaner,
  bubble layouts, ChatInput core, MIME types, mention parsing,
  TextField styling, FilterChip components extracted to commonMain
- iOS crash reporting via Kotlin/Native exception hook
- YAML parsing via custom pure-Kotlin parser (zero dependencies)
- Dependency health: Timber removed, kaml replaced, FuzzyWuzzy removed,
  security-crypto stabilized
- CONTRIBUTING.md
- Gradle configuration cache enabled
2026-04-02 19:54:58 -05:00
Garfie
1868bab690 Add linting and static code analysis 2026-03-28 12:49:37 -05:00
Garfie
e4effcf40f Migrate DI from Hilt to Koin 4.1 2026-03-28 09:05:14 -05:00
Garfie
d30988f8b4 Sync upstream to v0.8.4
Breaking changes:
- 2FA enable changed from GET to POST with OTP verification body
- Backup code regeneration now requires OTP verification
- Account deletion requires OTP when 2FA is enabled
- New shared OtpVerificationDialog component in core/ui
- Fix OTP digit box layout (weight-based instead of fixed size)

Additive changes:
- Add effort (AnthropicEffort) and thinkingLevel (Google) fields to
  Conversation, Preset, and ChatRequest models
- Add tool_options to Agent model and create/update requests
- Add artifacts field to EphemeralAgent
- Add remoteAgents to InterfaceConfig
- Add programmatic_tools and deferred_tools agent capabilities
- Add thinkingLevel parameter to EndpointParameterRegistry

SSE hardening:
- Implement mapSyncEvent() for resume state-snapshot protocol
- Preserve partial stream content on disconnect (don't wipe visible text)
- Persist conversation to Room on stream creation (not just on Final)
- Auto-reconnect SSE stream when network recovers via ConnectivityObserver
- Network-aware retries in SseClient (wait for connectivity, don't burn attempts)
- Add StreamEvent.Retrying for retry progress UI feedback
- Lazy connectivity observation (only when network error occurs)
- Clear draft/streaming state on SSE stream expiry
- Add isNetworkError flag to StreamEvent.Error for typed detection

Code quality:
- Remove [Comparison] debug Timber logs (perf overhead on every SSE event)
- Replace Log.d with Timber.d across feature modules
- Extract hardcoded OTP dialog strings to strings.xml for localization
- Parameterize OtpVerificationDialog labels for localizability
- Add auto-submit guard with reset on failure for OTP input
- Replace fake QR code generator with copyable otpauth:// URI
- Replace fragile OTP string matching with HTTP status code checks
- Consolidate identical request classes into OtpVerificationRequest
- Share isHttpStatus helper across settings module
- Remove duplicate verifyTempToken method (identical to verifyTwoFactor)
- Remove duplicate 2FA dialog composables from AccountSettingsScreen
- Extract shared resume stream logic to reduce duplication
- Guard no-op retryInfo state updates
- Move ApiException to core:common for cross-module access
- Document SseEventMapper single-stream threading constraint

Bump SUPPORTED_BACKEND_VERSION to 0.8.4, advance upstream submodule.
2026-03-26 17:33:41 -05:00
Garfie
34ddeb9789 Add sync-upstream skill and upstream submodule
- Add official LibreChat repo as git submodule at upstream/ (pinned to v0.8.2)
- Create UPSTREAM_VERSION file to track which release the app targets
- Create /sync-upstream skill with Agent Teams workflow
- Add reference files for API, model, UI, and architecture mappings
- Update CLAUDE.md with upstream sync documentation
2026-03-26 16:50:18 -05:00
Garfie
f182b2b82a Initial release 2026-03-09 22:00:00 -05:00