Releases: agentscope-ai/QwenPaw
Releases · agentscope-ai/QwenPaw
v1.1.5.post2
What's Changed
- docs(website): update documentation to v1.1.5 by @xieyxclack in #4013
- feat(chat): generate session titles asynchronously via LLM by @ekzhu in #3829
- fix(message_processing): return resolved path for file:// URL audio blocks by @karls0r in #4021
- Fix(Provider): Increase
max_tokenfor anthropic compatible models by @pan-x-c in #4054 - perf(console): Solve duplicate rendering by @zhaozhuang521 in #4052
- fix(mcp): typo fix by @qbc2016 in #4058
- fix(mcp): use sse_read_timeout as MCP tool execution_timeout instead of HTTP connect timeout by @qbc2016 in #4061
- fix(utils): remove redundant codes by @qbc2016 in #4048
- fix(channel): telegram network retry by @Leirunlin in #4039
- feat(i18n): add Brazilian Portuguese (pt-BR) locale support by @Jailtonfonseca in #4009
- fix(skill): resilient loading for migrated or malformed skill & skill pool entries by @Leirunlin in #4016
- fix(approval): /approve shorthand ignores request_id argument by @xieyxclack in #4014
- docs(faq): Docs for handling APITimeoutError when running in WSL2 (NAT mode) by @hllqkb in #4005
- feat(skill): Add skill install/uninstall cli by @Leirunlin in #4053
- chore(version): bumping version to 1.1.5p2 by @xieyxclack in #4071
New Contributors
- @karls0r made their first contribution in #4021
- @Jailtonfonseca made their first contribution in #4009
- @hllqkb made their first contribution in #4005
Full Changelog: v1.1.5.post1...v1.1.5.post2
v1.1.5.post1
What's Changed
- chore(version): update version to 1.1.5.post1 by @zhijianma in #3970
- feat(feishu): introduce FeishuCardHandler and upgrade tool_guard approval to interactive buttons by @hongxicheng in #3941
- fix(WeCom): keep placeholder stream alive to prevent stuck "Thinking..." by @hongxicheng in #3950
- fix(chat): fix CodeMirror line wrapping in tool call input/output blocks by @bowenliang123 in #3960
- fix(WeCom): avoid double reconnect race and cross-loop disconnect by @hongxicheng in #3963
- feat(WeCom): add share_session_in_group toggle for group chats by @hongxicheng in #3948
- feat(app): prevent path traversal by rejecting absolute static file paths by @zhijianma in #3973
- feat(feishu): hint docs link on approval card when card.action.trigger is unsubscribed by @hongxicheng in #3982
Full Changelog: v1.1.5...v1.1.5.post1
v1.1.5
✨ Added
- CJK-Aware Memory Search: Memory search now tokenizes CJK queries at character level while preserving Latin/digit runs (#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)
- Adaptive Model Retry: The runtime now learns per-model quirks from API failures and proactively adapts subsequent requests (#3874)
- ACP Agent Rename & Delete: ACP agents can now be renamed and deleted from the WebUI (#3859)
- QQ Voice & ASR Support: QQ channel now detects voice messages by file extension and uses platform ASR transcription when available (#3845)
🔄 Changed
- Agent Statistics Navigation: Moved Agent Statistics page into the Workspace group on the sidebar (#3754)
- Dockerfile Cleanup: Build directory is now removed after
pip installin Dockerfile for a leaner image (#3638) - Chat Component Upgrade: Upgraded
@agentscope-ai/chatwithstopChatfix (#3917)
⚡ Performance
- Config Loading Cache: Root and per-agent config files are now cached with mtime-based invalidation (#3865)
- Skill Manifest Cache: Skill manifest reads are cached by file path and mtime, reducing repeated disk reads on hot paths (#3910)
- Model API Deduplication: Concurrent
listProvidersandgetActiveModelscalls on the chat page now deduplicate their own in-flight requests (#3897) - Console Chat Performance: Chat session list is virtualized with
react-window, search loads sessions progressively with a progress indicator (#3908, #3912)
🐛 Fixed
Channels
- Approval in Channels: Fixed
/approveand/denycommands not working in channels (#3832, #3896) - WeCom @Mention Commands: Fixed slash commands failing in WeCom group chats when the bot is @-mentioned (#3903)
- Feishu Reaction Events: Registered no-op handlers for Feishu message reaction events (#3890)
- QQ WebSocket Reconnect: QQ channel now reconnects on recoverable WebSocket errors (#3872)
Console & UI
- Per-Tab Agent Selection: Fixed agent selection leaking between browser tabs (#3857, #3867)
- Backups Import Icon: Updated the backup import button to use an import icon instead of upload (#3909)
Agent System
- Timezone Normalization: Non-standard timezone names are now mapped to canonical IANA identifiers (#3858)
- ACP Fallback Inheritance: Fallback agent profile now inherits ACP configuration from the main config (#3834)
- MCP Execution Timeout: MCP client timeout is now passed through to tool execution (#3904)
New Contributors
- @LinQi0777 made their first contribution in #3870
- @albert-zen made their first contribution in #3872
- @ideal made their first contribution in #3638
- @CA-mambo made their first contribution in #3890
- @bxy3045134656 made their first contribution in #3845
Full Changelog: v1.1.4...v1.1.5
v1.1.5-beta.1
What's Changed
- fix(console): use hybrid storage for per-tab agent selection by @zhaozhuang521 in #3857
- fix(timezone): normalize non-standard timezone names by @xieyxclack in #3858
- feat(ACP): add ACP agent rename and delete in WebUI by @x1n95c in #3859
- chore: remove mission cli by @rayrayraykk in #3860
- fix: localStorage by @zhaozhuang521 in #3867
- refactor(console): move Agent Statistics page into Workspace group on the sidebar by @bowenliang123 in #3754
- docs(readme): Fix formatting and spacing in README_zh.md by @LinQi0777 in #3870
- perf: add mtime check for loading config by @rayrayraykk in #3865
- feat(WeChat): add message merge to mitigate context_token 10-message limit by @hongxicheng in #3863
- feat(model): refine retry logic by @qbc2016 in #3874
- fix(config): inherit acp in fallback agent profile by @shadowabi in #3834
- fix(qq): reconnect on recoverable websocket socket aborts by @albert-zen in #3872
- fix(ci): correct integration test directory path in tests.yml by @hongxicheng in #3877
- chore(version): bumping version to 1.1.4.post3 by @xieyxclack in #3879
- clean up build directory after pip install in Dockerfile by @ideal in #3638
- feat(website): website footer add wechat and QR code card by @yuluo1007 in #3881
- fix(memory): resolve triple-quote parse error in memory prompts by @zhijianma in #3902
- feat(context): add light context manager with compaction fallback by @jinliyl in #3882
- fix(backup): improve error logging with exception details and stack traces by @jinglinpeng in #3885
- fix(feishu): add no-op handlers for reaction events to silence 'processor not found' logs by @CA-mambo in #3890
- fix(WeCom): strip @mention prefix in group chat for correct command detection by @hongxicheng in #3903
- fix(console): proxy approval_level through running config API by @zhaozhuang521 in #3896
- chore(console): update backups icon by @zhaozhuang521 in #3909
- fix(mcp): pass execution timeout to mcp client by @qbc2016 in #3904
- Console/chat performance by @zhaozhuang521 in #3908
- perf: cache skill manifest reads to prevent FD exhaustion by @xieyxclack in #3910
- perf(console): virtualize chat session list with react-window by @zhaozhuang521 in #3912
- refactor(chat): dedupe repeated model API requests when opening /chat page by @bowenliang123 in #3897
- fix(qq): voice message type mapping and platform ASR support by @bxy3045134656 in #3845
- chore(version): bumping version to 1.1.5b1 by @xieyxclack in #3914
- chore(console): upgrade @agentscope-ai/chat to beta version with stop… by @zhijianma in #3917
New Contributors
- @LinQi0777 made their first contribution in #3870
- @albert-zen made their first contribution in #3872
- @ideal made their first contribution in #3638
- @CA-mambo made their first contribution in #3890
- @bxy3045134656 made their first contribution in #3845
Full Changelog: v1.1.4.post2...v1.1.5-beta.1
v1.1.4.post2
What's Changed
- fix: fix approval not working in channel by @rayrayraykk in #3832
- chore:bump version to 1.1.4.post2 by @rayrayraykk in #3833
Full Changelog: v1.1.4.post1...v1.1.4.post2
v1.1.4.post1
What's Changed
- feat(memory): add CJK-aware query tokenization for memory search by @jinliyl in #3811
- Revert "build(console): upgrade Vite from v6 to v8 for build performance boost (#3712)" by @zhijianma in #3812
Full Changelog: v1.1.4...v1.1.4.post1
v1.1.4
✨ Added
Agent System
- Memory & Context refactor: Refactor long-term memory module with pluggable backends, automatic memory summarization every N conversation turns, automatic memory retrieval, and a new context management interface (#3548)
- Plan Mode: Opt-in structured planning mode — use
/planto create step-by-step task plans that the agent follows, with a live plan panel in the console (#3686, #3787)
Providers
- DeepSeek V4 Models: Added DeepSeek V4 Flash and V4 Pro as built-in models (#3797)
Security
- Configurable Shell Evasion Checks: Toggle individual shell evasion detection rules on or off from the Security settings page, with per-check risk-type tagging (#3694, #3715, #3781)
- Auth-Bypass Host Whitelist: Configurable
allow_no_auth_hostslist for API access without authentication, with IP validation and security warnings in the console (#3739)
Tools
- Browser Launch Parameters: Pass custom Chromium flags and a custom browser executable path to
browser_use(#3556) - Shell Command Timeout: Configurable default timeout for
execute_shell_commandper agent (#3732)
Console & UI
- Per-Agent Model Assignment: Assign a specific LLM model to each agent from Settings → Agents (#3599)
- Session View Button: "View" action on the Sessions table to jump directly into the corresponding chat session (#3615)
- Session Right-Click Context Menu: Right-click on chat session items for quick open, rename, pin/unpin, and delete actions (#3770)
Channels
- SIP Voice Channel: New SIP phone channel with dual-mode backends — pyVoIP for development and LiveKit for production (#3449)
- DingTalk Voice Recognition: Use DingTalk's built-in voice recognition instead of downloading and transcoding audio locally (#3681)
- Telegram Command Menu: Expose
/modeland/stopin the Telegram bot's command menu for discoverability (#3714) - QQ Quoted Message Support: Parse reply/quote metadata and inject quoted text and attachments into agent requests (#3735)
- DingTalk Markdown Messages: Send shorter replies as DingTalk Open API markdown for richer message rendering (#3771)
- DingTalk Cron Message Type: Independent message type for scheduled/cron sends, allowing card-style messages for cron while using markdown for interactive chat (#3778)
- WeChat Interactive Wizard: Interactive
configure_weixinwizard in the CLI channel setup flow (#3699)
🔄 Changed
- Tool Guard Approval System: Refactored tool-guard with interactive approval cards in the console, cross-session approval routing (approve sub-agent tool calls from the main session), configurable execution levels (Strict/Smart/Auto/Off), REST API and
/approvalCLI command (#3656, #3737) - Dynamic Plugin Registration: Replaced the build-time generated host module registry with runtime
import.meta.glob-based registration (#3676, #3692, #3696) - Docker Build Improvements: Moved
config.jsoninitialization from image build to container entrypoint for volume-mounted deployments, and replacedpipwithuvfor faster package installs (#3698, #3723, #3769) - Agent Language Sync: New agents now inherit the console UI language (#3720)
- Agent Selection Persistence: Agent selection state persisted in
localStorageso it survives browser restarts (#3772) - Token Usage Buffering: Asynchronous buffered token usage recording with periodic disk flush (#3766)
🐛 Fixed
Channels
- Filter Tool Messages: Respect
filter_tool_messagessetting for in-progress content events (#3660) - File URL Encoding: Percent-encode non-ASCII characters in
file://URLs to fix file send failures on Windows and paths with CJK characters (#3625) - WeChat Send Response: Fixed WeChat
send_textfailing on empty or non-dict API responses (#3685) - WeChat Icon Mapping: Fixed
wechatchannel key not mapping to the correct WeChat icon in chat history sidebar (#3691) - WeChat QR Login Timeout: Extended WeChat QR-status polling timeout to 60 seconds with retry on read timeout during login (#3700)
Console & UI
- Agent Stats: Fixed page crash from incorrect chart library imports and stats not refreshing when switching agents (#3724, #3743)
Providers
- Duplicate Model Warning: Show a localized warning when adding a model ID that already exists (#3773)
- Anthropic File Block: Convert unsupported file blocks to text placeholders in Anthropic-formatted history to prevent API errors (#3786)
Packaging
- Discord.py Conda-Unpack: Added
discord.pyto conda-unpack reinstall list to fix Windows path corruption (#3730)
📝 Documentation
- Memory-Evolving & Proactive Agent: Added dedicated documentation pages for memory-evolving and proactive agent features (#3755, #3764)
- Agent Team Practice Guide: Added a comprehensive practice guide for Agent Team collaboration (#3784)
- ACP Integration: Restructured and polished ACP integration documentation, with in-UI documentation link (#3741)
- Docker Backup Volume: Added Docker volume mount documentation for backup & restore (#3736)
- Backup Figures: Updated backup documentation figures (#3678)
🧪 Testing & CI
- Agent Unit Tests: Added unit tests for hooks, memory, and utils modules (#3630)
New Contributors
- @shadowabi made their first contribution in #3394
- @shaohuaxi made their first contribution in #3449
- @vincentyzhj made their first contribution in #3660
- @hlgone made their first contribution in #3685
- @twz915 made their first contribution in #3698
- @Nioolek made their first contribution in #3625
Full Changelog: v1.1.3...v1.1.4
v1.1.4-beta.1
What's Changed
- chore(version): bumping version to 1.1.4b1 by @qbc2016 in #3674
- docs(backup): fix language issues in fig by @jinglinpeng in #3678
- chore(console): add .prettierignore and update format scripts to excl… by @zhijianma in #3676
- doc(security): fix format issues in doc by @gnipping in #3684
- chore(deploy): update deployment workflow to skip pre-releases by @zhijianma in #3689
- feat(memory): rebuild memory & context by @jinliyl in #3548
- feat(startup): warn when console frontend build is outdated by @shadowabi in #3394
- feat(browser): add browser_args and executable_path parameters for browser_use by @shadowabi in #3556
- feat(agents): add per-agent model assignment in settings UI by @seoeaa in #3599
- feat(channels): add SIP voice channel with pyVoIP/LiveKit dual-mode, streaming STT/TTS, and multi-turn conversation support by @shaohuaxi in #3449
- fix(channels): respect filter_tool_messages in on_event_content by @vincentyzhj in #3660
- chore(console): comment out vitePatchable plugin in Vite configuration by @zhijianma in #3692
- feat(console): add View button in session list to enter the corresponding chat sesssion by @bowenliang123 in #3615
- perf(agent-stats): optimize session file processing with fast-skip and bounded concurrency for /agent-stats API by @bowenliang123 in #3662
- feat(DingTalk): use built-in voice recognition from DingTalk callback by @hongxicheng in #3681
- fix(console): map wechat channel key to WeChat icon in chat history sidebar by @bowenliang123 in #3691
- refactor(plugins): switch to dynamic module registration without gene… by @zhijianma in #3696
- fix(channels/weixin): accept empty sendmessage response as success by @hlgone in #3685
- feat(security): add shell invasion guard configuration by @gnipping in #3694
- Console/icon by @zhaozhuang521 in #3683
- feat(plan): add plan mode by @qbc2016 in #3686
- feat(telegram): register /model, /stop in bot command menu by @hongxicheng in #3714
- perf: Tool Guard Approval System Refactor by @rayrayraykk in #3656
- build(console): upgrade Vite from v6 to v8 for build performance boost by @bowenliang123 in #3712
- improve(deploy): enable runtime auto-initialization of config.json by @zhijianma in #3723
- chore: merge bugfix in v1.1.3.post1 into main by @xieyxclack in #3721
- fix(console): sync new agent language with console UI by @xieyxclack in #3720
- fix: unable to open /agent-stats page due to incorrect imports by @bowenliang123 in #3724
- test(agents): unit tests for hooks / memory / utils + unit-tests.yml CI by @hanson-hex in #3630
- feat(cli/channels): add interactive configure_weixin wizard by @hlgone in #3699
- fix: remove dynamic environment variable coupling in tavily_search MCP default config by @rayrayraykk in #3725
- Revert "feat(startup): warn when console frontend build is outdated" by @rayrayraykk in #3726
- fix(channels/weixin): extend QR-status polling timeout to 60s by @hlgone in #3700
- feat: Security by @zhaozhuang521 in #3715
- feat(tool): support configuring timeout of run_shell_command by @xieyxclack in #3732
- feat(model): support retry for httpx errors by @qbc2016 in #3734
- feat(QQ): add quoted message support for QQ channel by @hongxicheng in #3735
- docs: add Docker volume mount section for backup & restore by @jinglinpeng in #3736
- Console/configuration by @zhaozhuang521 in #3737
- fix(pack): add discord.py to conda-unpack affected packages by @hongxicheng in #3730
- refactor(api): migrate agent endpoints to workspace by @zhijianma in #3738
- docs: polish ACP docs and add ACP doc link by @x1n95c in #3741
- feat: add configurable allow_no_auth_hosts whitelist for API authentication by @rayrayraykk in #3739
New Contributors
- @shadowabi made their first contribution in #3394
- @shaohuaxi made their first contribution in #3449
- @vincentyzhj made their first contribution in #3660
- @hlgone made their first contribution in #3685
Full Changelog: v1.1.3...v1.1.4-beta.1
v1.1.3.post1
What's Changed
- fix: revert to avoid defender by @rayrayraykk in #3717
- fix(desktop): use native save dialog for file downloads in pywebview by @jinglinpeng in #3719
Full Changelog: v1.1.3...v1.1.3.post1
v1.1.3
✨ Added
Agent System
- Backup & Restore: Backup and restore system — create scoped snapshots of agents, skills, memory, and sessions with per-agent selection, import/export as zip files (#3534, #3655)
- ACP Server: Expose QwenPaw agents as ACP (Agent Communication Protocol) endpoints over stdio via
qwenpaw acp(#3487, #3589, #3595) - Proactive Agent Messaging: Agents can proactively send messages, using session memory and screen context to provide timely information (#3466, #3643)
- Cross-Provider Message Normalization: Seamlessly switch LLM providers mid-conversation — provider-specific message fields are automatically cleaned and normalized when changing models (#3530)
Console & UI
- Console Plugin System: Extensible plugin architecture for the console — third-party plugins can inject sidebar pages, register routes, and share host modules (#3357, #3512, #3631)
- Agent Statistics Page: New dashboard with session and message trend charts, token usage over time, and channel breakdown pie charts (#3365, #3608, #3632)
Skills
- Skill Page Improvements: Redesigned Skills and Skill Pool pages with batch select/manage, separated search and filter controls (#3616, #3634)
- Builtin Skill Language Switch: All builtin skills now ship with English and Chinese variants. Switch language from the Skill Pool page, with default language support when importing skills to agents (#3558, #3644)
Security
- Shell Evasion Guard: New Tool Guard guardian that detects shell command obfuscation patterns (#3400, #3668)
- Enhanced Tool Guard Response: Tool guard messages now include risk severity level and a localized explanation of why a tool call was blocked or requires approval (#3515)
Providers
- Local Model Management: Configure custom server ports for local models (llama.cpp) and monitor server logs in real-time (#3596, #3604)
- OpenRouter Multimodal Detection: OpenRouter models now automatically report multimodal capabilities (image/video support) from the model registry (#3584, #3604)
- Aliyun Coding Plan International: Added international region support for the Aliyun Coding Plan provider (#3609)
Channels
- QQ Instant Acknowledgment: Configurable instant reply for QQ channel — acknowledge the user immediately while the agent processes the request (#3246)
- Telegram Typing Indicator: Typing indicator now stays active during tool execution, providing continuous visual feedback while the agent works (#3585)
- DingTalk @Mention on Reply: Automatically @mention the original sender when replying in DingTalk group chats (#3591)
- Channel Health Check & Restart API: Per-agent HTTP endpoints to check individual channel health status and hot-restart channels (#3649)
CLI
- Update Provider Base URLs:
qwenpaw providers updatenow supports updating provider base URLs from the command line (#3536)
🔄 Changed
- Debug Page Redesign: Relocated the Debug page under Settings with improved component structure, dedicated log viewer, and dark mode styling fixes (#3539, #3547, #3590)
make_planSkill Update: Cleaned up stale documentation references and streamlined themake_planskill (#3535)- Unified Channel Media Directory: All channels now resolve
media_dirfrom the agent workspace consistently, ensuring isolated file storage across channel types (#3610)
🐛 Fixed
Console & UI
- Preview URL Prefix: Fixed duplicated URL prefixes in file preview paths (#3355)
- Markdown Rendering: Fixed markdown rendering and code block copy styling in workspace file editor (#3639)
- Table Scrolling: Fixed table scrolling on Sessions and Cron Jobs pages (#3654)
Channels
- WeCom Attachment Access: Fixed WeCom attachment access failing in server deployments (#3079)
- WeCom File Upload: Fixed event loop blocking in WeCom file uploads and added relative path support for
send_file_to_user(#3128) - WeCom Duplicate Messages: Fixed duplicate chat entries for WeCom group messages (#3529)
- WeCom Screenshot Filename: Fixed CJK characters in WeCom screenshot filenames causing download failures (#3633)
New Contributors
- @daliu858 made their first contribution in #3246
- @xuanrui-L made their first contribution in #3487
- @pxdawn made their first contribution in #3585
- @mailmrcai made their first contribution in #3128
- @linhuang0405 made their first contribution in #3079
- @imrewce made their first contribution in #3466
- @zealonexp made their first contribution in #3278
- @Prince-liu made their first contribution in #3355
Full Changelog: v1.1.2...v1.1.3