## ✨ Added

**Console**

- **Models Page Overhaul**: Provider Aggregation, Unified Card UI & Layout Redesign ([#5203](https://github.com/agentscope-ai/QwenPaw/pull/5203))
- **Simple Mode**: Add simple mode with flat nav and sorted session list by updated time ([#5222](https://github.com/agentscope-ai/QwenPaw/pull/5222))
- **Wide Mode Toggle**: Add wide mode toggle for expanded chat layout ([#5212](https://github.com/agentscope-ai/QwenPaw/pull/5212))
- **Per-Turn Token Usage**: Add per-turn token and context usage popover ([#5130](https://github.com/agentscope-ai/QwenPaw/pull/5130))
- **User Input Queue**: Add user input queue ([#5158](https://github.com/agentscope-ai/QwenPaw/pull/5158))
- **Session Filter by Title**: Add session filter by title ([#5178](https://github.com/agentscope-ai/QwenPaw/pull/5178))
- **Syntax Highlighting**: Add syntax highlighting for code blocks across all views ([#5219](https://github.com/agentscope-ai/QwenPaw/pull/5219))
- **Vietnamese Language**: Add complete Vietnamese (vi) interface language support ([#5186](https://github.com/agentscope-ai/QwenPaw/pull/5186))
- **Fallback Message**: Show fallback message when response output is empty ([#5232](https://github.com/agentscope-ai/QwenPaw/pull/5232))

**Skills**

- **Skill Market Update**: Update skill-market, include QwenPaw platform, improve UI ([#5123](https://github.com/agentscope-ai/QwenPaw/pull/5123))
- **Skill Slash Inject**: Improve skill-slash-inject and display ([#5146](https://github.com/agentscope-ai/QwenPaw/pull/5146))

**Channels**

- **Yuanbao Quoted Messages**: Support quoted messages and unify media download pipeline ([#5160](https://github.com/agentscope-ai/QwenPaw/pull/5160))
- **Yuanbao Bot Filtering**: Add bot message filtering and environment variable support ([#5150](https://github.com/agentscope-ai/QwenPaw/pull/5150))
- **Non-blocking Flush**: Non-blocking flush with adaptive throttling for all channels ([#5215](https://github.com/agentscope-ai/QwenPaw/pull/5215))
- **DingTalk Liveness Watchdog**: Add liveness watchdog to recover stream after system sleep ([#5224](https://github.com/agentscope-ai/QwenPaw/pull/5224))

**Desktop**

- **Port Persistence**: Persist backend port across restarts to preserve localStorage ([#5051](https://github.com/agentscope-ai/QwenPaw/pull/5051))
- **Port Config**: Desktop port configuration support ([#5272](https://github.com/agentscope-ai/QwenPaw/pull/5272))

**Files**

- **File Preview**: Improve file preview error handling and use FileResponse ([#5115](https://github.com/agentscope-ai/QwenPaw/pull/5115))

**CI**

- **Release Verification Gate**: Add release verification gate between build and publish ([#5121](https://github.com/agentscope-ai/QwenPaw/pull/5121))

**Observability**

- **Langfuse Agent Loop**: Group langfuse observations by agent loop ([#5128](https://github.com/agentscope-ai/QwenPaw/pull/5128))

## 🔄 Changed

- **Request Payload Transforms**: Request payload transforms ([#5188](https://github.com/agentscope-ai/QwenPaw/pull/5188))
- **Memory Search Style**: Refactor the result style of the memory search tool ([#5154](https://github.com/agentscope-ai/QwenPaw/pull/5154))
- **Xiaoyi Dual WebSocket**: Refactor connection to dual WebSocket & fix unusable channel ([#5274](https://github.com/agentscope-ai/QwenPaw/pull/5274))
- **Calendar Date Grouping**: Use calendar dates for session list date grouping ([#5257](https://github.com/agentscope-ai/QwenPaw/pull/5257))

## 🐛 Fixed

**Security**

- **Keychain Master Key**: Isolate keychain master key per install ([#5028](https://github.com/agentscope-ai/QwenPaw/pull/5028))

**Desktop**

- **Windows Console Crash**: Guard against Windows console crash and self-kill commands ([#5192](https://github.com/agentscope-ai/QwenPaw/pull/5192))
- **Tauri Windows CI**: Harden Tauri Windows CI against crates.io fetch failures ([#5125](https://github.com/agentscope-ai/QwenPaw/pull/5125))
- **Plugin Dependency**: Repair plugin dependency installs in Tauri sidecar ([#5260](https://github.com/agentscope-ai/QwenPaw/pull/5260))
- **Session Filename**: Resolve session filename duplication and Desktop inter-agent call failures ([#5036](https://github.com/agentscope-ai/QwenPaw/pull/5036))

**Console**

- **Session Redirection**: Fixed session redirection when switching code mode ([#5147](https://github.com/agentscope-ai/QwenPaw/pull/5147))
- **Collapse Panel Render**: Force render Collapse panels to prevent memory config loss ([#5144](https://github.com/agentscope-ai/QwenPaw/pull/5144))
- **Approval Command Overflow**: Wrap approval command text with word-break to prevent horizontal overflow ([#5176](https://github.com/agentscope-ai/QwenPaw/pull/5176))
- **Tool Card Loading**: Tool card loading spinner for shell commands and unregistered tools ([#5141](https://github.com/agentscope-ai/QwenPaw/pull/5141))
- **Browser Autocomplete**: Disable browser autocomplete on provider search input ([#5112](https://github.com/agentscope-ai/QwenPaw/pull/5112))
- **Dream Cron**: Keep empty dream_cron empty to disable dream job ([#5256](https://github.com/agentscope-ai/QwenPaw/pull/5256))

**Providers & Config**

- **Local Providers in PRO Tab**: Show local providers (ollama/lmstudio) in PRO tab of ModelSelector ([#5113](https://github.com/agentscope-ai/QwenPaw/pull/5113))
- **Deep Copy Cache**: Ensure deep copy of cached agent configurations ([#5229](https://github.com/agentscope-ai/QwenPaw/pull/5229))

**Context & Agent**

- **Empty Msg Guard**: Guard empty msg list in LightContextManager.pre_reply ([#5038](https://github.com/agentscope-ai/QwenPaw/pull/5038))
- **Mission Crash**: Prevent agent crash on corrupted loop_config.json / prd.json ([#5000](https://github.com/agentscope-ai/QwenPaw/pull/5000))

**Local Models**

- **Llama.cpp Version**: Parse llama.cpp server version without fixed-width slice ([#5035](https://github.com/agentscope-ai/QwenPaw/pull/5035))

**MCP**

- **OAuth IndexError**: Avoid IndexError on empty authorization_servers in OAuth discovery ([#5194](https://github.com/agentscope-ai/QwenPaw/pull/5194))

**Memory**

- **Chromadb Async Probe**: Add async runtime probe for chromadb Rust bindings ([#5271](https://github.com/agentscope-ai/QwenPaw/pull/5271))

**Gemini**

- **Tool Schema Sanitize**: Sanitize tool schemas to prevent 400 INVALID_ARGUMENT on function calling ([#5226](https://github.com/agentscope-ai/QwenPaw/pull/5226))

**Tools**

- **Raw Decode**: Use raw_decode to silence spurious "Extra data" warnings on no-param tool calls ([#5220](https://github.com/agentscope-ai/QwenPaw/pull/5220))
- **Title Generation**: Use formatter for title generation and skill optimization to support all model providers ([#5228](https://github.com/agentscope-ai/QwenPaw/pull/5228))

**Install**

- **Stable PyPI Default**: Default to stable PyPI releases only ([#5269](https://github.com/agentscope-ai/QwenPaw/pull/5269))

**Pack**

- **OpenSSL Pin**: Pin openssl<3.5.7 to fix desktop startup failure ([#5100](https://github.com/agentscope-ai/QwenPaw/pull/5100))

## ⚡ Performance

- **Remove Unnecessary Copy**: Remove unnecessary deep copy operations in agent config ([#5240](https://github.com/agentscope-ai/QwenPaw/pull/5240))

## 🏗️ Infrastructure

- **Release Duty Checklist**: Chore release duty checklist ([#5105](https://github.com/agentscope-ai/QwenPaw/pull/5105))
- **Tool Card Title Truncate**: Truncate tool card titles to single line with ellipsis ([#5119](https://github.com/agentscope-ai/QwenPaw/pull/5119))
- **Datapaw Agent Menu**: Refresh Datapaw agent menu on agent switch ([#5114](https://github.com/agentscope-ai/QwenPaw/pull/5114))

## 🧪 Testing

- **Sprint 2.4 Tests**: Add Sprint 2.4 cron execution and tool API tests ([#5201](https://github.com/agentscope-ai/QwenPaw/pull/5201))

## 📖 Docs

- **Vietnamese README**: Add Vietnamese README (README_vi.md) ([#5245](https://github.com/agentscope-ai/QwenPaw/pull/5245))
- **Roadmap Update**: Update roadmap ([#5277](https://github.com/agentscope-ai/QwenPaw/pull/5277))

## 🙌 New Contributors

- @ly-wang19 made their first contribution in [#5038](https://github.com/agentscope-ai/QwenPaw/pull/5038)
- @biencuong made their first contribution in [#5186](https://github.com/agentscope-ai/QwenPaw/pull/5186)
- @nguyenthanhthe made their first contribution in [#5178](https://github.com/agentscope-ai/QwenPaw/pull/5178)
- @totoyang made their first contribution in [#5128](https://github.com/agentscope-ai/QwenPaw/pull/5128)
