## ✨ Added

**Security**

- **Tool Guard**: Pre-execution security layer that scans tool parameters for risky patterns (e.g., `rm`, `mv` in shell commands). Risky calls are blocked until the user approves via `/approve`; denied tools are always blocked. New **Security** settings page for managing rules and approvals ([#563](https://github.com/agentscope-ai/CoPaw/pull/563))

**Channel & Communication**

- **Mattermost Channel**: Full Mattermost integration supporting DMs and threaded conversations with text, images, files, video, and audio, plus typing indicator and configurable access policies ([#1071](https://github.com/agentscope-ai/CoPaw/pull/1071))
- **Matrix Channel**: New Matrix protocol channel integration using matrix-nio, supporting text, images, video, audio, and file messages ([#969](https://github.com/agentscope-ai/CoPaw/pull/969))
- **Require Mention Filtering**: Group messages are ignored unless the bot is @mentioned (or a slash command is used on Telegram), configurable per-channel via `require_mention` for Discord, DingTalk, Feishu, and Telegram ([#1049](https://github.com/agentscope-ai/CoPaw/pull/1049))
- **Telegram Markdown Rendering**: Markdown-to-Telegram HTML conversion for LLM output including bold, italic, code blocks, links, blockquotes, spoilers, and more, with automatic plain text fallback on send failure ([#850](https://github.com/agentscope-ai/CoPaw/pull/850))
- **Feishu Emoji Reaction**: Automatically adds a "DONE" emoji reaction to the last Feishu reply when processing completes successfully ([#1158](https://github.com/agentscope-ai/CoPaw/pull/1158))
- **Feishu Rich Text Media**: Parsing of media files (videos, audio, and other files) in Feishu post-type rich text messages, with automatic download and attachment ([#1159](https://github.com/agentscope-ai/CoPaw/pull/1159))
- **QQ Image Messages**: Support for sending image messages via `[Image: url]` tags in agent output for both DM and group chats ([#1212](https://github.com/agentscope-ai/CoPaw/pull/1212))

**Model & AI Features**

- **Model Retry**: Automatic retries for LLM API calls on transient errors (rate limit, timeout, connection) with exponential backoff, configurable via `COPAW_LLM_MAX_RETRIES`, `COPAW_LLM_BACKOFF_BASE`, `COPAW_LLM_BACKOFF_CAP` ([#1150](https://github.com/agentscope-ai/CoPaw/pull/1150))
- **LM Studio Provider**: LM Studio added as a built-in model provider with configuration UI and documentation ([#1134](https://github.com/agentscope-ai/CoPaw/pull/1134))
- **Token Usage Tracking**: End-to-end token usage tracking across providers with a Token Usage settings page, API, and `get_token_usage` tool ([#775](https://github.com/agentscope-ai/CoPaw/pull/775), [#1349](https://github.com/agentscope-ai/CoPaw/pull/1349), [#1284](https://github.com/agentscope-ai/CoPaw/pull/1284))
- **Provider Advanced Configuration**: Added `generate_kwargs` editor for custom generation parameters (e.g., temperature, top_p, enable_thinking); providers without API keys (Ollama, LM Studio) are now correctly shown as configured ([#1170](https://github.com/agentscope-ai/CoPaw/pull/1170))

**Console & UI**

- **Workspace Drag-and-Drop**: Drag-and-drop reordering for enabled system prompt files in Agent Workspace, controlling prompt file precedence ([#1121](https://github.com/agentscope-ai/CoPaw/pull/1121))
- **Chat Model Selection**: Model selector dropdown on the Chat page for switching models during conversation ([#1140](https://github.com/agentscope-ai/CoPaw/pull/1140))
- **Agent Language Selector**: Change the agent's language directly from the console Agent Config page ([#1251](https://github.com/agentscope-ai/CoPaw/pull/1251))
- **Tool Batch Toggle**: "Enable All" and "Disable All" buttons on the Tools page for batch tool management ([#1112](https://github.com/agentscope-ai/CoPaw/pull/1112))
- **Chat URL Routing**: Direct URL access to specific chat sessions via `/chat/:chatId` with automatic URL synchronization ([#1221](https://github.com/agentscope-ai/CoPaw/pull/1221))
- **Context Management UI**: New Context Management section in Agent Config with adjustable compact ratio, reserve ratio, and tool result compaction settings, displaying derived token thresholds ([#1247](https://github.com/agentscope-ai/CoPaw/pull/1247))
- **Preserve Chat on Navigate**: Chat stays mounted when switching to other pages, preserving in-progress messages, cursor position, and running state ([#1340](https://github.com/agentscope-ai/CoPaw/pull/1340))

**Skills**

- **AI Skill Optimization**: "AI Optimize" button in the skill editor uses the active model to rewrite skill content with streaming output; supports English, Chinese, and Russian prompts ([#853](https://github.com/agentscope-ai/CoPaw/pull/853))
- **Skill Card Description**: Skill cards now display the `description` from SKILL.md frontmatter so you can see what each skill does without opening it ([#1235](https://github.com/agentscope-ai/CoPaw/pull/1235))

**Installation & Platform**

- **Auto PyPI Mirror**: Automatic PyPI mirror selection in the install script, detecting connectivity and falling back to Alibaba Cloud mirror for users in China ([#925](https://github.com/agentscope-ai/CoPaw/pull/925), [#1330](https://github.com/agentscope-ai/CoPaw/pull/1330))
- **Docker Secret Directory**: Added `/app/working.secret` to Docker layout for persistent provider settings and API keys ([#1050](https://github.com/agentscope-ai/CoPaw/pull/1050))

## 🔄 Changed

**Model & Provider**

- **Provider Connection Test**: Connection test methods now return descriptive failure messages instead of just a boolean, making it easier to diagnose configuration issues ([#1120](https://github.com/agentscope-ai/CoPaw/pull/1120))
- **ModelScope Defaults**: Updated default models to `Qwen3.5-122B-A10B` and `GLM-5` ([#1154](https://github.com/agentscope-ai/CoPaw/pull/1154))
- **Provider ID Conflict Resolution**: Duplicate provider IDs now auto-resolve (e.g., `openai` → `openai-custom`) instead of raising errors; connection testing disabled for custom providers ([#1234](https://github.com/agentscope-ai/CoPaw/pull/1234))
- **Model Discovery On-Demand**: Opening the provider page no longer auto-triggers model fetching; use the "Discover Models" button to refresh the model list ([#1342](https://github.com/agentscope-ai/CoPaw/pull/1342))

**Performance**

- **Async Zip Operations**: Workspace zip/unzip operations now run asynchronously to prevent blocking during download and upload ([#1128](https://github.com/agentscope-ai/CoPaw/pull/1128))
- **Async Session Load**: Session load converted to async function, preventing disk operations from blocking the server ([#1236](https://github.com/agentscope-ai/CoPaw/pull/1236))

**Console, Skills & System**

- **Tools Page Styling**: Updated tool card hover effects, enabled/disabled states, and status indicators ([#1092](https://github.com/agentscope-ai/CoPaw/pull/1092))
- **Container Detection**: Simplified container detection logic for more reliable environment variable handling ([#1075](https://github.com/agentscope-ai/CoPaw/pull/1075))
- **Built-in Skills Improvement**: Updated docx, pdf, pptx, xlsx skills with clearer prerequisites and new documentation for pdf/forms and pptx/editing; added `~` home directory support in file operations and venv Python on `PATH` for shell subprocesses ([#1147](https://github.com/agentscope-ai/CoPaw/pull/1147))
- **Himalaya Email Skill**: Updated with send/compose support via `template write | template send`, attachment handling documentation, and 163 mail configuration notes ([#1279](https://github.com/agentscope-ai/CoPaw/pull/1279))
- **Memory Docs Refactor**: Reorganized memory and context documentation structure, updated README links, and bumped `reme-ai` to 0.3.0.6b3 ([#1190](https://github.com/agentscope-ai/CoPaw/pull/1190))
- **Model Selector Styling**: Fixed model selector alignment in the chat header for consistent layout ([#1309](https://github.com/agentscope-ai/CoPaw/pull/1309))
- **Config & Security Page Refactor**: Restructured Agent Config and Security settings pages with clearer layout, improved styling, and better responsiveness ([#1333](https://github.com/agentscope-ai/CoPaw/pull/1333))

## 🐛 Fixed

**Channel Fixes**

- **DingTalk Auth Failure Cleanup**: DingTalk channel now shuts down cleanly when authentication fails, properly canceling the main task instead of relying on a fixed-time sleep ([#1039](https://github.com/agentscope-ai/CoPaw/pull/1039))
- **Discord Message Splitting**: Messages exceeding Discord's 2000-character limit are automatically split at line breaks, preserving markdown code fences ([#1001](https://github.com/agentscope-ai/CoPaw/pull/1001))
- **Channel Config Type Alignment**: Matrix, Mattermost, and MQTT channel configs are now correctly typed and validated via the API ([#1289](https://github.com/agentscope-ai/CoPaw/pull/1289))

**Platform Compatibility**

- **Windows Shell Encoding**: Shell command output on Windows now uses smart decoding (UTF-8 first, locale fallback) for reliable handling of mixed-encoding output ([#1103](https://github.com/agentscope-ai/CoPaw/pull/1103))
- **Windows Process Cleanup**: Shell command execution on Windows now properly kills the full process tree on timeout, preventing hangs from descendant processes keeping pipes open ([#1260](https://github.com/agentscope-ai/CoPaw/pull/1260))
- **Desktop SSL & Windows**: Fixed SSL certificate loading in packaged desktop apps via certifi; preserved system PATH in launchers; added `COPAW_LOG_LEVEL` support; resolved log file locking and subprocess output blocking on Windows ([#1252](https://github.com/agentscope-ai/CoPaw/pull/1252), [#1282](https://github.com/agentscope-ai/CoPaw/pull/1282))
- **Desktop IME & Navigation**: Fixed Enter key submitting chat while typing with IME, enabled external URL opening in system browser, and text selection in webview ([#1239](https://github.com/agentscope-ai/CoPaw/pull/1239))

**Console & UI**

- **Magic Command State**: Fixed magic commands silently destroying session state; session data is now updated by key path instead of full overwrite ([#1168](https://github.com/agentscope-ai/CoPaw/pull/1168))
- **Ollama Modal Re-renders**: Fixed unnecessary child component re-renders when opening the Ollama model manage modal ([#1242](https://github.com/agentscope-ai/CoPaw/pull/1242))
- **Chat Request Deduplication**: Prevented duplicate API calls when multiple components request the same chat session simultaneously ([#1307](https://github.com/agentscope-ai/CoPaw/pull/1307))

## 📚 Documentation

- **Roadmap & Comparison**: Updated website and README roadmaps (EN/ZH/JA) with Memory System and Small+Large Model Collaboration; updated CoPaw vs OpenClaw comparison table ([#1062](https://github.com/agentscope-ai/CoPaw/pull/1062), [#1110](https://github.com/agentscope-ai/CoPaw/pull/1110))
- **Contributing Guide**: Fixed grammar and clarity in CONTRIBUTING_zh.md ([#1119](https://github.com/agentscope-ai/CoPaw/pull/1119))

## 🔧 CI/CD

- **Docker Release Workflow**: Refactored Docker CI to properly distinguish `.post` releases (update `latest`) from pre-release versions (beta/alpha/rc/dev) ([#1069](https://github.com/agentscope-ai/CoPaw/pull/1069))
- **Test CI**: Added GitHub Actions workflow for unit and integrated tests with `scripts/run_tests.py` for local runs ([#1152](https://github.com/agentscope-ai/CoPaw/pull/1152))
- **Test Trigger Optimization**: Narrowed test workflow triggers with `paths` filters to only run on changes to `src/`, `tests/`, `pyproject.toml`, `setup.py`, and `.github/workflows/tests.yml` ([#1245](https://github.com/agentscope-ai/CoPaw/pull/1245))
