v0.2.5

sipeed/picoclawv0.2.5Apr 3, 2026by github-actions[bot]

AI Summary

This release adds new AI providers like Mimo, Venice AI, and LM Studio, along with enhanced tools for file reading and web searching. It also improves logging, Matrix formatting, and fixes various channel bugs.

Key Highlights

  • Add Mimo provider support
  • Add Venice AI and LM Studio provider support
  • Add read_file tool by lines
  • Add web_search tool range support
  • Add load_image tool for local file vision

New Features

  • Mimo provider
  • Venice AI provider
  • LM Studio provider
  • read_file tool (line-by-line)
  • web_search tool (range support)
  • load_image tool
  • Load zoneinfo from TZ env
  • Matrix Markdown formatting

Full Release Notes

## Changelog
* 849e37cf79bfbda9a17c52e3444828bc89cac39c * Load zoneinfo from TZ and ZONEINFO env (#2279)
* 26fa98c359a2411b418efcb272bfb0350baa1a7c Align rendering with Matrix' CommonMark guidelines
* bae4342af1d0a27aa37c52c6e1689d340aaa7048 Feat/tool read_file by lines (#1981)
* bb2eddc79dfc92e41a3687abe4a3d78374e4ca22 Feature/add mimo provider (#1987)
* 06be65e2e2d20210b362283e07b461a7db57d4a1 Fix API key links for Z.AI API key and add Z.AI example
* c36b06a901c3a4aa1870c0f9b8ca7c908779f23e Fix Telegram HTML links broken by italic regex matching inside href URLs (#2164)
* efbe80691305dbc66f1881a4e103d89f2cd8175e Fix bug double ,
* ba1538f31d72acd50d1e1acc3bd69187712e9e9e Fix: cannot create session github copilot
* 4d6292ca20ad198bec7a666554a5f84a4af25a7b Merge branch 'main' into fix/update-assets
* f9bfa6b9a87d9b3a37e2901be77d539943c39ae1 Merge branch 'main' into t3
* 475d377af11f5fe2b1cb7dfc31fa1c76a2282deb Merge branch 'main' into t3
* 50b8d9bf8362c630d08799375bf249024893ead1 Merge branch 'main' into t3
* 9c28870e80b654de6c60011ca7296de687221cc5 Merge branch 'main' into t3
* 6b9ceaa08fc39c88cfb5756f2013738005822913 Merge branch 'sipeed:main' into main
* d805e12a6058963e655fcd3f2e52ca288362aea1 Merge branch 'sipeed:main' into main
* f81269e77f07d33f83c21b12a9edc95318ef255c Merge branch 'sipeed:main' into main
* 7970e2da1503a3b61b79c90184857d9bdac022a0 Merge branch 'sipeed:main' into main
* 45582b0b52097aaa8ae20819cc356f2672c23991 Merge pull request #1510 from dim/matrix/improved-formatting
* a995a949906a74bda82ebc72d1d3029ac703a2ef Merge pull request #1826 from 3mp3ri0r/fix/container-run-app-stopped-on-sigint-sigterm
* 664e23e4fbb3839e18168855a9c3a9589dc1e14e Merge pull request #1828 from liuy/feat/logging-config
* 4bdf8f0e1dad2a1222f465537b6f5d9bb7729cef Merge pull request #1829 from perhapzz/test/add-fileutil-health-tests
* 34b4848214ae1fc85985d6f6757201b5b823b6c6 Merge pull request #1838 from jonahzheng/patch-1
* 4125f8ac14e4b2b66f2860d843e970cfc6e84e74 Merge pull request #1849 from gaaralbakuu/main
* a098dfba84b39b767121172fd87bc6daf5f92f29 Merge pull request #1957 from lepotatoguy/web-ui-input-fix
* ffa65b53ed4243bf4e338770581782601497000d Merge pull request #1982 from Kathent/fix-deny-pattern
* 0fb45505bf2f482f04f391c2c10c5e996734ec4b Merge pull request #1988 from loafoe/main
* 5db1e946937066b3d80360dbf356b9ec5fae05f4 Merge pull request #1998 from abnerhexu/main
* 174c4e5d3b1d79d892cea099b396e3274904b881 Merge pull request #2000 from Alix-007/docs/issue-1868-cron-docs
* 187b2c2185c7a1357e35e0878690e0f86791289d Merge pull request #2004 from Huangting-xy/docs-add-security-config-ref
* 848f9dd2e905191411b0b277e41db1e9b04a6c3f Merge pull request #2014 from badgerbees/fix/context-pruning-guards
* 1dff5e6903bbf77596cd38d9494ba4430d719cb0 Merge pull request #2016 from badgerbees/fix/context-overflow-errors
* 463a647a339f81beee6ae2c154b56f5dc8b1eee5 Merge pull request #2043 from apnea/main
* e6c05cb4ec0008e4305ab3337f7ddb708b894c39 Merge pull request #2069 from Alix-007/docs/issue-1908-model-cascade
* 25ce52715d00b4efece778548d4d58d10a2e6b98 Merge pull request #2070 from afjcjsbx/feat/improve-web-tools
* 9cbb4ab7ad34889cd0fc4102791322ce7770670a Merge pull request #2071 from afjcjsbx/fix/array-placeholder
* 76cd7f8ad55bb0bfe96319b09c9a8190dc866616 Merge pull request #2085 from lc6464/fix/chat/break-word
* 4d34824737aaa1f2aff52a98bc03ec99435a5bd4 Merge pull request #2088 from badgerbees/fix/telegram-dm-policy-security
* 415abc8cd405f0e60bf8a6a429a58d8ad3892d24 Merge pull request #2092 from badgerbees/fix/telegram-edit-timeout
* 30155c1c59cc8960226af8c2957b39ecd5c55c4c Merge pull request #2119 from BeaconCat/fix/update-assets
* 11540175637202ad720a95eca22937ae97c73da9 Merge pull request #2129 from kunalk16/chore-azure-openai-responses-tests
* 803b8bc02fd9c31acc25d7cf7d9b54885561e541 Merge pull request #2131 from imalasong/pr/3
* a5f8b0f98d182bdf917fc1d6be69e37862916001 Merge pull request #2134 from cytown/t3
* e34c4f82e0fd851fbee00d6f6362b372c8055472 Merge pull request #2154 from cytown/logger
* 7b3f47128f0e4ca4df50296a674de63553c5fff5 Merge pull request #2176 from Alix-007/fix/issue-2135-retry-after
* cbe92286e91fff27f91e1c45f7ff287494a715c2 Merge pull request #2184 from cytown/config
* 073cc3f65e20f2344e7d20c779cb605b6c5e2f72 Merge pull request #2196 from SiYue-ZO/feature/tour-guide
* c7461f9e963496c4471336642ac6a8d91a456978 Merge pull request #2221 from Alexandersfg4/doc/option-use-markdown-v2
* 6842a41b068b7152a7f921c059767d4e0d5999d3 Merge pull request #2287 from sipeed/dependabot/github_actions/actions/upload-artifact-7
* f542c929709fc3e0af668bb2a04f9f1f550c4add Merge pull request #2288 from sipeed/dependabot/go_modules/github.com/rs/zerolog-1.35.0
* 0f395ce11057d941344c43f32ef95295fe8c178d Refactor/asr tts (#1939)
* e4b104c0de1a259bf0946418dd91003ffe0e66ca Update helpers.go
* e23eda53655c43998b14a1658f2fec709e61d2f6 Update tests and error cases handling
* 7a1f2aba03374aff1c8516b9e8755da49a061922 add check for gateway port and fix logger.Fatal not record issue (#2185)
* 1ef0553929c73ee5c3fa4d719ff6cf4851da9244 add logger test case for console log format for component (#2162)
* 9ac21c5908db82b4a879569c5dffaa03c8ee14fe add missing recover panic in subturn.go (#2253)
* 0bb561548f099a60b588f0aaef30615af45aad05 add pid file for gateway running and auth token for /reload and pico channel
* ae9489360578810711171809592f731bc4087f2e adding test units
* d11f1bc0643991d9a1fa8d00b334aa4364cb2889 assets: update WeChat QR code image (#2207)
* a9c76eca2106ead71962faa6dfd0bbfdd21ca1ae bug: fix picoToken is empty when gateway started by launcher (#2241)
* f3ad5d930555ac0832fa5f406cb7572cd7165473 bug: fix typo in Makefile cause ln not work (#2301)
* 7fd6772196a0f91b9c8f62480045de9e8c0fb3b4 build(deps): bump @tanstack/react-query in /web/frontend (#2296)
* de2f2eb71b27ecc80d1dc0c32c63e0cc4a698331 build(deps): bump actions/upload-artifact from 4 to 7
* fd9914dd92168af4a168799ede92fc26832c30a1 build(deps): bump github.com/aws/aws-sdk-go-v2/service/bedrockruntime (#2061)
* d844bf3683dbc420a3b27959655bc9fe3281ec60 build(deps): bump github.com/github/copilot-sdk/go from 0.1.32 to 0.2.0 (#2058)
* b732abf758a5d801cbb1c1306373d52437bc6bfe build(deps): bump github.com/rs/zerolog from 1.34.0 to 1.35.0
* 74dfd9364c2e258806edd8eafbbc8e9534b5eefc build(deps): bump golang.org/x/time from 0.14.0 to 0.15.0 (#2059)
* 7dc0d02a5e51933c799ccd1bbc5e1913324a9493 build(deps): bump i18next from 25.8.20 to 25.10.10 in /web/frontend (#2065)
* 465baba99425b7e02833da9f19a64c1278c8a7ad build(deps): bump i18next from 26.0.1 to 26.0.3 in /web/frontend (#2292)
* 5c6e13e188e617a390e28caa220d0629256e68e4 build(deps): bump modernc.org/sqlite from 1.46.1 to 1.47.0 (#2063)
* 4169eb3b7233445b9d85eb22d2f0fcb886baf088 build(deps): bump react-i18next from 16.6.6 to 17.0.2 in /web/frontend (#2295)
* 8aa110c02a421bdba169f26d8a9e2a3f69918c1f build(deps): bump shadcn from 4.1.1 to 4.1.2 in /web/frontend (#2297)
* 82c78e853b0d0ac106ead11bf4ae8205740c805b build(deps): upgrade pty and reorganize sqlite dependencies (#2012)
* 8dfea249dacb7d5b9e49b341bba87e386bc34bf1 build(deps-dev): bump eslint-plugin-react-refresh in /web/frontend (#2294)
* 5e1b6a397157b945ef953e51767febba7b8c1cf5 build(deps-dev): bump globals from 16.5.0 to 17.4.0 in /web/frontend (#2067)
* edda02ce67cc5ef5124351ca86d1c3b522835cca build(web): refactor launcher build flow and expand WebUI documentation (#2174)
* 98c78363b3cb621d76746d1232ffab25eb9682c0 change default debug level to warn (#2084)
* 1809d04905baf1738e262186d84195fc61ac8d1f chore(provider): use openai responses api for azure openai endpoints (#2110)
* f07a8a89d5ea40d68f977cef10b6ab995c422d2c chore(web): patch vulnerable frontend tooling dependencies (#2182)
* c783bab2d7c276c784b4395d06dad7e63d00970c doc: added documentaion for use_markdown_v2
* 6b1d08f4541a4a2355a302c166388da769a1b262 docs(configuration): add security config reference at document start
* 9f02a5f33cc9c444736e2186b30b0872bc8fa546 docs(providers): clarify automatic model failover cascade
* 465ca0361c022568620483143a2c9e8a436fe09d docs(wecom): add fr/ja/pt-br/vi translations for unified WeCom channel docs
* 4f90909af34cbb9d67ca21e7eb20861c293eb7c7 feat(bedrock): detect SSO token expiration and provide actionable error
* 6c0798ca3f36a42a4a4edca50c47c3a92ffd60cc feat(channels): make Channel.Send return delivered message IDs (#2190)
* ed618e14aa50d2a045381406460b284ab92b051f feat(channels): support multi-message sending via split marker (#2008)
* dc956f2feb81412d184fd84ad3bc34858972d602 feat(config): allow placeholder text to be string or list
* 60d7ec20a517b2054c61a14fb2a42c9769cd480f feat(log): prompt tokens (#2047)
* 155af28841d2ca66da9db37ca926071a7fab153e feat(logger): add PICOCLAW_LOG_FILE env var for file-only logging
* e70928cc6f4fcf88f4f7a34ba18a7126824b42c0 feat(mcp): support DisableStandaloneSSE for HTTP transport (#2108)
* b114dcaeb1eb6032e817fb7e7ca9a25cff4eb529 feat(model): llm rate limiting (#2198)
* bbcfeaa361845c4e903b086b9067cdd105335460 feat(provider): add Venice AI support and update related documentation (#2238)
* ee02e3099267e4dcec2e0135ff16b372415efbbd feat(provider): add lmstudio and align local provider default auth/base handling (#2193)
* 2d8556205faaf24059f60c70f118230e1ffc0095 feat(telegram): include quoted reply context and media in inbound turns (#2200)
* 48c04e050d93ed585162ca3ce96dd056e610389b feat(tools) range in web_search
* 70c4714988a862a33c17b6539b0e090d4c8eee28 feat(tools): add exec tool enhancement with background execution and PTY support
* 3f1ac297d43750d408376290dd90444bded92fb1 feat(tools): add exec tool enhancement with background execution and PTY support (#1752)
* e88df4ff9c822457b60063d80891ea33af8be0f0 feat(tools): add reaction tool and reply-aware message sends (#2156)
* 49e61fa07f07abdd57b96fbb0c40b64702d21868 feat(updater): robust self-update selection & extraction (nightly default)  (#2201)
* 2bf842e46070feb37915254f5a9a767126b4cbeb feat(web): add service log level controls (#2227)
* c0464bdd5d531cadd055b7551617f0340ab9b649 feat(web): add skill marketplace hub and registry install flow (#2246)
* ff0266a40e7e0388bfe0e76d04ec8458680de7e4 feat(web): display backend version info in sidebar (#2087)
* e075be6b10a4392c1cd83f88d70421aecc7053c9 feat(web): move version display to the config page header (#2273)
* 7f7b4c430bb59bc553f19d5cdd231487118a6a47 feat(web): persist dashboard token in launcher config (#2304)
* 6ea364e67dead37e09ffc8d535ccc262a0ffe202 feat(web): protect launcher dashboard with token and SPA login (#1953)
* 3b3f95c44cec309be99df08f973b26e33348bce4 feat(web): refine model availability states and preserve API key preview placeholder (#2226)
* f2a19ab94736ae56ccdd6ac3909eab6824205271 feat(web): support image messages in pico chat (#2299)
* 7eba27c3c464ff186eb623b7b8b9878c833b8b93 feat: add ContextManager abstraction for pluggable context management (#2203)
* b5ce6209fdedcf12f1a113cc297897d2e7b92566 feat: add VK channel support (#2276)
* b8327462f9be241082508c398cc6e759c4295bd1 feat: add first-time tour guide for new users
* 31afad6e87b48d7d863ffd39d8b42ed6da762d0c feat: add load_image tool for local file vision (#2116)
* 2c446e1e07f44bdcc3b772cc119b2e2481b00e7d feat: add userAgent config for ModelConfig (#2242)
* 5b116b093fd17a4671d306bba1c08d3c6897157f fix comment in Makefile (#2300)
* b7f6ab7176ebaaf0c7e9bd84b87ea9a5caae9a9b fix conf
* 0c9e4f06580adf8f577b8db4fb3b802a9e60ef13 fix for FlexibleStringSlice cause picoclaw start crash issue (#2078)
* f0c0219c4cd6cc86b12b8635c185dc0a4327a225 fix for review
* f1cb7cc8f5b7a3ddb9baae0f10ab851f99c44700 fix gateway reload will cause pico stop working issue (#2082)
* e2018c4aa75f79fe818c288e320b18e67387ea94 fix lint
* 31fcf5529732948d6ec633b2f072ea8af5a040fe fix linter (#2206)
* e4893d27d769a8441d2d2ac491670158f696d327 fix test and lint in web (#2219)
* adf78092daeb23bc873b0114a2d81e173de7c79f fix typo in create_dmg.yml (#2255)
* 170ae0960696198465c80ef1ed0c10127b465610 fix windows make build error and support custom build env (#2281)
* 93f391a6bf7a845c3d59dda2da032ee460118e6c fix(agent): include SystemParts in token estimation and add reasoning guards
* 1a44752dc56675e5ed04edfcd7ed65a6f097774b fix(agent): prevent double-counting system message tokens in estimator Treat SystemParts as an alternative representation of message Content rather than an additive one. This prevents systematic overestimation of system message tokens which could trigger premature context pruning or summarization. - Picks the maximum of Content vs. SystemParts to stay conservative. - Adds a per-part overhead (20 chars) to account for JSON metadata. - Streamlines the ReasoningContent counting logic. Fixes a deficiency where structured blocks for cache-aware adapters caused overestimated budgets or hidden overflows.
* e011284d8fad222ba3079dff459b8ae17900a027 fix(agent): use light provider for routed model calls (#2038)
* f327859cceb75b9d1fae2f1d919d4381e7d4f55d fix(api): enhance model availability probing with backoff and caching mechanisms (#2231)
* 257aa0ff573dbcfbf3e88770b5569e4c5f43c836 fix(channels): fail fast when all channel startups fail (#2262)
* b5e29ae501fb9e8dff25f5b2fb9a378e6bc2ee62 fix(chat): add break-words class to user message for better text wrapping
* d385491592f476914a35692e4c7009228660a879 fix(config): array placeholder
* 5c210e6f15d61351f503ce496c4f8a84b5542014 fix(config): disable tool feedback by default (#2026)
* e414b82ac3b160ad5efdca83cae9337767cbe8d5 fix(cron): publish agent response to outbound bus for cron-triggered jobs (#2100)
* b6951b6925b313e3ccb3daa63d7d39ded276f9ad fix(dingtalk): honor mention-only groups and strip leading mentions (#2054)
* 43095543ab28d45b3fd48112caa42dec95001dfb fix(feishu): skip empty random_reaction_emoji entries
* 230942d23487429ff8d2e191a9e338e5b9e2b297 fix(loop): polling (#2103)
* 97dec16769b72df590c7533533f78d0f6a2d0e3d fix(providers): improve context overflow detection and classification
* e4f4afcd4da880383f04ec50fcba6147ed365ef5 fix(release): ignore nightly tags in goreleaser changelog (#1999)
* cd3f6600ca6661d6fffaae3ac0bc60f05e3fb233 fix(utils): honor Retry-After for 429 retries
* dd54601f2d115e83598d5a7c6f8f3f61ccc7f441 fix(web): hydrate cached Pico token for websocket proxy (#2222)
* bd56e10bb8e4cea22409ba83c19aef0295b8a9a7 fix(web): improve logs panel scroll handling (#2305)
* 93f4c4a843d216ab044c48f91b72b86853de828c fix(web): skills page uses theme colors for dark mode (#2166)
* a4574f72a3b328666782c1d143134e79f75c1f0b fix(web/config): persist Discord token updates from channel settings (#2024)
* 11dec0c80ad784ba8c74d1ae4ea2f603ea13432a fix(weixin): persist context tokens to disk to survive restarts (#2124)
* 0e13f6bdece88bea92590fa2ea7a5e6c03b18d20 fix/wechat-new-protocol (#2106)
* 2a28198d0f88d2a69f5fea69350ac0f1ba69a2eb fix: check json.Decode errors and use errors.New instead of fmt.Errorf
* 123b9db6a9ca4e5df7a7d9aa36635ef81ed2d1ad fix: correct struct field alignment for gci
* ae021ef843f71ee4e3fc4a85b456912ce9c45350 fix: more accurate deny pattern for disk wiping
* 62d40a02d45362ed634d6258245e9a4de03238df fix: resolve typecheck errors in loop_test.go and dingtalk_test.go (#2122)
* 27f638e909a2f91245f34deab72838f1b78471dd fix: unified restart required (#1978)
* 2973b30ad7029eacc4665216c4cfcebc3626c722 implement create dmg for macOS 10.11 & above (#2252)
* 275c1012f1d4100064404ad4c31011da48cd7ec9 make gateway reload use new loglevel (#2155)
* 42e3aaff35c6568721d8e2dc21ab6babcc32c20f make logger more clear with highlight component and use package name for default component
* 8f56cceb078a37c55bdf63215ba9c6ae3705ad10 missing ,
* 5e7545a22a9bb9c252b5db6e7deecb8695f382a3 perf: precompute BM25 index for repeated searches (#2177)
* 93757812fc64e225c89e1d33ed9e5d0504ad4d75 refactor config and add ModelConfig.Enabled
* b646d3b8fe0950e780e8fa8e68ea7de3877e5e68 refactor config and security to simplified the structure (#2068)
* 1fc5345857692365ad09fe3ea5f449c221a6b407 refactor(cron): remove deliver and type params, unify agent execution path (#2147)
* dad5dcc30f99979a5774621254d0d87ce4edcf4d refactor(web): load channel configs without exposing secret values (#2277)
* 33ce6ed482ad39b1c01d01e89f9bad284567d870 resolve conflicts
* 8d5fc736d6416967245c9603d784583bbeab6701 security: add open-by-default warning and '*' allow_from support
* 026a1339c7f18a7406807beccc3d09d7d43b9a34 simplified duplicated code (#1935)
* 0276554d9c90d9782c999b0b61db0f3cea10584d test(fileutil,health): add unit tests for WriteFileAtomic and health server
* e2a9bb97c72f0852a19c847c142ace1120944bbc unify all panic event to panic log file (#2250)
* 010d807e61be9f1bb035e06b437f4a8d5d0a508c update docs according to newest config version 2 (#2186)
* d08bb02f8fe5092ff02469d10d372f897240504b update restart policy to unless-stopped
* 61a31df168e2607d246600dae1b89d912ea98aab use explicit port headers before falling back to wsPort in picoWebUIAddr
* 9440bebca6f8daa683c8b5519809840ebb65daa1 utils: anchor date retry-after to response date and cap delay
* 711685192c6e63e0a007114c68fe3dcf4585532f utils: gofumpt http retry formatting
* 345d4fddc9b2a1d96b366b0ebd3fe6421eb09d6c utils: make retry-after numeric clamp overflow-safe
* b90a6d12ea5b135e55b583464308caf4d0910c34 fix(telegram): refine duplicate-message protection with narrow error classification


---
Released by [GoReleaser](https://github.com/goreleaser/goreleaser).