v0.2.0
sipeed/picoclawv0.2.0Feb 28, 2026by github-actions[bot]
AI Summary
A major version bump introducing the picoclaw-launcher with a full web UI, a complete refactor of the channel system, and multi-agent routing capabilities. It adds native WhatsApp, WeCom, and Mistral support.
Key Highlights
- Add picoclaw-launcher with web UI
- Add multi-agent routing with declarative bindings
- Add native WhatsApp channel
- Add wecom and wecomApp channel support
- Add native Mistral AI provider
New Features
- Picoclaw-launcher (Web UI)
- Multi-agent routing
- Native WhatsApp channel
- WeCom channels
- Mistral provider
- Channel system refactor
- Agent loop refactor
Full Release Notes
## Changelog * a91a4e5978086add5fbadbb8a4da9ed2f5697cb0 * update wechat qrcode & delete unused mp4 file (#852) * 1b3da2ca29a49b281bc57f5ed7aba36504902bae 1. update wechat group qrcode * aea4f25c8387aee5e16b03a126beebbd712ff26d 1. update wechat qrcode. 2. add CONTRIBUTING.md * 19c6890807a7d9a9d46201fcd0b6e9775bf1a37d Add ARMv7 build target to Makefile * 14cb16f113702ad9420ead54a77908a0460567af Add goarm versions for ARM architecture in config * 25362ec7632be24a3fb0867c35b33f28a183f9e0 Add new build tag for WhatsApp native support to keep the binary smaller. * 852d361eb0d54c042228a9c56ff9a20e0d59f9f8 Add new provider cerebras * c1ed163e77f23e2e81f99e4952907dbecc89de23 Added a native WhatsApp channel implementation. * 16a36ea416117e1b86429cc5505f389ac362e408 Adding a new target to the Makefile to build for multiple platforms with WhatsApp native support. * 5772b9241bd767afee67527a8506c3503785eef5 Better nuance * 91eff9b34cbc41bef4184cb26640f8192ffcb2bd Changing the logging to use the logger package to be consistent. * 287100f3030b337ac5f24d7577b0e28e26357616 Comments resolved * 42ee9ab1e317c899229cc9c94d7a02688df76bd9 Complete the whatsapp native channel implementation based on the new channel interface * 7de75192b81306085544ce7fe123da82732af90d Disable Docker Hub login in release.yml * 85276057a0b1ef392062c74725f565bb35b4ce6b Disable dockers_v2 section in goreleaser config * f7d487ea3077f362a4494802558842403cb9025a Enable Docker Hub login in release workflow * 8207c1c7e6006c0664dfec99fd6bbbda34d2550a Feat/update migrate (#910) * 3390576eeacb97bdd3da95b156e226ab72ee0929 Feature/websearch OpenAI (#118) * d692cc0cc62cfa3a56ad692c31a5020f7e5c3392 Feature: Implement Skill Discovery - With Clawhub Integration and Caching (#332) * df49f6698a145f619fb687125792953401800e61 Fix * 97bf4ff3fddd99c5a6a1d9a74a4e7637f34d7063 Fix Japanese translation * 80c8b5753338dc75286d93d8d62fa01654b1a2f0 Fix Memory Write (#557) * f6c275f70c1db95daa3a0e3543d89dc2a426f5dd Fix formatting of WhatsAppConfig struct fields * 7276a2d651cd62806336d84d0c20e7680c2aa2b0 Fix lint errors * 994ec72d917ff3cf7c3d2a4df39b8b2a66626849 Fix parsing of SKILL.md file frontmatter - regex * 7ce5b75178356d4c81044faa6d2ea06cd69ec507 Fix shadowing field runnnig * 6cd419b6e27272b5f377912fe0972d2033df4cd6 Fix the case sensitivity issue when automatically recognizing VolcEngine LLM model names. * 4cc8b90da94d9695d3edad52281cefdc58db8e58 Fix: missing Tavily config in loop.go, and the invalid config param in web_search (#660) * 76f8ab827f7fc6aef092a8aa104fc6cb309250cf Handle dis * 6992012737045d6c0ea226e93f03dab864616276 Merge PR #333: Add Cerebras provider * 5d1669ecc4ac18c54792b9adcda014dbe63eb0b9 Merge PR #343: Add Google Antigravity provider and harden tool-call compatibility * de4ef9a8be69a8af1bec56e40659d4d37275e2af Merge PR #365: Add Qwen provider * 6913edbb5bf3fd95559eb29c038ab5d3d4392d14 Merge PR #368: Add Volcengine (doubao) provider * 2ee28589126bcbd29289d69cfcb784ce966f47fa Merge branch 'main' into docs/add-vietnamese-readme * 2038f04d0d35ccd59d0a77058ef7c368f099387b Merge branch 'main' into fix-formatting * ad8c2d48c89d51b4d955fac49f22893a1a90b64a Merge branch 'main' into fix-formatting * 5ff4a0f0efde44e3a5b63c81b5c892fd988408b6 Merge branch 'main' into fix-formatting * 0785a05a4820cfb1a342891b16f16bd21fc25eb6 Merge branch 'main' into golangci-lint * 24e35a199b361b38b2eec459441e45a2d79c9a98 Merge branch 'main' into golangci-lint * 552d6f10eabd98b36dd2c689f88df456cdad40be Merge branch 'main' into golangci-lint * ef8965048ac1ebc786f9b23f56e2e7c76a1a0373 Merge branch 'main' into golangci-lint * 7a2d353d0f649283dacbd3044f941f472f564f78 Merge branch 'main' of github.com:mosir/picoclaw into fix/atomic-file-writes * a161bf9e24e94030c1a56b3e07f33702bd73be21 Merge branch 'main' of https://github.com/sipeed/picoclaw * 78ba0575b7c4b09ae853b21221417454b414d473 Merge branch 'main' of https://github.com/sipeed/picoclaw * fa68023ac24c91fd92ebcc83966b56cecc891dff Merge branch 'refactor/channel-system' into main * 0a9d24e2a283a30b0449858d0e6fe97daa212e9e Merge branch 'sipeed:main' into feat/base-layer-message-split * 16a1c96e40f1e714102711b9c539075f6c837c93 Merge branch 'sipeed:main' into fix/atomic-file-writes * 87e674ba15a7d008bd0a805b4aa098e785dbf265 Merge branch 'sipeed:main' into fix/atomic-file-writes * b8c0d136c8baf20014f260c5b67d329c2e1b88be Merge branch 'sipeed:main' into fix/atomic-file-writes * be4b8fa684807286935b601a959dfb5ffa529106 Merge branch 'sipeed:main' into fix/atomic-file-writes * cdbc9c4bd6b3c0237f6953a813a01d60b286f22a Merge branch 'sipeed:main' into main * b1a6b3898d84afd5e979d740aac0b625347f59cd Merge branch 'sipeed:main' into reasoning-chnl * 1e88df3ea83b2aef12133849357ac22aab386fd2 Merge branch 'upstream/main' into docs/add-vietnamese-readme * e3c246a36f58c1fa261470d9b38ec009b44f9b12 Merge origin/main into refactor/provider-protocol-122 * ab805fd5e367238ac326292945e52b74ce4d79f2 Merge pull request #131 from Leeaandrob/feat/multi-agent-routing * e61786cc6b8ad4cb53c04ac6ef58059922869aa7 Merge pull request #213 from jmahotiedu/refactor/provider-protocol-122 * b77a40315e2ba059c8afc4173c61e81521ae0f4d Merge pull request #218 from mattn/fix-readme-ja * 7b9b8104c8a6a7658f0c7ee7bff58882f1547111 Merge pull request #225 from yinwm/feat/cron-exec-timeout-config * 4fde0175cf2d90638c8e5f2187334a8b706e926c Merge pull request #227 from mattn/fix-shadowing-running * b1e3b11a5d0844eb783ddfb686e0c4e8e1179972 Merge pull request #304 from mymmrac/golangci-lint * ba47892bcfaa50c5454135a738debe06e203c578 Merge pull request #327 from humaid0x/fix-japanese-readme-link * 87aee78900ae804a958d28e534266e8e53d4505b Merge pull request #337 from quybquang/docs/add-vietnamese-readme * 8807d8254f202ea4852662e2d26fdfa438e1591b Merge pull request #362 from blib/feat-bin-size * 5b525f61390b47e75f5c3b7402042fa628b0b2cc Merge pull request #378 from lunareed720/fix/exec-timeout-process-tree * eeac7c7a6776132aa0733b58bb31352597bb5d77 Merge pull request #385 from Leeaandrob/docs/add-portuguese-br-readme * f7ec89d82d5697f6165a801b74ed535dc3bbcc85 Merge pull request #411 from harshbansal7/frontmatter_fix * 1eb6b83b8f152871fe3651713c0c39a3224f944f Merge pull request #418 from DanielVenturini/fix/add-missing-accentuation-in-ptbr-readme * df2c42466c120987345e91dea4f5a582d93e415a Merge pull request #435 from mymmrac/fix-formatting * 59fd3912483c97b7fc4a894512a216d5d28dea06 Merge pull request #436 from Huaaudio/feat/base-layer-message-split * 048cd08e41f13b1225a10008ece9aee90da5b780 Merge pull request #437 from harshbansal7/fix_build * 1ef33c90ed91891f4787df7b31b935df1372cbeb Merge pull request #474 from swordkee/main * b3e20c7c7184d02c046e2291f0d54d7bf1529af5 Merge pull request #491 from PixelTux/ollama * e599573ed4b626bf7c1d6f59a895d1b82b22eba1 Merge pull request #492 from yinwm/feat/refactor-provider-by-protocol * 36a8a038eed819666387a405734bd6f3284659ac Merge pull request #514 from CrisisAlpha/docs/config-example-add-missing-sections * 55227762e4802b8763f2ad0017333f27ee05acdd Merge pull request #524 from mattn/perf/strings-builder * e23795e51b017e828f9835b7d8ff8a85fb3c48e7 Merge pull request #537 from Esubaalew/main * ae74fa381266c857ddec897e9c1b758793128d9e Merge pull request #541 from edouard-claude/feat/mistral-provider * 1e3a9eb3c4281074f5669b194f786fb1dce06e8f Merge pull request #546 from harshbansal7/readme_fix * e883e14b8192280f99e439b5a4caa4b66fc028e5 Merge pull request #548 from mymmrac/build-no-fmt * 273a8a231876343c3b682fe29209d6f8b645c69b Merge pull request #550 from mymmrac/govet-linter * fd26fa7459965d9ddeaa7da9e0cf494a73190288 Merge pull request #587 from nayihz/feat_webtool_proxy * 40f9630eea98521b4d6dda2894ef13079e8dc15d Merge pull request #590 from alexhoshina/docs * bb8b9243b70379c3e0bb81d1555a3c05829d58cd Merge pull request #592 from alexhoshina/main * b6e965e5496d693c91bb3df683fe0d52347a4317 Merge pull request #604 from winterfx/fix/reasoning-content-missing * 53578da51bd4c0a0ad75547091992c72f4d27fb9 Merge pull request #617 from Zhaoyikaiii/fix/repeated-context-reprocessing * eb138a3f131831709a5d77a3bedc62859f2ff508 Merge pull request #642 from Lixeer/main * c119e0d5e8901e2e8d760d81545d61574662922c Merge pull request #655 from adityakalro/main * d20cb364a27089595ba5458415461071d2e2ccf4 Merge pull request #677 from yinwm/refactor/model-to-model-name * 8529abbc918fdb3254ad3109a7449c00d62a3c54 Merge pull request #681 from dimensi/bugfix/falsy-context-deadline * 7cbfa89a96059c1e6e6139ebc5c2e305ff4f7746 Merge pull request #697 from xiaket/doc-remove-chinese-comments * 69e5b619cb7ed41cb065a007c184b7e798b950da Merge pull request #706 from mosir/fix/atomic-file-writes * 18ba88869aa08adc48c82f84ab507125032d07e5 Merge pull request #722 from ihao/main * 9cc0f8e685200e4934be9a67ca826871cb45e865 Merge pull request #724 from mqyang56/fix/model-list-default-value-leak * b10555cad271ce6b4ab195be807e950aa2d5a795 Merge pull request #726 from xiaket/devx-make-improvements * 9c7933dd0065620ae0c2ddecf75754beed048cd7 Merge pull request #730 from winterfx/main * 3584c0c7be63f8bd297dd1920a79c3833d76d95e Merge pull request #766 from penzhan8451/main * f24407672bab99f5c5c429a0f70707f03a4e0ffb Merge pull request #768 from avaksru/main * f7fc8bb6e9caf2dfed66d4011fc27c8e79df886e Merge pull request #770 from xiaket/ci-golangci-cleanup * 094d65916d2fc35990c325c4bcfced91dac615f0 Merge pull request #779 from wgjtyu/main * 95b246f5a0832f192ef18bc3696722081799956e Merge pull request #790 from rordd/fix/gemini-prompt-cache-key * 90e49bc6719f38cdc5311a0af1240775dce6b897 Merge pull request #802 from biisal/reasoning-chnl * b1c61cd8dffb3f43eb3b007dcb836f6af12c4bfd Merge pull request #808 from alexhoshina/config/change-default-dm-scope-to-per-channel-peer * 70fcbc5700e6cb450605cf971bfe658374887568 Merge pull request #824 from 0xYiliu/fix/issue-783-fallback-alias-resolution * 2c8416e658ed90764aed6203dfc73b593e55d39b Merge pull request #842 from sipeed/revert-767-update-wechat-group * 5b96923d66386325e7e58de7a837430439aad166 Merge pull request #877 from sipeed/refactor/channel-system * 1211218b60caf554fdfdbd4c3b470edec9984999 Merge pull request #881 from mosir/fix/onboard-include-empty-model * 2f4f45080b19c8958a013515208e965369dbc4dc Merge pull request #882 from sipeed/fix/issue#565 * feee0da94584a4079259cafaac0256a5d0df54a5 Merge pull request #884 from alexhoshina/fix/memory-leak-whatsapp-reasoning * 684e7413e183ab451baa1219d960cc88fcb77848 Merge remote-tracking branch 'origin/main' into feat/cron-exec-timeout-config * f8f1d539d4e074fc0bb59da7dadcd5f0ceaaef33 Merge remote-tracking branch 'origin/main' into feat/refactor-provider-by-protocol * e76e45f30f234a96d0d588aa0f2ec04a7bc934c5 Merge remote-tracking branch 'origin/main' into refactor/model-to-model-name * f86de3cbb9a03cbc16f480a74852f88f966070ed Merge remote-tracking branch 'sipeed/main' into fix/atomic-file-writes * 40f90281e52ebf3d4b6444b4d891ce9a6062caae Merge remote-tracking branch 'upstream/main' into feat/cron-exec-timeout-config * 8a3be993cdd967c0c5df209a5c41c0ede62f567d Merge remote-tracking branch 'upstream/main' into refactor/provider-protocol-122 * 23c39f41dfb7e79f316ba5af8ac21a472535b73c Merge upstream main into feat/refactor-provider-by-protocol * 723f4e84ef0f7ce393f169e0a09231347f09c025 Merge upstream main into feat/refactor-provider-by-protocol * 04806bffe3df969d14ecacf23e968dc86cd56334 Moving logging from INFO to DEBUG for messages Removing extrnaeous comments about mutex in loop.go * bb0eadded0447366f5a2b3b7aee243b903d06900 Optimize ./picoclaw status output to support all config file configurations. * 8a1fb03974628c0629072d76f10994d89b978b20 Perf/precompile regex (#687) * 82a2faed9d54ba9caaf3f6ec764fd2f92fc6700d Privated function * b6927c9a7af751ef483e3cb7f7009d8b716bd6d4 Prompt to modify the max_tool_iterations parameter. (#855) * 49612adf8ae67621ec7cce63d46bfd6989f08911 Rebuilt after the refactoring of the base channel implementation. * a8644ca1c504792fe610293a0458dee407edab09 Refactor whatsapp native channel based on the new channel interface * 6fcc80bf44119d990200ad2d1728b6e09fb8d726 Reformat WhatsAppConfig struct fields alignment * 6b427afa4433cbed53643beff2665c2736996b64 Remove ignored files from .gitignore * 071505e797a7ee8d38c753f1dec91312a008d8a7 Removing the agentMu mutex from the AgentLoop * e8afd31b28bf7d0c2e7ebddbc2320bc89f996fe0 Replace \s+ with [^\S\n]+ to preserve newlines (#299) * 75a86ebe036373a6a1f5c7dfe29e474c519c9ce3 Resolve merge conflict in config.example.json * a527976e68d17ba82f18ac4c3482e99adabbd624 Restore dockers_v2 configuration for picoclaw * 7592ccdab25d38c07dc8337fc09b441c5391400d Revert "docs: update wechat qrcode (#767)" * e268ea82b934b3bcc1820d5b1ec8d7fc852a6deb Revert "feat(line): add StartTyping and PlaceholderRecorder integration" * 81234f7e54146b9e95bceac81bc440701efeb813 Sanitize WhatsApp messages and remove extra log messages. * ebfa72a286cc83ebf706fb2b90ffd4f64a2d3475 Update config file reference from config.yaml to config.json * 3ad937f05bda61668a8db5e10e524e2dce49ce5c Update function comment for SanitizeMessageContent * ef1989f12eed8c9be31427d68d303dfa85820d5c Update pkg/tools/web.go * 0d6b22fb3a8b90a00bc08ba015ec75a95ceb2041 Update pkg/utils/message.go * 4ccee8556179d42ad0c5c3d7cb1f25caed3a49b9 Update pkg/utils/message.go * dfc3dffd0619530bff2615d48e137dfd531cf1bb Update pkg/utils/message.go * 67e1dab4089685f5717feb13c2ffe68671e0e3b6 Update test case for unicode letters preservation * f38ce0d4ac7ce0a7f99dc8b3c9303d0d7a9a69a0 Update to support extra long code blocks * bca92433ba209e1866c86eaa342f708f29ba882e Use strings.Builder instead of += concatenation in loops * 9be1cd6277bdcce85c15cdcd692283fba2302b9e a moved case of nakedret * 2f24be6c59cb6fe1edb32e86b05a44947bdc0158 add Volcengine LLM (doubao) support * c8a553f109793bc73cef24a955ca0ef895597838 add proxy support for TavilySearchProvider * 02b5811b95abf1b6102f1cbce2afc9cace1f3cb4 add support for \r as well * 08599f8736035f715a38adfc3da25f8e92fa8de9 build: add armv6 support to goreleaser (#905) * cb3191c8c129250103c75fae626e218296a183d0 build: support armv81 arch in Makefile (#776) * a5c8179fa854c67450e5a681282d8e459ab04d69 chore(docker): reorganize docker files and add first-run entrypoint (#812) * 0ede643e7859658c58345e9b10e9ef22e27d3c15 chore: apply PR #697 comment translations to refactored channel subpackages * d429dcdd7627f23f0c828be0f6c3db188d3e0d20 chore: fix go fmt formatting issues after rebase * dc9fb327c2efdca728aa4a49ab21e311499f7021 chore: update Claude model references to claude-sonnet-4.6 * 43611e2c4e4dd7a13de5c7b0aba2e1ad6768efeb ci: add loongarch64, remove s390x and mips64 support in goreleaser * 974337f4abcbb830db049671ec5c6512f8846e82 ci: add rpm and deb support in goreleaser * 6a4116b8a0953ed21ecd8714189e86abc4f99275 ci: fix go generate not running in subdirectories (#807) * a5cc4db5149e6493fe432076cbd9d46e9f4ca3f1 ci: remove version from rpm and deb file name (#804) * 21654f1335aa8039edbacc8ed84a9cd4c04793b2 config: change default dm_scope to per-channel-peer * d167b4743132e2f5e6674bcb9b3d990953e936d7 dead code cleanup (#210) * e5788e7f955976761a5ba92d5021cdffc813476c docs(channels): add Chinese README for channel system architecture * 779e4dfc381f4b556cad545d2e650f81216bb1d0 docs(channels): add English README for channel system architecture * be55204696a36e62844bd9a92d94e2b0e863a9a8 docs(config): add missing duckduckgo, exec, and qq sections to example config * f8bd88338701730cd638eac360631e0c8c8d2de8 docs(readme): add brazilian accentuation on pt-br README * 362c49a69d0465b711153e1ab14eeaaeb779eee6 docs(test): document protocol architecture and migration compatibility * 95f22bc07bfc26c7562bd349d5535fd41b3d7d07 enable bodyclose * 06daa30e75492badef24eaff60e2004661f470c9 enable dogsled * 1fab1967d200fd6ed9bd6b731b6192c20cb30113 enable goprintffuncname * c5e8e19f54843d5461a8fada9f0df477e18e6ad2 enable misspell * 09cf8efde6159f9d8daffa27a89baf898b97b4bc enable nakedret * 4e6589d51f1a4ffddc320ceb55c281c884122c7d enable prealloc * 6830790692f2721703c48588b39e02ab72dbc67b enable predeclared * d8b164b3d43dc50cae9269d472fec7992b71f0ce enable wastedassign * b190e6e9107313d557220191841141c83766a548 enable whitespace * 676bd6d222509591614db840c2d36e94b2fdc3a2 extra_hosts mapping to have enables container-to-host connectivity * e10b1e1fd4b5f6a96d3555c60c8d0e4e8f39dba8 feat(channels): add MediaSender optional interface for outbound media * 60b68b305a1eb61057945ed6efe2b2ef2b3264ee feat(channels): add typing/placeholder automation and Pico Protocol channel (Phase 10 + 7) * 29ed65010769ac901eaf077dee3f680d80e14aa6 feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces * c2ace2561cfae81839e977f90da7e29017d7b8e7 feat(ci): Remove fmt from build step * df6958f3125c8a6bd3138ca1f1b3dade73ffc18e feat(config): add complete model_list template with all 17 providers * 1e26312cb3ebfb75e1189151f3359fbd597239e6 feat(config): validate duplicate model names * 82856bc57aa0af52dc8c3f9b563b90af2d030126 feat(cron): add configurable execution timeout for cron jobs * 2fb2a733d425ac6b023fd0adcc18a2ee3abc1618 feat(discord): add mention_only option for @-mention responses (#518) * d07ac54eef87fab754c25e3fded292ce6c957db3 feat(fmt): Fix fmt * a89683190386c9da604fc22cf20ec594aa32214f feat(fmt): Fix formatting * 0675ce7c38ba4139bfce94c47e19275dbaed4017 feat(fmt): Fix formatting * 9e120f90ea4dcda6a4323850b6e169514e71a3ca feat(fmt): Run formatters * 2d758d714faf8d4cc7fe48d7886bb8f3a2971a8b feat(goreleaser): add 'stdjson' tag to picoclaw build configuration * 2d876eaa9809d3a958ffc2e73c8eed8b8d760531 feat(goreleaser): enhance build flags with versioning and commit info * 56d80373eb7c4e41023c759dc88dc9e4c9c95393 feat(identity): add unified user identity with canonical platform:id format * e450e9e053fa7f3cb36ec2873f12ffc5686145a8 feat(line): add StartTyping and PlaceholderRecorder integration * 02b4d9fbe2dea85fb032ceba7d4c64f1499ba95a feat(linter): Fix govet linter * 35670d5a583737215bf165a445a4b5f4f1fb4cc3 feat(linters): Added golangci-lint config & CI job * d69ef653df4f23dd42cff04724c3b54c7add1b6e feat(linters): Added job names * df52d4ad0129a821050d02b9e514396a5d2d0e82 feat(linters): Fix linter * b88f4c9ab567c4c523f39cd53ae72cc8fb9b5faf feat(linters): Fix linter * 272cabc627302b36fc385a35bd5603b7a088b4e1 feat(linters): Fix version * d6f052f6b153a14a05fa4449756216cc069f3b87 feat(linters): Fixed golangci-lint version * 67d07109a99411ba4a791a287bb3d143fb6f1a0d feat(linters): Removed fmt check (present in linters) * d9b5f64777416502a67e1d556de10d241d77d38b feat(linters): Temporarily disable most linters * 4ada4063d7862cf4a1fc4637afce2da7ff722d2c feat(media): integrate TTL cleanup into FileMediaStore * 56a060ff61167c03086a271340574e2f34d28721 feat(onebot): enhance OneBot channel (#192) * 7f241647be570aee1f5cf909a0af06ab814a4f94 feat(providers): add thought_signature support for gemini * f3c1162001fd2562e9f75024d9e33120d753d709 feat(skills): add retry for HTTP requests in skill installer (#261) * 27e988c4845c5358b66770fa92f2df0a39109361 feat(tui): Add configurable Launcher and Gateway process management (#909) * f929268ab263934759d61f6e054d11c660f03c48 feat: Add Perplexity search provider integration (#138) * f96cf3f8cc2792bc2f8b55c231ae00304f821b98 feat: Add `reasoning_channel_id` to communication platform configurations and improve message bus context cancellation handling. * f0e90e6379399a78d39c9135dc740a079b5ffba3 feat: Add the Qwen provider * 9f95aad5f3cc2a57be7cd7a699ba3e554535475d feat: Introduce LLM reasoning fields to LLM responses and enable routing reasoning output to dedicated channels. * eda6e373323861fea99630013946d7aeea94ade0 feat: Support modifying the command filtering list of the exec tool (#410) * 29e07ec7b401a5546e11ff986d3fdc28cd5ad255 feat: add manual callback URL entry for headless OAuth flow * 6e7149509a3a4a25661604a6def08a3f532b0b87 feat: add model fallback chain with error classification * a73d8e1a16d63e0f27106eab227bc6e04f8f3eff feat: add model_list configuration for zero-code provider addition * 272536a11a96eb0f1c9deaf7c58dd2bc88411133 feat: add multi-agent routing with declarative bindings * 65422a16a4f9a04ecc55b066b800e92859b9f376 feat: add native Mistral AI provider support * 5e028a847c5ee1fa957d94cd20e1b7acadb83a27 feat: add picoclaw-launcher with web UI for configuration and gateway management (#904) * 59772cdbf25904a40ae24dddf55a7767e3f4be4d feat: add wecom and wecomApp channel support * 14ccfb39d94cd2ede66af4d2b21b1765116153fc feat: add wecom and wecomApp test * ca481035a4ab5731f5f0d7c867db119f151f5b34 feat: add wecom and wecomApp test * 0f70f783bd88c5db875c1ebebe5bde902a96ab27 feat: add wecom and wecomApp test * 848aaedc24492baf61825638e7d3227a1447800e feat: complete Antigravity provider integration with robust error handling and docs * 76f2b42d5b88bebec2a247b180cf1f19bc69464c feat: improve web proxy handling and coverage * c6865fe852f4e163767b78b6df72a06b5fdc6204 feat: integrate Tavily search (#340) * d3fe8c5e1789703004a64373930d942267438903 feat: use gemini-3-flash-preview as default model name * b122abd30f2305631f2dc90f4d894b169ab37451 fix * 5ca239b5c502df157ed54774aa46a6c9e3fed1ff fix * 244eb0b47d0f694df4bdc96c316b23698eab7407 fix (security): ExecTool `working_dir` sandbox escape (#478) * 123cffa85a1d69c5489a46e4a8f49630f130df03 fix 2 * 162f38cd4f544c66991202799ce3b7d5bc8c873c fix Code Review: PR #768 * ad747e8e8925cb9cb48cfc232f40156b0905b613 fix(Makefile): update LDFLAGS and GOFLAGS for optimized build size * 1e967334352eb4b75a59ad40520d0aa2a1eca939 fix(agent): avoid consecutive system messages in compression * 7f425f1d11fef11607c9abbf2469f9bdbe8bf546 fix(agent): correct misspelling of 'canceled' * 1d0220f9fdc0af1b5c18bef6f5b79be7f4aedb48 fix(agent): prevent reasoning goroutine accumulation on full bus * 3a3862340a765e1fd5a0dd5e64da7eab4c2aa7cf fix(agent): resolve fallback model aliases from model_list * caf3913347df406887a76f7e9e881112a7ecb788 fix(antigravity): normalize tool calls to avoid empty function names * 84110aa40838f94733655b71fd22dcb2b93b0a2e fix(antigravity): preserve thought signature on tool call parts * 99c32714f1b4f9d9495b94c2a08b39d318490bd2 fix(antigravity): sanitize invalid tool-call history ordering * d1655d5996a5456d681b27579818f0a65765b529 fix(antigravity): update default model from gemini-3-flash-preview to gemini-3-flash * 6ad85d225be04363066a03941e43e79870a5025c fix(auth): preserve model_list and use gpt-5.2 for Codex API * 1d4fe4652a4641a4f59410354395a23a29e1c434 fix(bus): increase message bus buffer size from 16 to 64 * c241c55a0d7cc1fb8a0b5ca78bb04004ab15e93e fix(channels): address PR #734 review comments * 4adafa88902403a5bb2e1341d87893a3803d7f9a fix(channels): channels session key routing (#489) * 72e897f95adfb9924e7472c020be44ac7991cc97 fix(channels): fix memory hazards in channel abstraction layer * 7572e3b95d2a7a0f612306b84932da35c449643e fix(config): allow duplicate model_name for load balancing * 1161aee8729bf44659dc70fc1060869b7c4c1208 fix(config): keep empty agents.defaults.model in saved config * 58b5e21d90c6c578c769d5d7cf3c3b49a2baccee fix(config): support legacy config without provider field * 172e6ebe5fb063777f6d15a7e690c4ebd020071c fix(exec) fail close on invalid deny pattern (#781) * acac1972e60323607a57d74aaa9e1a767414f138 fix(exec): terminate process tree on timeout * 33915fb712ecb0dccbdfe2e31617251aa6a983e1 fix(gemini): preserve thought_signature in tool calls to prevent 400 errors * 61eae92b38e51a7cb46680ee9fbd5ba0d959e3b3 fix(line): log loading refresh errors, skip typing without recorder * b705e58528cb85e15e4ce80468684f56a2dfe160 fix(media): address review comments on TTL cleanup * d804f9cb3fde9b213647e4b4217f6441469c6823 fix(media): guard Interval<=0 panic, two-phase ReleaseAll * 0a7c929905e38b6fddc33871ee5ffa232ab8eec2 fix(media): separate import groups for gci linter * 94aa2b1788032299bb798c912fd1e3607430248f fix(media): use project logger and harden map cleanup * a1d694b8f1102e279a0d8e908aa6b47b2e133ebd fix(migrate): add github_copilot to supportedProviders * fb96645ea90c265891d845dd61c6c396a781ea70 fix(providers): support lookup-based fallback candidate resolution * 438f764c7ac0d7aa851bae45b04d2fdf5299f257 fix(providers): support per-model request_timeout in model_list (#733) * 2fa51d7b868672ab2fd054396216fa68184b3ad6 fix(security): change gateway default bind to 127.0.0.1 (#393) * 09b1992dd79cac46b7a48176074eabae36b9c1bc fix(security): ensure custom deny patterns extend defaults instead of replacing them (#479) * 19c698356c2aef8f618a110acef671def19f5261 fix(security): workspace sandbox avoid time-of-check/time-of-use (TOCTOU) races (#464) * fc28c2660a5f709b7f6c763a9d9b1328dd4acaf0 fix(whatsapp_native): close TOCTOU race between eventHandler and Stop * c7d75a18f89f443f5bf1e1a3de214680c0957773 fix(whatsapp_native): fix goroutine and resource leak in Start/Stop lifecycle * 9b80fdf885facf0d1b6067446a8fa67a18393762 fix(whatsapp_native,agent): address PR #884 review feedback * d1b10a0004e87d6f3857cbb22287b16786c49279 fix(whatsapp_native,agent): address second round of review feedback * 871b2d7342bfcfec07c0723ad6614c23ff24c24c fix(whatsapp_native,agent): fixes for resource leak and log noise * 01d694b9985a66c3d7119fc9f74ce8ed4f0f21b5 fix: Add comprehensive command injection and system abuse prevention patterns (#401) * 394d1d1197897989d4547037e993f678afb98f60 fix: Templates update (#485) * 8405d390dfaca26fba80fd63728d5f87353e1b92 fix: add CGO_ENABLED=0 for static build to fix cross-platform GLIBC errors * 09a0d19119060c48ce5a24a5692daf2536b59b54 fix: add VLLM default API base and implement MaxTokensField support * 6852f240251a3d410d89d1b352acf2666dae3d04 fix: address PR #662 review comments (bus drain, context timeouts, onebot leak) * f645e9a377ee348b365a23821a4dd47e13a5cc60 fix: address PR review feedback across channel system * 8a53cb96651fad13c665417aadbedddf3e14a284 fix: align Docker Go version with go.mod and optimize logger (#596) * 01e2354b977d580679871379beef24f371bf521e fix: align map values for proper formatting * bb0424e1e280c2ccc7861e6b5b431aa05bacca26 fix: also use max_completion_tokens for gpt5 era models (#445) * a849e02917e6c3c6a52a0e2c27e19552cc91f88d fix: better session management for `github_copilot_provider` * 1f7cbd916490ba39eda9edc6037bf13044eb4494 fix: cache system prompt with mtime-based auto-invalidation (#607) * 0d16525fab81f1010bf6ddafd5ea68d975613a88 fix: codex tool call * 838a69085bafadd90175d8b1a52aa3547084222b fix: correct docs misalignment across translations and guides * a4b6cea103cf533f14e064c9c6e4766fe39f728a fix: distinguish network timeouts from context window errors * 12f0c4a6cf84b110f3bffe67a31302250d5618ed fix: ensure tool name is correctly assigned in LLM iteration(missing tool call name in debug mode logs) (#454) * ea902429f2c3ce6be60e8e925a49d777527d950c fix: exclude prompt_cache_key for Gemini API requests * 3df7f705408d5767e43a22975fd2d093f33b7705 fix: golangci-lint fmt * b25b3c13246f7de7de12c37d2ec183c9e531f245 fix: golangci-lint run --fix * 00666022949fb993f9b07ae8c2bb844fde977b23 fix: golangci-lint run --fix * b47a39af9cbbdf9cdc0ebe2a9ed3607c9d260596 fix: handle multi-tool-call orphan detection in sanitizeHistoryForProvider * 8f606733a2b6e208dc3fe799122774b3fa39c011 fix: hide compressed historical messages notification (#799) * d09c64fcee20e9eabb13ca9c8de483747aafa930 fix: implement code review suggestions * ec86b21d3fc4f2cedff00d0631a02b05ba7723b8 fix: improve migration logic and reduce code duplication * 213274002ad21fe5a41219248e74ae7f4df27664 fix: keep Discord typing indicator alive during agent processing (#391) * 6d487a12b26ae2131a573915ee4f55a4da424c30 fix: make install should be aware of the textfile busy since it tries to overwrite the file with non-atomic operation (#558) * 35a035bddabcd19408e227d10b6343e1a41242e2 fix: port main branch changes to channel subpackages after rebase * d224397f40a798ae9ddf4e7a9f00aaf3d62620dd fix: preserve reasoning_content for OpenAI-compatible reasoning models * 0d761ca6084efb1344591870ce58d96b6a9be051 fix: prevent DefaultConfig template values from leaking into user model_list entries * 6c8866de6f2b32c55a569dadb22f59d34167ef74 fix: propagate error when no channels are enabled during startup (#897) * ec6da7a530ce5da48df422b38be697afad36192b fix: reject empty task in spawn tool (#740) * 34a8ce5af05618057837db05828f3867e6cd4fdf fix: remove extra fields from ToolCall JSON serialization * 4cd3f99dd6f2ddfd3378b269d6f295d4a5ecc763 fix: remove max_tokens * 740cdcaeafde5d1ce5b2356cc86dccf1deaf0729 fix: remove redundant tools definitions from system prompt (#771) * 5cd1597674494b8620753099f653f0cbd7366ba3 fix: remove unnecessary lock mechanism and upgrade Claude 3 to Claude 4 * b9a66248d8fd88644f1fec3f8be35fbbc23d4803 fix: resolve Groq STT key from model_list when providers.groq is absent (#602) * 5d304a9aebca2b10af84fcdcf813e1fd3d6ab261 fix: resolve golangci-lint issues in channel system * ba98069a000b6e32892845e78137158429657b66 fix: resolve wastedassign lint warnings in channel subpackages * f1223eec42838d1903f665d7c8407c68056ce2ab fix: revert enable endy patterns (#519) * 3d605a4f537507713706aa626b74ad8506e6e12a fix: run fmt and lint * 29d4019e628b57f50c15116c4597191a28ac2433 fix: set max tokens to 32k, default model to null (#858) * cec6fd4cd4689bac068b4710aed0b26e98c77541 fix: should use fmt.Printf instead of fmt.Print(fmt.Sprintf(...)) (#623) * 1765f6d0e781f189a9ddc60e9622386e32b622d9 fix: strip antigravity prefix and improve model list for flash-preview * c51ceac70b66acc30d42a31e9f77d784b190890c fix: updated model configuration links at readme (#544) * 81c8c07b791b08c0ea35da6a6a476e1294cf2ad2 fix:Openrouter in providers and modellist * 920e30a241313544ad735f78e0d5590f1a0b9c1f fix:pr-272 reverted the changes from pr-227 (#361) * 4a73415e0516e0f954267c2ee797896d2ec770bb golangci-lint run --fix on master * 6b429de927b9665bd99e277d062b469edebc86d4 golangci-lint run --fix on master (#656) * 6e754a86f325519fca8a57316a16f117c4acd1a8 merge: resolve conflicts with main * d88700971f3b2f7d273ceb4b2a3aafba76e7c45f merge: resolve conflicts with main * 447c17aeb1f19d93c26efdb007669680ff67fde8 merge: sync upstream/main (PR #213) into feat/multi-agent-routing * 12007b567071361222d9c7de7b27f4eecf5673da merge: sync upstream/main into feat/multi-agent-routing * 5e892645361e1fb59269b7e562360aaa5c49bb6d merge: sync upstream/main into feat/multi-agent-routing * 8a6fb7d9e3890d539644271e6652cc7cc7ce6444 merge: sync upstream/main into feat/multi-agent-routing * 2276bd149e7bcf1d9b9551be390aee24b28e2ff1 merge: sync upstream/main, wire WebSearch through factory * 78e5bdad29c9c927b72b99b40b3da87d5dc28431 minor improvements in Makefile * 6fe3920a4d836b97c838fd39874cc6a5d07d1d40 perf: refactoring collecting skills (#688) * c4cbb5fb35374d0ff917baff9196746f843b99fa providers: finalize PR213 review fixes * ea447c6b68e20d2358a1d0f9f675120f30263e3d refactor(auth): extract supported providers message as constant * afc7a1988f0af7479f3bc1625e4e3e24a360ea67 refactor(bus): fix deadlock and concurrency issues in MessageBus * 931093c19d79ed1d0ff6ad444b086b6c29d0298b refactor(bus,channels): promote peer and messageID from metadata to structured fields * 6122ab664b6171fd1250c63865143d44089ac85b refactor(channels): add channel subpackages and update gateway imports * dfcf15bfff98bb1779b1e59a501ad39c962888ca refactor(channels): add factory registry and export SetRunning on BaseChannel * 38a26d702cde8971a1e1b3b08084a57634e8eb75 refactor(channels): add per-channel rate limiting and send retry with error classification * 65a09208c46db62dfda6825e1ca137b4a5ec2e56 refactor(channels): consolidate HTTP servers into shared server managed by Manager * a7276e2632d2b8a978167b5f82abe81fb82bae7d refactor(channels): move SplitMessage from pkg/utils to pkg/channels * e00745489ddc576f835a9e82ce68792f41fee2a7 refactor(channels): remove channel-side voice transcription (Phase 12) * 59a889b608ebf5a6165e76344c0e1cf9d43c4e86 refactor(channels): remove old channel files from parent package * cd2227235440389b88ddbda0d65fff23fa1f1f7f refactor(channels): remove redundant setRunning method from BaseChannel * d97848389bfbecbd2453f50f76ef5a0e50ac59f2 refactor(channels): replace bool with atomic.Bool for running state in BaseChannel * 083e29ebd94fec3efacc238bc152595f436ea2dc refactor(channels): replace direct constructors with factory registry in manager * d72c9c1ee608157ba64bb500e2bd7f58c7ec6776 refactor(channels): standardize Send error classification with sentinel types * f8b656ec378663df1c2b262923c7ac935846a576 refactor(channels): standardize group chat trigger filtering (Phase 8) * c669784216c8d126863384b6848d5d511a1146de refactor(channels): unify Start/Stop lifecycle and fix goroutine/context leaks * a91de8546c74dbeddadbe39dffe0eecffe05c37e refactor(channels): unify message splitting and add per-channel worker queues * 73f27803d4b573541f2df6631d4569e149a7753a refactor(cli): migrate to Cobra-based command structure (#429) * 712f5a8300f0ce9d9d22352a1bc92bed3a0c8b88 refactor(config): rename model field to model_name * c08deb93d1b49873a2e4862632b15d97c247aca3 refactor(config): use provider-specific protocol instead of generic openai protocol * 26bee0b7915da0a685d4dfdb170afe31d205777b refactor(loop): disable media cleanup to prevent premature file deletion * 038fdf500043456f17ff4734bebf309d82fc0214 refactor(media): add MediaStore for unified media file lifecycle management * 11996f1a0b7cdc91a2f6978c4ca06c2dda7f9bd3 refactor(pkg): move atomic file write to dedicated fileutil package * c56fcedcb14ce284e12c70bce7d5d1a76d1f2714 refactor(pkg/utils): add unified atomic file write utility * 4aed3591e762c61a5d1a27220ea7b70ff98031fa refactor(pkg/utils): improve WriteFileAtomic with stronger durability guarantees * a6e885bb473a20d671ed1dab5e8e8ea9bb8cd399 refactor(providers): extract protocol factory and openai-compat transport * 762565b0d4406aee7fb617d0b5c46d85014ab04e refactor(providers): move anthropic logic to protocol package * 68cdafc5f2932b173bf193664430cff2630cb0f9 refactor(providers): restructure provider creation with protocol-based configuration * 881999aceb5a8d63742691e2e1bcc81d98ef30c7 refactor(shell): interpret zero timeout as unlimited execution * 100356e8ec029f689a6b43363ada3556a2163365 refactor: cleanup dead code and turn on dead code detection in CI (#515) * 94a1b8664ba9637890e93f1864d19d7b78cde1c4 refactor: extract message splitting logic to shared utils * e03124dc8a695b36b28eb2798fc914efa4493906 refactor: improve SplitMessage API clarity * ef7078a356d0003a48c73aa39e60346ad056fbf9 refactor: reorganize commands and provider architecture * 32c5c4b3a44e959be1578a7c6d55651e89c86d37 refactor: replace bool map with set-style map for internal channels (#472) * e1583f3b1379061f7913b5b7e093cc0f672d2063 refactor: simplify legacy_provider.go from 349 to 49 lines * 8928f83c7ff254ec1c74bff1d03aca20220cb702 remove old roadmap (#632) * 98afd39913afc07435dcf1e883cb1c447abad786 remove unicode * edc78191c9e5b233395d24acf3fdbda02e762eef style: fix gci formatting in protocoltypes/types.go * 433af435a9b27112b0bab7e8e206aede55c8164a style: fix gci import grouping in config, cron, and skills installer * 0f5b2f67bbe443b63b7d975025661fc702cc0892 style: fix gofmt formatting in cooldown files * e2d37f09bfb26b0f90a0938bf25850752916ef66 style: run gofmt to fix code formatting * cb0c8703fb9d5ce373bc0c4f770177ba66508b25 test(tools,utils): add ToolRegistry unit tests and fix Truncate panic on negative maxLen (#517) * 6fb61539d779dd155ba82422fe7d0f1094f0893e translate Chinese comments * e35a82762406cc09df43bbb8d72d1529f317b7fb update documents * a46fe140a3c6e10b50d9d9437364865ac528cafb update dynamic buffer * 7d8894d842e874f1a0e4d413c5931ed8b8185cfa update message test, change dynamic buffer --- Released by [GoReleaser](https://github.com/goreleaser/goreleaser).