## ✨ Added

- **CJK-Aware Memory Search**: Memory search now tokenizes CJK queries at character level while preserving Latin/digit runs ([#3811](https://github.com/agentscope-ai/QwenPaw/pull/3811))
- **Context Compaction Fallback**: When LLM-based context compaction fails or is disabled, the context manager now retries the context split with a raised reserve to keep more recent conversation turns ([#3882](https://github.com/agentscope-ai/QwenPaw/pull/3882))
- **Adaptive Model Retry**: The runtime now learns per-model quirks from API failures and proactively adapts subsequent requests ([#3874](https://github.com/agentscope-ai/QwenPaw/pull/3874))
- **ACP Agent Rename & Delete**: ACP agents can now be renamed and deleted from the WebUI ([#3859](https://github.com/agentscope-ai/QwenPaw/pull/3859))
- **QQ Voice & ASR Support**: QQ channel now detects voice messages by file extension and uses platform ASR transcription when available ([#3845](https://github.com/agentscope-ai/QwenPaw/pull/3845))

## 🔄 Changed

- **Agent Statistics Navigation**: Moved Agent Statistics page into the Workspace group on the sidebar ([#3754](https://github.com/agentscope-ai/QwenPaw/pull/3754))
- **Dockerfile Cleanup**: Build directory is now removed after `pip install` in Dockerfile for a leaner image ([#3638](https://github.com/agentscope-ai/QwenPaw/pull/3638))
- **Chat Component Upgrade**: Upgraded `@agentscope-ai/chat` with `stopChat` fix ([#3917](https://github.com/agentscope-ai/QwenPaw/pull/3917))

## ⚡ Performance

- **Config Loading Cache**: Root and per-agent config files are now cached with mtime-based invalidation ([#3865](https://github.com/agentscope-ai/QwenPaw/pull/3865))
- **Skill Manifest Cache**: Skill manifest reads are cached by file path and mtime, reducing repeated disk reads on hot paths ([#3910](https://github.com/agentscope-ai/QwenPaw/pull/3910))
- **Model API Deduplication**: Concurrent `listProviders` and `getActiveModels` calls on the chat page now deduplicate their own in-flight requests ([#3897](https://github.com/agentscope-ai/QwenPaw/pull/3897))
- **Console Chat Performance**: Chat session list is virtualized with `react-window`, search loads sessions progressively with a progress indicator ([#3908](https://github.com/agentscope-ai/QwenPaw/pull/3908), [#3912](https://github.com/agentscope-ai/QwenPaw/pull/3912))

## 🐛 Fixed

**Channels**

- **Approval in Channels**: Fixed `/approve` and `/deny` commands not working in channels ([#3832](https://github.com/agentscope-ai/QwenPaw/pull/3832), [#3896](https://github.com/agentscope-ai/QwenPaw/pull/3896))
- **WeCom @Mention Commands**: Fixed slash commands failing in WeCom group chats when the bot is @-mentioned ([#3903](https://github.com/agentscope-ai/QwenPaw/pull/3903))
- **Feishu Reaction Events**: Registered no-op handlers for Feishu message reaction events ([#3890](https://github.com/agentscope-ai/QwenPaw/pull/3890))
- **QQ WebSocket Reconnect**: QQ channel now reconnects on recoverable WebSocket errors ([#3872](https://github.com/agentscope-ai/QwenPaw/pull/3872))

**Console & UI**

- **Per-Tab Agent Selection**: Fixed agent selection leaking between browser tabs ([#3857](https://github.com/agentscope-ai/QwenPaw/pull/3857), [#3867](https://github.com/agentscope-ai/QwenPaw/pull/3867))
- **Backups Import Icon**: Updated the backup import button to use an import icon instead of upload ([#3909](https://github.com/agentscope-ai/QwenPaw/pull/3909))

**Agent System**

- **Timezone Normalization**: Non-standard timezone names are now mapped to canonical IANA identifiers ([#3858](https://github.com/agentscope-ai/QwenPaw/pull/3858))
- **ACP Fallback Inheritance**: Fallback agent profile now inherits ACP configuration from the main config ([#3834](https://github.com/agentscope-ai/QwenPaw/pull/3834))
- **MCP Execution Timeout**: MCP client timeout is now passed through to tool execution ([#3904](https://github.com/agentscope-ai/QwenPaw/pull/3904))
