✨ Feature
- Added an inline “New chat in project” action in the project sidebar, so you can start a chat directly inside a specific project.
- Chat generations can now stay alive after leaving the current page, allowing the conversation to resume generation when reopened.
- Added PostgreSQL and Redis health checks to the full Docker Compose deployment, so the app waits for dependencies to be ready before starting.
⚡ Optimization
- Improved resumed generation replay to reduce duplicated text after reconnecting or restoring a stream.
- Improved pending message ownership checks to prevent draft or streaming messages from appearing in the wrong conversation.
- Improved the project sidebar with clearer row-level actions for creating chats, editing projects, and deleting projects.
- Improved project navigation accessibility and hover/focus behavior for more stable inline controls.
- Improved chat empty-state transitions when project, model, or state context changes.
- Improved HTML content rendering with broader block-tag handling and fewer unexpected blank lines.
- Improved JSON editor placeholders by using Monaco’s built-in placeholder support.
- Improved OpenAI / OpenRouter Responses naming and ordering in admin protocol selectors.
🐛 Fixed
- Fixed SQLite in-memory generation streams being marked canceled or expired too early.
- Fixed wrapped HTTP 200 generation cancellation errors not being recognized correctly.
- Fixed MCP tool sync failures not refreshing the server list afterward.
- Fixed upstream model counts being duplicated when multiple routes existed.
- Fixed an unnatural Chinese page-size label.