Make sure to back up before updating! This release changes the local workspace architecture, contains a database schema migration, and replaces sandbox file handlers, it's recommended that you backup your data before updating.
Visible changes:
- The Chaquopy Python sandbox got fully replaced with Workspaces/PRoot-based Linux environments
- Added support for OpenAI-compatible speech-to-text models
- Added some new providers to the catalog
- Lorebooks can now be toggled per-chat too
- The activity timeline got redesigned to better match the rest of the UI
- The activity pill in the webUI got refined to look more like the in-app counterpart
- Provider and model icons in the webUI should now better match their in-app counterparts
- Added a fullscreen mode to the message input field when there's a lot of text
- The main settings screen got simplified
- Other small refinements
Hidden changes:
- Replaced standard Java I/O streams with platform-agnostic okio buffers, sources, and sinks across file compressor routines, database backups, media encoders, web uploads, and attachments
- Removed Java concurrency utils (such as ConcurrentHashMap and thread locks) in favor of portable Kotlin Atomic references and Mutex locks for throttling, provider balances, and file storage mappings
- Introduced PlatformHttpClient and platform JWT signers to facilitate portable network handling outside of Android-specific library contexts
- Replaced java.time.Duration references with Kotlin's native Duration class for timeout parameters and scheduled task definitions
- Extracted system logging (PlatformLog), haptics (PlatformHaptics), syntax highlighting labels, and media encoding logic to remove direct dependencies on the JVM
- Added boundaries on database fetches and DAO actions to prevent freezes and memory exhaustion
- Capped the number of assistant memory entities retrieved during RAG fetches (limited to 50 for empty/simple queries, and coerced at a maximum database limit of 100 to 200)
- Swapped in-memory filtering with database-level constraints (getMemoryEntitiesOfAssistantLimited directly in Room) to avoid loading massive history payloads into JVM heap memory. This should prevent app stuttering and freezes during long conversations
- Simplified the internal Android cache stores (PerKeyFileCacheStore and SingleFileCacheStore) by replacing heavy Java ReentrantLock structures with lightweight Kotlin/JVM monitor locks
- Optimized prompt formatting to maximize caching
Other stuff I'd like to mention:
- The APK size is less than half of what it was before because the Python sandbox isn't bundled with the app anymore
Found an issue after release:
The workspace feature and update banner aren't currently supported in tablet mode. I will release an update with these fixes as soon as possible!