✨ Added
Agent System
- Windows Diagnostics:
qwenpaw doctornow checks Windows-specific environment issues including long path support, PowerShell language mode, and working directory path length (#4032) - Agent Status API: New
GET /agents/{agentId}/agent-statusendpoint reporting agent runtime status, running task count, and task timestamps (#4107) - Cron Session Isolation: Cron jobs now support a
share_sessionoption — when disabled, each scheduled run creates an isolated session context with a cron job ID (#4117) - GPT Image 2 Plugin: New tool plugin for generating images via OpenAI's GPT Image 2 API (#3911)
- Config-Driven Agent Name: Use the configured agent profile name instead of a hardcoded default (#4140)
Chat & Console
- Whisper Voice Input: Replaced browser-native Web Speech API with server-side Whisper transcription for more reliable, cross-browser voice input (#3574)
- LLM-Generated Session Titles: Chat sessions are now automatically titled by the LLM in the background after the first message. Configurable via the "Auto-generate session titles" toggle in Agent Config (#3829)
- Token Usage Trends: Added per-model and per-token-type trend line charts to the Token Usage settings page for visualizing usage over time (#4080, #4094)
- Batch Skill Operations: Added Enable and Disable buttons to the skill batch operation toolbar with per-skill error reporting (#4091)
- Mermaid Diagram Rendering: Markdown code blocks with
mermaidlanguage tag are now rendered as interactive diagrams in chat and file previews (#4146) - Brazilian Portuguese (pt-BR): Added full pt-BR locale support for both the Console UI and backend language settings (#4009, #4143)
Providers
- Volcano Engine Provider: Added Volcano Engine as a built-in OpenAI-compatible provider with standard and Coding Plan endpoints (#3994)
- DashScope Region Selection: DashScope base URL can now be modified from preset region endpoints (#4074)
- Aliyun Token Plan Provider: Added Aliyun Token Plan as a built-in provider (#4122)
- Anthropic Default Max Tokens: Raised default
max_tokensfor Anthropic-compatible models to 16,384 (#4054)
Channels
- Feishu Interactive Approval Cards: Tool-guard approval requests in Feishu are now rendered as interactive button cards that update in-place on approve/deny, with a documentation link hint when the card action callback is not subscribed (#3941, #3982)
- WeCom Group Session Sharing: Added
share_session_in_grouptoggle to control whether group chat members share a single session or get per-member isolation (#3948) - Feishu Sender Context: Feishu sender nickname is now passed to the agent environment context (#4098)
- WeCom Interactive Approval Cards: Tool-guard approval requests in WeCom are now rendered as interactive template cards (#4112)
Security
- Static File Path Traversal Protection: Console static file serving now rejects absolute paths to prevent path traversal bypass (#3973)
- Rule-Level Auto Deny: Individual security rules can now be configured to automatically deny tool calls (#4046)
Skills & CLI
- Skill Test CLI: New
qwenpaw skills testcommand to validate skill content and run security scans (#3999) - Skill Install/Uninstall CLI: New
qwenpaw skills installandqwenpaw skills uninstallcommands for managing skills from the command line, supporting both pool-level and per-agent workspace installs (#4053)
⚡ Performance
- Console Rendering: Eliminated duplicate re-renders by stabilizing approval polling state comparisons and memoizing chat runtime options (#4052, #4110, #4153)
- Chat History Navigation: Skip chat history lookup for non-arrow keys and cache user-message lists to avoid repeated scans on every keystroke (#4130)
- QR Polling Cleanup: Immediately stop QR code polling and clear status indicators on auth completion or code expiry (#4148)
🐛 Fixed
Channels
- WeCom Stream Keepalive: Keep the "Thinking..." placeholder stream alive with periodic refreshes to prevent stuck status indicators in WeCom (#3950)
- WeCom Reconnect Race: Fixed double reconnect scheduling and cross-event-loop disconnect in WeCom WebSocket handling (#3963)
- Telegram Network Retry: Added exponential backoff and controlled reconnect for transient Telegram network errors instead of silently dying (#4039)
- WeChat Cron Buffer Flush: Flush WeChat merge buffer immediately for cron/proactive sends that bypass the normal completion path (#4106)
- Markdown Table Splitting: Preserve markdown table structure across message chunks by repeating header and separator rows in each fragment (#4119)
Agent System
- External Agent Timeout: Added safe default timeout (60s) for
delegate_external_agentto prevent indefinite hangs (#3928) - Agent Config Reload: Agent config file changes now trigger a graceful reload with task draining instead of lightweight reinstantiation (#4064)
- Agent Config Persistence: Fixed the console agent config editor dropping nested settings on save by preserving the complete config structure (#4157)
MCP
- MCP Execution Timeout: Use
sse_read_timeoutas the MCP tool execution timeout instead of the shorter HTTP connect timeout (#4058, #4061) - MCP Client Lifecycle Leak: Fixed lifecycle-task leak where
close()could skip stopping a background reconnect task (#4152)
Console & UI
- SSE Surrogate Safety: Avoid SSE stream crash on malformed surrogate text by sanitizing non-encodable content before serialization (#3553)
- CodeMirror Line Wrapping: Fixed line wrapping in tool call input/output blocks (#3960)
- Default Agent Display Name: Respect custom name for the default agent in all UI surfaces (#4073)
- File Preview Paths: Fixed redundant URL prefix stripping in file preview paths that could cause broken URLs (#4089)
Infrastructure
- Docker Backup Restore: Correctly restore secrets on Docker volume mount points by swapping directory contents instead of renaming (#3916)
- Audio Block Paths: Return resolved filesystem path for
file://URL audio blocks and remove redundant file handling code (#4021, #4048) - Log Rotation: Use
RotatingFileHandlerfor log rotation on all platforms (#4076) - Loopback Proxy Bypass: Bypass proxy environment variables for loopback API health checks to prevent connection failures behind corporate proxies (#4092)
- Conda Packaging: Restore conda packaging tools before running
conda-packto prevent broken packaging pipeline (#4093)
📝 Documentation
- WSL2 Timeout FAQ: Added FAQ entry for handling
APITimeoutErrorwhen running in WSL2 NAT mode (#4005) - Documentation Update: Updated website documentation to reflect new features (#4013)
🧪 Testing & CI
- Console Unit Tests: Added Vitest setup with unit and component tests covering Chat, API layer, and shared components (#3559, #4121)
- Integration Smoke Tests: Added app startup and settings/environment variable smoke tests (#4081)
New Contributors
- @karls0r made their first contribution in #4021
- @Jailtonfonseca made their first contribution in #4009
- @hllqkb made their first contribution in #4005
- @yutai78786 made their first contribution in #4081
- @tqjason made their first contribution in #3574
- @JingHou1215 made their first contribution in #3999
- @wjt0321 made their first contribution in #4076
- @1105623876 made their first contribution in #4032
- @Keillion made their first contribution in #4142
- @q1023884985 made their first contribution in #3928
Full Changelog: v1.1.5...v1.1.6