github garfiec/Librechat-Mobile v2026.11.2

34 minutes ago

Target Backend APK Downloads IPA Downloads

Highlights

  • Features
    • Switchboard paints your server's theme: its colours, corners and fonts, with a per-server choice to keep Switchboard's own colours
    • A redesigned Settings: categories with live summaries, picture choices for looks, one Advanced page, and Date & time as its own page with a preview
    • Get notified when a reply you left finishes or a scheduled chat runs
    • Artifacts open beside the chat when there's room and fill big screens, and on Android a home-screen artifact opens as its own app
    • The composer folds to one line while idle, and /model switches the chat's model
    • Sign-in names the server and shows its banner, the password has a show/hide button, and sign-up ends with a check-your-email step
    • Report a problem by email from About
    • Layout for the iPhone Duo's bar column and fold
    • On iOS, change your profile picture
  • Bug Fixes
    • On iOS, fixed a crash when a code block held a long string
    • Rotating, folding or resizing no longer closes an open artifact or loses what was typed in it
    • Chats, pins and replies started on another device show up in the drawer and the open chat
    • Queued follow-ups send reliably, including ones queued during a new chat's first reply, and stay readable over the reply
    • Read aloud can always be stopped, auto-read has a Stop button, and on iOS audio that can't play no longer crashes the app
    • Sign-in errors are in your language, accounts whose session ended show as signed out, and a mistyped 2FA code no longer counts twice
    • Code blocks are readable in light mode
  • Performance Improvements
    • Smoother streaming: only the live reply redraws while it streams, Compare included
  • Misc Tech Debt Refactors
  • Misc Stability Improvements

What's Changed

  • feat(chat): /model switches the chat's model from the composer picker by @garfiec in #785
  • fix(chat): round the context ring's tap ripple by @garfiec in #786
  • feat(artifacts): open home-screen artifacts as their own app by @garfiec in #787
  • fix(chat): stop long strings in code blocks crashing iOS by @garfiec in #788
  • feat(auth): show/hide button on the login password by @garfiec in #789
  • fix(ios): show the Kotlin throw site in Apple's crash reports by @garfiec in #790
  • fix(ui): shrink the pull-up and Liquid Glass sheets on predictive back by @garfiec in #791
  • fix(chat): keep hidden conversation starters from squashing the composer by @garfiec in #792
  • fix(ios): open authenticator and release-notes links on iOS 18+ by @garfiec in #793
  • fix(auth): show accounts whose session has ended as signed out by @garfiec in #794
  • fix(auth): don't refresh and resend a rejected 2FA code by @garfiec in #795
  • fix(chat): readable code block colours in light mode by @garfiec in #797
  • fix(settings): change the profile picture on iOS by @garfiec in #796
  • fix(projects,drawer,presets): show a failed load as a failure, not as empty by @garfiec in #798
  • feat(settings): category home, picture choices and one Advanced page by @garfiec in #799
  • feat(settings): Date & time as its own page with a chat preview by @garfiec in #801
  • refactor(theme): read status, series and file-type colours from theme tokens by @garfiec in #800
  • fix(ui): turn off autocorrect on URL, secret and code fields by @garfiec in #804
  • fix(chat): web search follows what the server decides by @garfiec in #805
  • feat(settings): report a problem by email from About by @garfiec in #806
  • feat(theme): paint the server's theme, with a per-server choice of colours by @garfiec in #802
  • feat(navigation): open librechat:// links on iOS through one shared intake by @garfiec in #807
  • fix(chat): enforced agents-spec follow-ups on the server queue, and smaller model-spec seams by @garfiec in #808
  • fix(speech): keep read-aloud stoppable after a send; don't crash on undecodable audio by @garfiec in #809
  • feat(theme): paint the chat's own surfaces in the server's roles by @garfiec in #810
  • feat(notifications): notify when a reply you left finishes by @garfiec in #811
  • feat(theme): theme Mermaid frames, maths and MCP app styles from the server by @garfiec in #813
  • fix(chat): Bedrock spec keys, distinct provider tiles, agent reply avatars by @garfiec in #814
  • fix(ui): reveal button on masked secrets, a masked-field lint, and straight quotes on iOS by @garfiec in #812
  • fix(speech): give auto-read a Stop button and keep it off the mic by @garfiec in #815
  • feat(theme): take a server theme's corners and fonts by @garfiec in #816
  • fix(ui): keep provider tiles visible on dark surfaces by @garfiec in #817
  • fix(artifacts): repin shadcn and vaul bundles to rc1 with tailwind-merge 2.6.1 by @garfiec in #818
  • feat(notifications): notify when a scheduled chat runs by @garfiec in #819
  • fix(chat): dismiss the keyboard on a tap on a message by @garfiec in #820
  • fix(ui): show artifact previews in Liquid Glass sheets on iOS by @garfiec in #822
  • fix(notifications): keep overdue schedule checks and gate each topic on its own channel by @garfiec in #821
  • fix(chat): dismiss the keyboard on any tap in the thread by @garfiec in #824
  • fix(chat): show a reply another device is still writing on pull-to-refresh by @garfiec in #825
  • feat(theme): ban stray colour literals and keep server themes readable by @garfiec in #823
  • feat(chat): fold the composer to one line while idle by @garfiec in #826
  • fix(auth): don't keep tokens from a sign-in that never finished by @garfiec in #827
  • fix(chat): announce a streaming reply's status, not its text by @garfiec in #832
  • fix(app): keep the screen across rotation, folds and resizes by @garfiec in #829
  • feat(chat): give the artifact sheet the room of a big screen by @garfiec in #830
  • feat(chat): show artifacts beside the chat, with an Automatic style by @garfiec in #831
  • fix(app): keep the screen when a fold changes the screen density by @garfiec in #833
  • perf(chat): recompose only the live reply while it streams by @garfiec in #835
  • feat(ui): lay out for the iPhone Duo's bar column and fold by @garfiec in #834
  • feat(auth): name the server on Login and show its public banner by @garfiec in #836
  • fix(auth): show localized sign-in errors instead of raw server text by @garfiec in #837
  • fix(chat): draw queued messages on an opaque fill by @garfiec in #838
  • fix(chat): show a server-run queued turn's message while it streams by @garfiec in #839
  • fix(auth): finish sign-up with a check-your-email step or sign-in, and offer resend by @garfiec in #840
  • fix(auth): refuse a sign-in with no refresh cookie, keep typed sign-in input across process death by @garfiec in #841
  • fix(settings): turn notifications off from the Notifications row by @garfiec in #842
  • fix(settings): set the system Notification settings row apart from the switches by @garfiec in #843
  • fix(settings): give the Notifications master switch its own group by @garfiec in #844
  • fix(chat): show a clipped MCP App's expand action as a row under it by @garfiec in #845
  • fix(chat): draw an MCP App at full size in the fullscreen panel on Android by @garfiec in #846
  • docs(ios): document the TestFlight / App Store upload path by @tabilzad in #59
  • chore(deps): bump softprops/action-gh-release from 3.0.3 to 3.0.4 by @dependabot[bot] in #847
  • chore(deps): bump co.touchlab.skie from 0.10.15 to 0.10.16 by @dependabot[bot] in #848
  • chore(deps): bump androidx.datastore:datastore-preferences from 1.2.1 to 1.3.0 by @dependabot[bot] in #850
  • chore(deps): drop unused ktlint plugin and hold compose-rules on detekt 1.x by @garfiec in #852
  • fix(chat): expire files attached in a temporary chat by @garfiec in #855
  • fix(chat): offer Sign in on agent actions that need OAuth by @garfiec in #856
  • fix(data): drop favorites, tags, config, banner, version check and roster-label results that return after a switch by @garfiec in #862
  • fix(agents): load every page of the agents list by @garfiec in #864
  • fix(conversations): keep a filtered drawer search on-device unless server search is on by @garfiec in #866
  • fix(chat): send a follow-up queued during a new chat's first reply by @garfiec in #868
  • fix(chat): re-read the subagent index on every threads sheet open by @garfiec in #871
  • chore(deps): bump gradle-wrapper from 9.8.2 to 9.9.1 by @dependabot[bot] in #860
  • chore(deps): bump io.mockk:mockk from 1.14.11 to 1.14.12 by @dependabot[bot] in #857
  • chore(deps): bump com.slack.lint.compose:compose-lint-checks from 1.5.2 to 1.6.1 by @dependabot[bot] in #745
  • fix(chat): scroll the MCP App approval dialogs at large font sizes by @garfiec in #875
  • fix(chat): open the copy after duplicating a chat by @garfiec in #877
  • fix(chat): retry a dropped or not-ready chat start with the same request id by @garfiec in #887
  • fix(conversations): reload a stale chat list when the drawer opens by @garfiec in #872
  • fix(chat): offer only MCP servers the chat can use by @garfiec in #885
  • fix(conversations): sync the drawer's Pinned section from the server by @garfiec in #881
  • fix(agents): clear an agent's starters and tools when all are removed by @garfiec in #879
  • fix(chat): keep an edited, retried or regenerated turn on screen over a pinned branch by @garfiec in #883
  • fix(chat): default Resend Files to on, so switching it off is sent by @garfiec in #888
  • fix(chat): hold code-chat runs while the workspace row holds the send by @garfiec in #890

Full Changelog: v2026.11.1...v2026.11.2


Build provenance attestation · CI workflow run

Don't miss a new Librechat-Mobile release

NewReleases is sending notifications on new releases.