Releases: garfiec/Librechat-Mobile
v2026.06.6
What's Changed
- feat(chat): rework artifact viewer with preview-first sheet and full-screen mode by @garfiec in #171
- fix(auth): lift server URL and login fields above the keyboard by @garfiec in #177
- chore(deps): bump softprops/action-gh-release from 3.0.0 to 3.0.1 by @dependabot[bot] in #172
- chore(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #173
- chore(deps): bump koin from 4.2.1 to 4.2.2 by @dependabot[bot] in #174
- chore(deps): bump coroutines from 1.10.2 to 1.11.0 by @dependabot[bot] in #175
- chore(deps): bump androidx.compose:compose-bom from 2026.04.01 to 2026.06.00 by @dependabot[bot] in #176
- fix: lift input fields above the keyboard across the app by @garfiec in #178
Full Changelog: v2026.06.5...v2026.06.6
v2026.06.5
What's Changed
- fix(ios): skip embedding static Shared.framework to unblock device installs by @tabilzad in #168
- fix(chat): eliminate flicker when a streamed reply completes by @garfiec in #169
Full Changelog: v2026.06.4...v2026.06.5
v2026.06.4
What's Changed
- ci(release): treat iOS IPA symmetrically to the APK by @garfiec in #155
- feat(conversations): long-press conversation action menu in nav drawer by @garfiec in #156
- refactor(chat): decompose ChatViewModel into focused delegates by @garfiec in #157
- refactor(agents): decompose AgentEditorViewModel into delegates by @garfiec in #158
- refactor(chat): decompose ChatScreen into focused sibling files by @garfiec in #159
- refactor(agents): split AgentActionsPanel into per-dialog files by @garfiec in #160
- refactor(agents): decompose AgentEditorScreen into sibling files by @garfiec in #161
- refactor(settings): decompose SettingsViewModel into state, prefs controller, and account delegate by @garfiec in #163
- fix(chat): retain attachments when editing or regenerating messages by @garfiec in #162
- chore(deps): bump gradle-wrapper from 9.5.0 to 9.5.1 by @dependabot[bot] in #154
- chore(deps): bump io.mockk:mockk from 1.14.9 to 1.14.11 by @dependabot[bot] in #152
- chore(deps): bump org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-navigation3 from 2.10.0-alpha05 to 2.11.0-beta01 by @dependabot[bot] in #153
- refactor(chat): decompose SharedContentParts into focused content-part files by @garfiec in #165
- test(network): tolerate quoted multipart param name in SkillsApi test by @garfiec in #166
- feat(chat): queue follow-up messages while a reply streams by @garfiec in #167
Full Changelog: v2026.06.3...v2026.06.4
v2026.06.3
iOS (sideload): download librechat-v2026.06.3.ipa and install via AltStore / SideStore / Sideloadly (free Apple ID) or TrollStore — see install notes.
What's Changed
- ci(release): publish unsigned iOS IPA for sideloading by @garfiec in #150
- fix(chat): refresh new-chat title in the conversation list by @garfiec in #151
Full Changelog: v2026.06.2...v2026.06.3
v2026.06.2
What's Changed
- chore(deps): bump org.jetbrains.kotlinx:atomicfu from 0.28.0 to 0.33.0 by @dependabot[bot] in #122
- chore(deps): bump org.jetbrains.kotlinx:kotlinx-serialization-json from 1.10.0 to 1.11.0 by @dependabot[bot] in #123
- chore(deps): bump com.slack.lint.compose:compose-lint-checks from 1.5.0 to 1.5.2 by @dependabot[bot] in #120
- ci(release): add shields.io badges atop release notes by @garfiec in #148
- fix(chat): show the correct model on a newly created chat by @garfiec in #149
Full Changelog: v2026.06.1...v2026.06.2
v2026.06.1
Target backend: LibreChat v0.8.6
Build provenance attestation · CI workflow run
What's Changed
- feat(chat): conversation media gallery with predictive-back viewer by @garfiec in #145
- perf(compose): stabilize composable params across the app by @garfiec in #147
Full Changelog: v2026.06.0...v2026.06.1
v2026.06.0
Target backend: LibreChat v0.8.6
Build provenance attestation · CI workflow run
What's Changed
- fix(conversations): stop drawer search field auto-focusing on open by @garfiec in #136
- fix(chat): render in-progress tool calls when resuming a stream by @garfiec in #138
- fix(chat): stream edited/regenerated replies in place by @garfiec in #139
- fix(chat): tighten row spacing in starred-at-top model selector section by @garfiec in #140
- feat(settings): in-app language selection with runtime locale switching by @garfiec in #141
- feat(media): full-screen zoomable media viewer for chat and files by @garfiec in #142
- chore(release): switch versioning from semver to calver (YYYY.MM.PATCH) by @garfiec in #143
Full Changelog: v0.1.3...v2026.06.0
v0.1.3
Target backend: LibreChat v0.8.6
Build provenance attestation · CI workflow run
What's Changed
- feat(version): single-source the target backend version (#116) by @garfiec in #117
- perf: move blocking work off the Main thread (#93) by @garfiec in #118
- feat: sync mobile client to LibreChat v0.8.6 by @garfiec in #119
- docs(readme): bump backend compatibility range to v0.8.6 by @garfiec in #125
- fix(artifact): render React artifacts via ESM modules + import map (#126) by @garfiec in #130
- Remove model selector from the chat app bar by @garfiec in #133
- Gate chat options by server config, role, and endpoint capability by @garfiec in #132
- feat(chat): add Starred models display setting for the model picker by @garfiec in #134
- feat(settings): configurable app accent color by @garfiec in #135
Full Changelog: v0.1.2...v0.1.3
v0.1.2
Target backend: LibreChat v0.8.5
Build provenance attestation · CI workflow run
What's Changed
- chore(deps): bump com.slack.lint.compose:compose-lint-checks from 1.4.2 to 1.5.0 by @dependabot[bot] in #102
- chore(deps): bump media3 from 1.10.0 to 1.10.1 by @dependabot[bot] in #88
- chore(deps): bump org.jetbrains.androidx.navigation3:navigation3-ui from 1.1.0-rc01 to 1.1.1 by @dependabot[bot] in #91
- chore(deps): bump androidx.activity:activity-compose from 1.10.1 to 1.13.0 by @dependabot[bot] in #89
- chore(deps): bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #97
- chore(deps): bump marocchino/sticky-pull-request-comment from 2 to 3 by @dependabot[bot] in #98
- chore(deps): bump gradle/actions from 5 to 6 by @dependabot[bot] in #100
- chore(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in #99
- chore(deps): bump softprops/action-gh-release from 2.6.2 to 3.0.0 by @dependabot[bot] in #101
- fix(chat): eliminate per-token flash while streaming markdown by @garfiec in #106
- fix(chat): evict markdown/mermaid caches by true LRU by @garfiec in #107
- chore(release): use bare version tag as release name by @garfiec in #109
- fix(chat): stop first-agent auto-select from flashing over the selected model by @garfiec in #108
- chore: remove KNOWN_ISSUES.md in favor of GitHub issue tracking by @garfiec in #113
- feat(chat): animated placeholder for in-progress image generation by @garfiec in #114
- fix(chat): deterministic, race-free new-chat model selection by @garfiec in #110
- feat(logging): persistent, redacted, exportable diagnostic log buffer by @garfiec in #115
Full Changelog: v0.1.1...v0.1.2
v0.1.1
Target backend: LibreChat v0.8.5
Build provenance attestation · CI workflow run
What's Changed
- Kotlin Multiplatform migration with iOS parity by @garfiec in #6
- Rename package from com.librechat to com.garfiec.librechat by @garfiec in #7
- Rename project from LibreChat Android to LibreChat Mobile by @garfiec in #8
- Migrate to Navigation Compose 3 with type-safe routes by @garfiec in #12
- fix: create Application Support directory before opening Room database on iOS by @garfiec in #13
- chore: fix iOS setup docs, remove dead Swift files, fix Xcode release build config by @garfiec in #15
- Bump coil3 from 3.3.0 to 3.4.0 by @dependabot[bot] in #11
- chore(deps): bump lifecycle from 2.9.0 to 2.10.0 by @dependabot[bot] in #4
- chore(deps): bump lifecycle-kmp from 2.9.0 to 2.10.0 by @dependabot[bot] in #9
- refactor: consolidate duplicate navigation code between app and shared modules by @garfiec in #14
- fix: configure Coil ImageLoader for iOS and add missing tool call card rendering by @garfiec in #16
- Fix iOS LaTeX rendering and consolidate markdown parser to commonMain by @garfiec in #18
- fix: use jvmToolchain(17) to align Java and Kotlin JVM targets by @tabilzad in #17
- refactor: NavHostViewModel stage 1 — low-hanging fruit cleanup by @garfiec in #19
- refactor: NavHostViewModel stage 2 — extract banner and version check state holders by @garfiec in #20
- refactor: NavHostViewModel stage 3 — extract conversation list state holder by @garfiec in #21
- refactor: NavHostViewModel stage 4 — extract favorites state holder by @garfiec in #22
- refactor: NavHostViewModel stage 5 — extract drawer models and display mapping by @garfiec in #23
- refactor: extract supporting types and organize into sub-packages by @garfiec in #24
- refactor: replace fully-qualified names with proper imports by @garfiec in #25
- fix(chat): apply safe area padding to iOS chat input by @garfiec in #26
- fix(settings): equalize MCP server type segmented button heights by @garfiec in #27
- Add detekt-koin, .editorconfig, and GitHub Actions CI by @garfiec in #28
- cleanup: burn down detekt baseline findings by @garfiec in #33
- Bump androidx.test.ext:junit from 1.2.1 to 1.3.0 by @dependabot[bot] in #10
- Bump io.mockk:mockk from 1.13.13 to 1.14.9 by @dependabot[bot] in #5
- chore(deps): bump koin from 4.2.0 to 4.2.1 by @dependabot[bot] in #31
- chore(deps): bump org.jetbrains.androidx.navigation3:navigation3-ui from 1.0.0-alpha06 to 1.1.0-rc01 by @dependabot[bot] in #30
- ci(android): upload signed debug APK artifact on every PR by @garfiec in #37
- feat(favorites): move bookmarks to server-backed tags with offline cache by @garfiec in #35
- fix(ios): stream SSE via NWConnection to bypass NSURLSession text/* buffering by @garfiec in #38
- fix(data): mark agent/preset caches @volatile by @garfiec in #39
- fix(data): sweep camera_photos cache dir on logout by @garfiec in #40
- fix(cache): route Android temp files into named subdirs for logout sweep by @garfiec in #41
- fix(navigation): fully reset ConversationListStateHolder on logout by @garfiec in #42
- fix(settings): stop double-invoking authRepository.logout on logout/delete by @garfiec in #43
- chore(deps): bump compose-multiplatform from 1.11.0-beta01 to 1.11.0-beta02 by @dependabot[bot] in #48
- chore(deps): bump agp from 9.1.0 to 9.1.1 by @dependabot[bot] in #47
- chore(deps): bump markdown-renderer from 0.39.2 to 0.40.2 by @dependabot[bot] in #46
- chore(deps): bump androidx.test:runner from 1.6.2 to 1.7.0 by @dependabot[bot] in #44
- chore(deps): bump androidx.compose:compose-bom from 2025.05.00 to 2026.03.01 by @dependabot[bot] in #45
- chore(sync-upstream): fix skill bugs and expand upstream scan coverage by @garfiec in #50
- fix(permissions): gate mobile surfaces on server role permissions (#49) by @garfiec in #52
- chore(deps): bump compose-multiplatform from 1.11.0-beta02 to 1.11.0-beta03 by @dependabot[bot] in #57
- chore(deps): bump ksp from 2.3.6 to 2.3.7 by @dependabot[bot] in #55
- chore(deps): bump com.android.tools:desugar_jdk_libs from 2.1.4 to 2.1.5 by @dependabot[bot] in #54
- chore(deps): bump ktor from 3.4.2 to 3.4.3 by @dependabot[bot] in #53
- feat(ios): support building for both physical devices and simulators by @tabilzad in #58
- chore(sync): upstream LibreChat v0.8.4 → v0.8.5 by @garfiec in #61
- feat(common): include patch in backend version compatibility check by @garfiec in #62
- chore(skill): add reviewer pass + test-runner dispatch to /sync-upstream by @garfiec in #63
- fix(data): mutex guard clearTokens vs refreshAccessToken race by @garfiec in #64
- fix(data): mutex guard repository caches against suspension races by @garfiec in #65
- fix(chat): wire format for custom and user_provided endpoints (#60) by @garfiec in #67
- feat(ui): render custom endpoint iconURL in drawer and conversation list by @garfiec in #72
- chore(deps): bump com.google.truth:truth from 1.4.4 to 1.4.5 by @dependabot[bot] in #74
- chore(deps): bump gradle-wrapper from 9.4.1 to 9.5.0 by @dependabot[bot] in #76
- chore(deps): bump agp from 9.1.1 to 9.2.0 by @dependabot[bot] in #73
- feat: per-provider user_provided API key UI + real expiry on chat sends (#70) by @garfiec in #81
- chore(deps): bump paging from 3.4.2 to 3.5.0 by @dependabot[bot] in #77
- chore(deps): bump agp from 9.2.0 to 9.2.1 by @dependabot[bot] in #78
- chore(deps): bump org.jetbrains.kotlinx:kotlinx-datetime from 0.7.1 to 0.8.0 by @dependabot[bot] in #79
- chore(deps): bump dev.androidbroadcast.rules.koin:detekt-koin4-rules from 1.1.0 to 1.1.1 by @dependabot[bot] in #75
- feat: add /audit-deps skill for dependabot PR audits by @garfiec in #82
- fix(settings): keep Sign Out reachable when server is unreachable (#80) by @garfiec in #83
- docs: correct self-signed TLS cert guidance and extract to FAQ by @garfiec in #84
- fix(app): pad no-connection banner below status bar by @garfiec in #85
- refactor(app): use Modifier.then for offline-banner status-bar inset by @garfiec in #87
- feat(chat): inline artifact rendering with per-type toggles by @garfiec in #86
- fix(uploads): move file upload off main thread + per-file progress by @garfiec in https://github.com/garfiec/Librecha...