✨ Added
Agent
- Inter-Agent Communication: Added
copaw agentsandcopaw messageCLI commands for listing agents, pushing messages to channels, and sending requests between agents (#1959, #2161) - Built-in QA Agent: Ships a pre-configured QA agent for answering CoPaw installation and usage questions (#2189)
- Configurable LLM Auto-Retry: LLM retry behavior is now configurable per agent from the console Settings page. (#2002)
- Summarization Improvements: When the agent reaches max iterations and enters summarization, a "round ended" notice is appended to guide the user (#1965, #2163)
- Config Auto-Repair: If
config.jsonis corrupted or has minor syntax errors, it is automatically repaired on load. Unrecoverable files are backed up with a unique suffix and CoPaw starts with default settings instead of crashing (#2164)
Security
- File Access Guard: Added a configurable deny list for sensitive files and directories. When enabled, the agent's tools are blocked from reading or writing those paths (#1762)
- Tool Guard Enhanced: Tool guard is now enhanced and works correctly when multiple tools run in parallel (#1984, #1948)
Channels
- Feishu / Lark SDK Migration: Migrated the Feishu channel to the official
lark-oapiSDK with native async calls, and added a region selector (Feishu China vs Lark International). (#1946, #2108, #2178) - XiaoYi File & Image Support: Users can now send images and documents through the XiaoYi channel. (#1885)
Console & UI
- Audio, Video & Speech Input: Console chat now supports sending and displaying audio, video and speech attachments natively (#2114, #2180)
- Stream Reconnection: If a page refresh occurs while the agent is still responding, the console automatically reconnects to the in-flight streaming session and preserves the user's input text (#1931)
- Web Account Management: Users can now change their username and password from the console sidebar when authentication is enabled (#1989)
- Model Provider Search: Added a search box on the model provider settings page to filter providers by name (#2062)
- Chat Scrollbar: Added a styled scrollbar to the chat conversation area for easier navigation of long threads (#2083)
Providers
- Multimodal Capability Probing: Models can now be probed for image and video support, and system prompt includes hints about the active model's multimodal capabilities (#2045, #2183)
- Gemini Tool Image Support: Gemini models now correctly surface images returned by tools in the conversation, matching existing OpenAI behavior (#2127)
Skills & Tools
- Enhanced Grep & Glob Search: The built-in grep and glob tools now skip heavy directories, enforce output size and time limits with configurable timeouts (#2186)
- Workspace-Relative Tool Output: Screenshots, PDFs, browser snapshots, and other tool output files are now saved under the agent's workspace directory instead of the process working directory (#2159)
🔄 Changed
Core & Lifecycle
- Stable Prompts for KV Cache: The environment context injected into each request now includes only the current date instead of a full timestamp, so prompt content stays stable across requests and improves LLM KV cache hit rates (#2176)
- Faster CLI Startup: CLI commands are now lazy-loaded so
copaw --helpand subcommands start significantly faster (#2135)
Channels
- QQ Channel Refactor: Simplified the QQ channel implementation and added comprehensive unit tests (#1930)
- Smart Text Chunking for QQ & WeCom: Long messages on QQ and WeCom are now automatically split at natural boundaries (#1937)
- QQ WebSocket Reconnect: Made reconnect attempts configurable and fixed cleanup (#2162)
Console & Backend
- Simplified File I/O: Replaced async file operations with synchronous ones in several non-critical paths to reduce complexity (#1962)
- MCP Startup Resilience: A single MCP client failing to connect no longer blocks the entire application from starting (#1956)
- Dark Mode Polish: Polished dark mode across select controls, header titles, multi-selection dropdowns, menus, and the security settings page (#1920, #2081, #2094, #2096)
🐛 Fixed
Shell & Deploy
- Shell Command Hang on Windows: Fixed a hang caused by pipe deadlocks when running shell commands on Windows (#2093, #1919, #2136)
- Shell Stderr Visibility: When a shell command succeeds but only writes to stderr, the output is now included in the tool response instead of being silently dropped (#2125)
- Shell & File Paths on Windows: Fixed
check=Trueerror handling andfile://URL-to-path conversion in Telegram and Discord channels on Windows (#1065) - macOS Desktop Build: Fixed macOS desktop release builds failing due to
llama-cpp-pythondependency conflicts (#1914)
Providers & Models
- Anthropic Overloaded Retry: Anthropic "overloaded" responses (HTTP 529) are now automatically retried like other transient errors (#1891)
- Model Connection Test: The "Test Connection" button now uses the same message format as real chat requests (#1909)
Channels
- Channel Message Processing Leak: Fixed a lock leak in channel message processing that could cause messages to stop being handled after errors (#2168)
- Custom Channel Config: Fixed custom channel configurations stored as plain dictionaries not being loaded correctly (#1991)
Console & UI
- Agent List: Fixed a crash when the agent list is empty, and ensured the list refreshes immediately after saving an agent (#2086, #2112)
- Console Static Files: Fixed console UI not loading when CoPaw is launched from a different working directory (#1923)
- Swagger Docs Route: Fixed
/docsand/redocAPI documentation pages being overridden by the console SPA routing (#1847) - Expired Push Messages: Console notifications now correctly expire and are cleaned up, preventing stale messages from accumulating (#623)
- Console Reconnect Overflow: Fixed a queue overflow error that could break console reconnection when replaying buffered messages (#2001)
- Mermaid Chart Scroll Jump: Fixed Mermaid diagrams on the documentation site causing the page to jump when rendered (#1980)
Agent & Memory
- Token Usage Lock: Fixed a blocking lock in token usage recording that could freeze the event loop under concurrent requests (#1893, #2016)
- Memory Timezone: Memory summarization now uses the user's configured timezone for daily note naming instead of system local time (#1814)
- Empty Compaction Results: Memory compaction no longer silently fails when the result is empty; a clear error message is shown instead (#2129)
- Cron Job Cancellation: Cancelled cron jobs now correctly report their terminal status instead of staying stuck in "running" (#1894)
- Task Tracker Init: Fixed task tracker initialization that prevented event listeners from receiving updates (#2095)
📚 Documentation
- Windows Desktop Upgrade Guide: Added FAQ entry explaining how to upgrade the Windows desktop (exe) version (#1973)
- Windows Port 8088 Conflict Guide: Added FAQ entry for resolving port 8088 conflicts on Windows (common with Hyper-V / WSL), with instructions for pip, Docker, and desktop installs (#1995)
- Community QR Codes: Added Discord and DingTalk community QR codes to the website homepage (#1993)
New Contributors
- @ixiadao made their first contribution in #1891
- @leoleils made their first contribution in #1930
- @ltzu929 made their first contribution in #1973
- @emoubarak made their first contribution in #1995
- @f3125472 made their first contribution in #1991
- @shiweijiezero made their first contribution in #1065
- @Yaohua-Leo made their first contribution in #2016
- @finenter-molei made their first contribution in #2001
- @lizeruicq made their first contribution in #2062
- @hbsjmsjwj made their first contribution in #2086
- @aquamarine-bot made their first contribution in #1814
- @sanfran1068 made their first contribution in #1931
- @x1n95c made their first contribution in #1937
- @saschabuehrle made their first contribution in #2172
Full Changelog: v0.1.0...v0.2.0