Highlights
Get Switchboard: now on Google Play and F-Droid. iOS is available as a public TestFlight beta.
- Features
- Supports LibreChat v0.8.9-rc1: unread replies, drawer filters, project instructions and files, interrupt and steer, a thinking level per message, tool approvals, MCP Apps, code workspaces and passkey management
- A redesigned composer: one box with an attachment strip, a "+" sheet with MCP sign-in, Artifacts and file search, and a sent message that builds into the thread step by step
- Add your own web search keys and MCP server variables, from chat and the agent editor
- Type /prompt, /skill, /mcp or $ in the composer to search just that kind of item
- On Android, paste, drop or send stickers and keyboard images straight into the composer
- Tap a sent file to open it, and React artifacts can use the npm libraries web offers
- The server address page lists the servers your accounts already use
- Bug Fixes
- On Android, conversations with very large tool output open instead of crashing
- Uploads no longer fail with "Network unavailable" when sent a few seconds after another request
- Sending from the app no longer erases model parameters set on the web, and model specs apply the way the server applies them
- Sign-in works on servers whose address redirects, and shows only the sign-in options the server turns on
- On iOS, plain http on a local network can stream replies, and addresses iOS blocks say what to do
- Compare gives the second model your custom instructions, and Keep and continue works in temporary chats
- Misc Tech Debt Refactors
- Misc Stability Improvements
What's Changed
- ci: give the release and App Store workflows clearer names by @garfiec in #698
- ci(fdroid): watch F-Droid's published version and reproduce releases in its image by @garfiec in #695
- fix(chat): finish model spec presentation (#665) by @garfiec in #699
- fix(chat): give Compare's second model the custom instructions by @garfiec in #700
- fix(compare): keep and continue in temporary chats, and stopped-chip gaps by @garfiec in #701
- fix(chat): send every parameter under its provider's wire key (#667) by @garfiec in #702
- docs(chat): document model spec fields and server limits; fix the gauge's catalog alias (#668) by @garfiec in #712
- chore(deps): bump androidx.core:core-ktx from 1.18.0 to 1.19.1 by @dependabot[bot] in #689
- feat(chat): open attached files on tap; zoom and pan the PDF viewer freely by @garfiec in #720
- fix(chat): open files from the media page instead of sharing them by @garfiec in #723
- feat(chat): let React artifacts import web's npm libraries by @garfiec in #725
- test(app): sort KoinGraphVerificationTest imports for detekt by @garfiec in #726
- chore(skills): file audit-parity findings as drafts on the roadmap board by @garfiec in #727
- docs(readme): rewrite the intro by @garfiec in #728
- fix(settings): fetch server voices only when the server has TTS by @garfiec in #729
- docs(readme): show the Google Play badge by @garfiec in #724
- docs: match Play's Data safety declaration, the new intro and user-CA trust by @garfiec in #730
- feat(sync): support LibreChat v0.8.9-rc1 by @garfiec in #732
- feat: close the v0.8.9-rc1 parity gaps by @garfiec in #734
- fix(chat): run chats on the spec the server would by @garfiec in #741
- feat(chat): accept stickers and keyboard images in the Android composer by @garfiec in #747
- chore(deps): bump github/codeql-action from 4.39.1 to 4.39.3 by @dependabot[bot] in #742
- chore(deps): bump ktor from 3.6.0 to 3.6.1 by @dependabot[bot] in #743
- chore(deps): bump io.github.alexzhirkevich:qrose from 1.1.2 to 1.3.1 by @dependabot[bot] in #744
- fix(chat): route the web-search control only to a search the server will run by @garfiec in #748
- feat(chat): one composer box with an attachment strip and a settings line by @garfiec in #749
- chore(deps): bump agp from 9.2.1 to 9.5.1 by @dependabot[bot] in #746
- fix(chat): restore the iOS build in IosFileHandler.prune by @garfiec in #751
- feat(chat): paste and drop images into the Android composer by @garfiec in #752
- fix(chat): draw reply, provider-key and agents icons as web does by @garfiec in #753
- fix(network): let OkHttp resend an upload on a closed keep-alive connection by @garfiec in #754
- docs: hold agents to what users hit and cut module CLAUDE.md files to rules by @garfiec in #755
- chore(agents): halt audit-parity on a failed agent and resume from cache by @garfiec in #756
- fix(data): open conversations whose cached reply is over 2 MB on Android by @garfiec in #757
- fix(network): resend an iOS upload on a closed keep-alive connection by @garfiec in #758
- feat(chat): the sent message buds off the composer and hands off to the reply by @garfiec in #759
- refactor(settings): drop the Memories and MCP servers rows from Settings › Data by @garfiec in #760
- fix(chat): keep the jump-to-bottom button above a tall composer by @garfiec in #761
- fix(chat): carry the code approval mode on server-queued follow-ups by @garfiec in #762
- fix(network): say when iOS needs https, and stream over http on iOS by @garfiec in #763
- fix(chat): treat failed code workspace reads as failed, not as data by @garfiec in #764
- feat(chat): redesign the chat options sheet by @garfiec in #765
- fix(auth): store the address a redirecting server answers from by @garfiec in #768
- feat(chat): let users add their own web search keys by @garfiec in #767
- feat(auth): offer the servers your accounts use on the server URL page by @garfiec in #770
- fix(auth): show a working state on loading buttons instead of a squashed spinner by @garfiec in #771
- fix(auth): show only the sign-in options the server turns on by @garfiec in #772
- feat(mcp): let users enter an MCP server's own variables by @garfiec in #774
- fix(auth): keep the provider session when re-signing in an expired account on Android by @garfiec in #775
- fix(chat): fill the options sheet's tiles solid in Liquid Glass by @garfiec in #776
- feat(chat): bring a sent turn in step by step instead of flying it off the composer by @garfiec in #777
- feat(agents): add web search keys to the agent editor by @garfiec in #779
- feat(chat): choose the Artifacts mode from Settings or a long-press on its tile by @garfiec in #781
- fix(chat): show notices raised from the options sheet on the sheet by @garfiec in #782
- feat(chat): /prompt, /skill and $ scope the composer picker to one type by @garfiec in #783
- feat(chat): /mcp lists MCP servers in the composer picker by @garfiec in #784
Full Changelog: v2026.11.0...v2026.11.1