This update introduces per-agent SQLite cache stores, fixes critical model resolution bugs, and improves the reliability of Discord, Feishu, and QQBot integrations.
Merged PRs
- Expose resolved subagent model metadata Original PR
- fix(feishu): stream plain replies as cards Original PR
- fix(models): prefer exact configured provider refs before aliases Original PR
- Fix Discord reply typing lifecycle Original PR
- fix(discord): omit undefined component registry fields [AI] Original PR
- fix(gateway): explain ignored config-triggered restart when restart command is disabled Original PR
- fix(media): dedupe identical path/url in inbound media-note formatter (#47587) Original PR
- fix(install): show progress during npm install in non-interactive mode Original PR
- test(tasks): cover task domain view mappers Original PR
- refactor(matrix): move ephemeral state to plugin sqlite Original PR
- fix(agents): normalize sessions_send message aliases Original PR
- fix(tui): distinguish /new and /reset command descriptions Original PR
- feat(ui): add collapsible toggle for recent sessions in sidebar Original PR
- refactor: route model catalog imports to core package Original PR
- [Fix] Deliver restart recovery replies Original PR
- fix(plugins): ignore helper files in extension roots Original PR
- fix(outbound): pack newline-mode paragraphs up to limit Original PR
- fix(codex): refresh stale managed runtime plugin Original PR
- fix(qqbot): deliver partial tool progress Original PR
- Add per-agent SQLite cache store Original PR
- feat(ios): refresh app store metadata Original PR
- refactor: extract model catalog core package Original PR
- feat(workboard): persist orchestration metadata in sqlite Original PR
- fix: classify ws pre-handshake close as benign Original PR
- fix(ui): stop pulsing completed stream segments Original PR
- fix(test): include workflow lint target in routing expectation Original PR
- perf(cli): reduce room-event Claude cache churn Original PR
Key Changes
Infrastructure & State Persistence
One of the most significant architectural shifts in this window is the move toward SQLite for ephemeral and orchestration state. The Matrix plugin now stores inbound deduplication and thread bindings in SQLite instead of JSON files, and the Workboard has transitioned its orchestration metadata (cards, board metadata, and notification subscriptions) to SQLite KV namespaces. Additionally, a new per-agent SQLite cache store has been introduced, providing a scoped database for rebuildable runtime state, which improves isolation and reliability across agent instances.
Model Resolution & Cataloging
Several critical fixes were applied to how OpenClaw resolves model providers. A regression in 5.x was fixed where configured provider refs were being incorrectly reverse-matched by aliases, leading to Unknown model errors. The system now prefers exact configured provider refs before attempting alias resolution. To support this and future growth, the model catalog logic has been extracted into a dedicated @openclaw/model-catalog-core package, streamlining internal imports and improving package boundaries.
Integration Improvements
- Discord: The reply typing lifecycle was rewritten to use a feedback object, ensuring the "typing" indicator persists while work is queued. A bug was also fixed where
undefined fields in the component registry caused persistence failures.
- Feishu: Plain replies are now correctly streamed as interactive cards when
streaming=true is enabled, matching the documented behavior.
- QQBot: A fix was implemented to deliver
kind: "tool" progress immediately when streaming is enabled, preventing users from experiencing silence while the assistant is working.
- Telegram: The inbound media-note formatter now dedupes identical local paths and URLs, reducing token waste and model confusion.
Gateway & UX Enhancements
- Recovery: A major fix now ensures that gateway restarts do not leave in-flight chat turns silent. The system now persists delivery context to provide visible recovery replies or failure notices after a restart.
- UI/TUI: The Web UI received a collapsible toggle for recent sessions in the sidebar and a fix to stop the "pulsing" animation on completed stream segments. In the TUI, the
/new and /reset commands now have distinct, accurate descriptions.
- Installation: Non-interactive installation (e.g., via
curl | bash) now provides progress feedback during the npm install step.
Impact
These changes collectively target the "ghosting" and "silent failure" pain points reported by users. By persisting delivery routes across restarts and fixing the tool-progress buffering in QQBot, the system becomes more transparent during long-running tasks. The transition to SQLite for agent and plugin state reduces the risk of JSON corruption and improves the scalability of session management.
From a developer perspective, the extraction of the model catalog core package and the normalization of sessions_send aliases (supporting SendMessage, content, and text) make the platform more robust when integrating with diverse LLM providers like Anthropic and Pi, who may emit non-canonical tool arguments.