✨ Feature
- Added SQLite single-node deployment support, including the SQLite database driver, sqlite-vec vector search, in-memory cache backend, configuration templates, and Docker Compose files.
- Added PWA support with Web App Manifest, app icons, Service Worker registration, and static asset caching.
- Added OpenRouter Responses support for upstream protocols, model routing, and model option policies via
openrouter_responses. - Added incremental loading for long conversation histories: recent messages load first, and older messages load automatically when scrolling upward.
- Added Redis username configuration for deployments that use Redis ACL authentication.
- Added APIs for binding upstream model sources and updating message content.
⚡ Optimization
- Improved SQLite and PostgreSQL compatibility for billing queries, model source statistics, and vector search.
- Improved Embedding / RAG validation by checking service configuration and vector store availability before enabling vector features.
- Improved chat branch reconciliation so visible message paths recover more reliably after loading older history.
- Improved Markdown rendering for HTML visual content and Mermaid code blocks.
- Improved deployment configuration with separate full and SQLite profiles, plus persistent
/app/datastorage. - Improved responsive layout details in the chat composer, model picker, admin buttons, and login page.
🐛 Fixed
- Fixed OpenRouter Responses compatibility for message history, tool calls, and tool outputs.
- Fixed numeric enum matching for MCP tool arguments.
- Fixed onboarding flow returning to the password step when a bootstrap password is reused.
- Fixed recovery code copying in browsers where Clipboard API is unavailable.
- Fixed clipped long model names in the model picker.
- Fixed clearing a model icon so it can fall back to the automatic icon.
- Fixed Monaco JSON editor overview ruler display.
- Fixed clipped login/register switch text.
- Fixed conversation titles named “New Chat” not being auto-replaced.