v0.2.7

the-dev-tools/dev-toolsv0.2.7Apr 22, 2026by github-actions[bot]

AI Summary

This release adds configurable Sogou web search, web search auto-switching based on UI language, and fixes various bugs related to cron sessions and channel interactions.

Key Highlights

  • Configurable Sogou-backed web search.
  • Web search auto-switching based on UI language.
  • Fixes for cron independent sessions.
  • Fixes for host binding issues.
  • Enhancements to PicoClaw CLI terminal UI.

New Features

  • Sogou web search configuration
  • Web search auto-switching
  • Cron session fixes
  • Channel interaction fixes
  • PicoClaw CLI UI improvements
  • OAuth no-browser option
  • Context usage ring indicator

Full Release Notes

## Changelog
* 93977bf348b6d8b9760a38215e425aeef785f40e Add configurable Sogou-backed web search
* e556a816e4db4c158ab3a455693018f452f63eba Feat/channel tool feedback animation (#2569)
* 824e800d7060519d70a89825031b80881079dcbf Fix Sogou user agent formatting for linter
* 9ded7933f03498f7557e3eadf07a7c87408d3dad Fix golines formatting for web search changes
* dcf21ef11c65faf3d7079a69b0e6aeeb7c8f4f99 Fix provider return formatting for golines
* 2784223ad59a33d72e536bffb73f13776467e053 Make web search auto-switch with UI language
* e32a20968379e41fa2695becf516d962156806cb Merge branch 'main' into refactor-inbound-context-routing-session
* df9124b8242435b23dce1237a368a26b30013f44 Merge pull request #2249 from alexhoshina/refactor-inbound-context-routing-session
* 20d35220690d69174ee06f0e7a19bd72fff71e98 Merge pull request #2418 from lahuman/docs/korean-readme
* dde61365d4347b59e2b7a35a236b091d2792564f Merge pull request #2420 from lahuman/docs/tool-escape-semantics
* d7d43746176ab731ff073539dd6f480bb821d5fa Merge pull request #2453 from sipeed/dependabot/go_modules/github.com/aws/aws-sdk-go-v2/config-1.32.14
* d03d519c6dc297d80c7f866f940aac1688f75b49 Merge pull request #2454 from sipeed/dependabot/go_modules/github.com/mymmrac/telego-1.8.0
* 282ebcd956db2b99ada8ab0357bcb3dc23e75977 Merge pull request #2457 from sipeed/dependabot/go_modules/modernc.org/sqlite-1.48.2
* ba08d52351a1399311dbc31e4cbc12a39d51ecc1 Merge pull request #2474 from srcrs/fix-cron-independent-sessions
* 6d0379192993f2f64de6b8df815765da7c3dcbd9 Merge pull request #2475 from lc6464/fix/issue-2448-separate-thought-message
* cbd38dfd284e63c96435e21be18f472a2efcec76 Merge pull request #2481 from cytown/channel
* 18d35c7d5dc87e400b96603f7033ab64d3868e43 Merge pull request #2486 from sky5454/main
* 08283dde6164722b039cdd3a5a86dd948d0b3881 Merge pull request #2489 from afjcjsbx/fix/mcp-reload-discovery-tools
* 7db2e7d579528c200f8249e92bc7b5dcb6b864bd Merge pull request #2495 from liuy/feat/seahorse-clear
* 2e149f44dd9da4a05e3001beef37ddcacf659939 Merge pull request #2497 from wj-xiao/build/split-core-builds
* eb2426965142e22e218fd8c08669415a89fce2fa Merge pull request #2503 from cytown/loop
* aa1d7c55be11bc86abea34666ef093df31c23c7f Merge pull request #2507 from cytown/allow
* 04e99a12642754d8b4fc5a4eb2b5a20f34732c66 Merge pull request #2508 from cytown/channel2
* b52eb58f03a831729c31d42aece45ce1d6e9cde1 Merge pull request #2514 from lc6464/fix/issue-2488-host-binding
* 08fc305d5ed5a7b124fe1c6dae33068d87394004 Merge pull request #2518 from imguoguo/update-wechat-qr
* c0fadc591857bab2026b58c44f798479231c1e47 Merge pull request #2523 from lc6464/feat/web-chat-disabled-reasons-hint
* ead2dc9699afa67964c35501013a8a8d0259f242 Merge pull request #2524 from SiYue-ZO/feature/sogou-web-search-default
* bb14a5c7cc08ec48e26d89b1eb0f53b23b8a88ad Merge pull request #2525 from afjcjsbx/fix/vision-unsupported-media-stuck
* 100e5766097e9a87575003439d933b25528b9997 Merge pull request #2529 from lc6464/feat/web-code-highlight
* b1475122da94ee1bbdc1cf274a4c1421c27654a4 Merge pull request #2547 from lc6464/chore/issue-2538-network-fallback
* 928a27359fae6d614db937587b76151750e00ec1 Merge pull request #2549 from lc6464/gateway-auth-no-browser
* 0da962c4b46f75b392728c01422eab1202c85675 Merge pull request #2564 from sky5454/looper_refactor
* 6126ede963ed03c3c1559b25ff0256f04fe37007 Merge pull request #2566 from lc6464/refactor/providers-tools-layout
* 75e93b51893957bf1703535b49e8f7a78f49288b Merge remote-tracking branch 'upstream/main' into feature/sogou-web-search-default
* 6421f146a99df1bebcd4b1ca8de2a289dfca3622 Revert "Feat/channel tool feedback animation (#2569)" (#2596)
* a2f02e4b186bc4c23c37c498c4750b5bd819c74b Revert "test(agent): remove unused respondWithMediaHook field"
* 7824bc715f2c219403ccd38d77a155af41ad1dc8 add test
* 036f65b179fbf64da8160942c208712e5c565f65 bug fix for allowFrom contains empty string
* 168b6bec5817e4b214e3be2596beb94fe8f07715 build(android): ci build added
* f1fe2db7ac3a6363306da8c0b764cb977d9d29a9 build(deps): bump @tanstack/react-query in /web/frontend (#2458)
* 74856d3747cc76a838bb86332def3341c625c464 build(deps): bump @tanstack/react-query in /web/frontend (#2560)
* d73897da8e73ea08d1279556045b4922302c7551 build(deps): bump @tanstack/react-router in /web/frontend (#2555)
* c71cd1eede7e6281ca7091e723a59b64c31503f9 build(deps): bump github.com/aws/aws-sdk-go-v2/config
* 7788ed467702e69d1ab3a1e9b52845bfa005e078 build(deps): bump github.com/modelcontextprotocol/go-sdk (#2455)
* 01a33bbb618327c4edc8cbd9caabc71a681b213a build(deps): bump github.com/mymmrac/telego from 1.7.0 to 1.8.0
* 9c97442f7cd128b8bfaf4289c201e8430c19b703 build(deps): bump go.mau.fi/util from 0.9.7 to 0.9.8 (#2553)
* c6d15da1eafc0f00045a4295a2c9ebbdfe023689 build(deps): bump golang.org/x/sys from 0.42.0 to 0.43.0 (#2450)
* 484070736d0f980d0198ee23a2e4c279cfa0a5b5 build(deps): bump jotai from 2.19.0 to 2.19.1 in /web/frontend (#2452)
* e77c4eba3e863beab34e0a9043c0a033f453b82c build(deps): bump maunium.net/go/mautrix from 0.26.4 to 0.27.0 (#2557)
* 919e9eb64547741e1aacf9f501496b4f0f2aac7f build(deps): bump modernc.org/sqlite from 1.48.0 to 1.48.2
* 63754401520a2a9c96f1dc0c991a85dc686d7c93 build(deps): bump pnpm/action-setup from 4 to 6 (#2552)
* 19493140eb42da44456d019835aba32580638800 build(deps): bump react from 19.2.4 to 19.2.5 in /web/frontend (#2456)
* c36a48cf4b11abb84c6de7488ca1d77af24d70f7 build(deps): bump react-i18next from 17.0.2 to 17.0.3 in /web/frontend (#2559)
* e58f00b0c1464bbc50c8316f60db68a65368f424 build(deps): bump shadcn from 4.1.2 to 4.2.0 in /web/frontend (#2459)
* 2708c834d0018f1afcb9374bc24ff7fa245aec5e build(deps): patch gomarkdown and upgrade shadcn (#2568)
* 72f30c58e98166d75eb4f5ae78306e3b280ceb58 build(deps-dev): bump @types/node from 25.5.0 to 25.6.0 in /web/frontend (#2562)
* 235cb11bebfaafd311bf0d3ec2c47a3aa361ca47 build(deps-dev): bump globals from 17.4.0 to 17.5.0 in /web/frontend (#2561)
* 0e57a446dc54978ec85cf6b374ab6c2322a8e11c build(deps-dev): bump vite from 8.0.3 to 8.0.8 in /web/frontend (#2451)
* d73a0e89b4780ca0cc7816e069e61beffd7f12aa build(release): move Android bundle publishing into GoReleaser
* ea2107e8a939a07621a8866f0757e504d081cec0 build(release): split core builds from release-only artifacts
* 080f532d825a4585b8030dce1ec14ef803a477c1 build: add Android arm64 cross-compile support
* 681b2a258b727102f8d89e27ed58b051d363072e build: address PR review — fix Android launcher flags, systray tag, rename target
* de3d042d1b7951ab944fd2b389d5cab8f2a05f82 chore(docs): add docs layout lint target and contributor guidance
* acbe65467483e5b40b8e16d25cdc24e03f3c6e31 chore(web): move app providers out of main entry
* 8461c996e5ad2f20801622a8eeec931f8966a066 chore(web): update linting and router dependencies (#2592)
* 6a870cb2601828c95bec790a752947119708028b ci(build): remove unused Node.js and pnpm setup from core build workflow
* f82fe5a2ec2ee4be4e262d44b32236bb032b487c ci: use pnpm/action-setup and sync README install steps (#2512)
* b0d3f19a6afa207ad8fd8bd3e96892259324d11f docs(agent-refactor): document loop.go file split
* 82bfe0d9a0cc98990c159a71f2b10fc857326acb docs(config): remove legacy bindings guide
* 8f7eae8b373b38851232d98f6db1b4bfe9633b1e docs(tool): use provider-agnostic JSON escaping guidance
* f7e768152e076d863ce3bd20019256dc96fad44e feat(agent): /clear now clears seahorse DB in addition to JSONL
* 6ca73112732d680590e097c4d7ef7dc0829511d0 feat(agent): add context usage ring indicator and /context command (#2537)
* e22b4e1eeee102202a23b83a8a643c4136f8c6ea feat(agent): support btw side questions (#2532)
* ab019d3f1814a5fc8228d508c01a3e5df9772811 feat(auth): add no-browser option for OAuth login
* b6617a4b176f5e1c622e40fbe282b102231e3692 feat(cli): structured terminal UI for PicoClaw CLI like modern CLIs (#2229)
* bb2167e3f3ae841f0d941f2daec1256e83bceb99 feat(event): log turn context fields
* a5379d5fff0065d98829746199c7d35f05bb9315 feat(feishu): Add group chat trigger and random emoji response frontend configuration (#2607)
* d4d652b455b3114786047f57ccd54907980bb0d0 feat(host): complete launcher and gateway multi-host binding support
* 4e977367c2e80dbffee59fd25bef8d3cab38a447 feat(launcher): add host overrides for launcher and gateway
* 06023c79fa8ef485dc17e13074b8f8d292bd981b feat(launcher): standard HTTP login/setup/logout flow for dashboard, frontend and backend impl. and fix windows pid lock for ws (#2339)
* 7b38d437ba7fe5197a8e459195ad39fb220891c9 feat(launcher): support multi-host bind and strict host semantics
* c3f40008175174d3f8c7baa47e03a1a2c9bf0f4b feat(network): implement network error classification and fallback handling
* bef17d6453425ab7beee61f3a5ead88b15aa85e6 feat(routing): add ordered dispatch rules
* 3957e2cc72aba69b0a7bcc7811e8bbd32ad9f96c feat(session): persist scope metadata and aliases
* 25ac5634069bbe750492a71593fc9ede4dc4255f feat(web): add syntax highlighting for markdown code blocks
* 7f56ca8cc6e7393c5f11b24bb6998e38e3684906 feat(web): refactor tools page into tabbed library and web search settings (#2539)
* d4313b5e5f55597e6886b70b8c8f16231714ada1 feat(web): show disabled chat reasons in composer
* bf6d4fd997d7dab7d89e3f272951d7ed725587ee feat(web): show disabled reasons in tooltips when buttons are disabled (#2430)
* ba6992234faaef77e55abb5c3ab3cf5fe5193656 feat(web): support list editing for channel array fields (#2595)
* d3d639cb7d67556fec9c5d2fdadb01af21b60feb fix lint
* e60a687387cf96e698f9188475e73f2312f03fa2 fix lint
* f16bade9194a361e9c4304a5de784d6bbdb0107f fix some bugs:
* bd88385923306f6d78ed6ba749606c3c3008160f fix(agent): gate pico interim publish for internal turns
* 7bd11181a6447671390fd6ee9b447676fac25966 fix(agent): preserve reused tool call IDs across turns (#2528)
* 1245f2ddf6a2126de087dded1b81f13a9086a5fd fix(agent): recover after image-input-unsupported failures
* 815e43e3ef77cf06107d24b5e41982ba2305303e fix(agent): reinitialize MCP and discovery tools after reload
* 9c3dc0ee3ac47f3053e812814e75b43aeeb8c120 fix(auth): canonicalize Google Antigravity provider and enhance credential management (#2599)
* ffd30d7db740a5200936e2bc3998b0f5558b8ec3 fix(auth): improve no-browser OAuth login
* b73caebe6f3d798499bce4c69e0ff743b1cd03ca fix(chat): improve thought readability in dark mode
* 5b596ed2f0aea803fd7afdb4b526e2775c02d8b6 fix(chat): keep tool summaries and assistant output together
* 748ac58dd1c076a1dd920d4fc01a722016a03293 fix(chat): keep tool-call summary and assistant output in sync (#2449)
* 86917faa9ba2fc8f7d08b3106080c15a04daaa89 fix(ci): resolve lint header casing and fallback test routing
* 27db03e5ca5565a9180d83bcefe00a77b8f57dba fix(config): migrate legacy bindings and optimize session resolve
* 2b73978c5f64df34619e5471f53dda322860ff19 fix(cron): add agent: prefix to session key so resolveScopeKey preserves it
* d8e7a6129f0f3e43442a7b25e1e50b65bfa54aae fix(cron): add blank line between default and localmodule imports for gci
* 36b9693d3121d8ac37ec3e77e3f486e9c3a52703 fix(cron): make each job execution use an independent session
* 5e44a9941023b93b3a043c729f8bbfec14275e28 fix(docker): run self-built images as root for parity with release (#2435)
* 491418775bf2b7951890b951f53044b3006afc5d fix(gateway): log startup errors before exit (#2414)
* 83e93ca572382ce564f516959f38bb010e568d4d fix(gemini): align thinking-off and system prompt semantics
* 6fbd7e0a3fb04929f21f8d1b3ebd2261057c144f fix(gemini): align thoughtSignature and stream tool IDs
* 459e78c076fb7659ce20193a2b8f42b10f57e830 fix(gemini): harden dedicated provider compatibility
* cbae69ad640f4fdf9e7c1f0f4cfa38c6c0daf497 fix(gemini): honor pro-model thinking constraints
* 448027c02ae571aa9fe6a22e5f7dd5924cbe52ae fix(host): align launcher and gateway host normalization semantics
* e7b36543133385355d0f7e01f35c385c9905308d fix(host): modernize default host selection order
* d9977715a39dad47094e89eeb80e059bdc6c59e7 fix(launcher): align react and react-dom versions (#2467)
* 795ec9af053153176a46c8d0d03d9c4b111a6240 fix(launcher): fall back to token auth on unsupported platforms (#2466)
* 93bf871bd205562f6ea034e1be786ad3da504e43 fix(launcher): refine console host display
* 7aa2d672ced21d3d687ed7245f252c2ef0a37d65 fix(network): classify timeout errors as FailoverTimeout
* 9982ee29a88cbb8790ab74958b91e5127b347511 fix(pico): avoid duplicate final websocket message
* c8bac699fef02e509a367b627dde61aed5a4a666 fix(pico): separate thought and normal messages
* 2aeed8fb3a5be7f00d32bf8c7a8e71e57e2aebd6 fix(pico): stream assistant text between tool calls
* 9b4efddd9b444d177acf7019500aacb6c10e3c4b fix(providers,tools): address linter issues after reorg
* e9f55d776de85117710c3f289d852959d2c1f7c1 fix(review): address copilot backpressure and SSE parse feedback
* bd13092831ca87457cbae7dc53f3d9b4d6b22bbd fix(review): align tool feedback reconstruction with runtime behavior
* 0f2353516582b1562477b09ea6e5bfbacb5e77c1 fix(runtime): address session promotion and steering regressions
* b8819bdbffcd59835544db1682e5b90e7c478533 fix(seahorse): drop/recreate FTS5 triggers so existing DBs get corrected bodies
* 187189ad4adacf6ada228a30b32da349a95a518b fix(seahorse): sanitize user input for FTS5 MATCH queries (#2436)
* c5c5ea22d689567e455d9e3e543f510e30ecab52 fix(session): address review regressions
* 296077eabf7ad4ce3a65aa3aba34ce9b0f6c25d9 fix(session): restore thread and legacy compatibility
* a9720daa45c2bd34542d1440401417fe5c8f4603 fix(test): skip TestPrepareCommand_AppliesUserEnv on unsupported operating systems (#2434)
* 743cd3602bfccfc57254a20b4bd9bd66901addc7 fix(tools): centralize shared LLM note constants
* 89af3b251137698cfc0be6d284a323c21301dd31 fix(tools): message tool no longer suppresses reply to originating chat
* 3e3b6aed909921dbb1b5a6bb96d730f859ff9e43 fix(tools): message tool no longer suppresses reply to originating chat (#2180)
* 64c3542b91f7d5c62668dbc7913badc5e154aee8 fix(updater): retry release fetches (#2511)
* dcb4b67e00f1422fa4a808d92a016f0f2726a228 fix(web):  clean up restored chat transcripts and optimize chat UI (#2605)
* 0bb9bedc44f961e96470aefae80b49c419e9ba2c fix(web): address latest Copilot review points
* 0b84f0ae0ad09170bbc68c012a78451ed814dc89 fix(web): address sogou search review feedback
* 24382271d6fb64e90c131d5c60b7dba44fea6380 fix(web): align wildcard advertise IP preference
* f32b303d2ab7e93b007a4a563ff35d583a991a9d fix(web): avoid resetting web search draft on config refetch (#2536)
* d002e1517ba1670d094a3752a6ff469e7c8cd00e fix(web): improve Pico URL and origin handling behind proxies
* 51ab3b13854ce2770495143998fcc3dceed0b1b8 fix(web): restore chat composer disabled-state messaging and clean up code (#2526)
* a8d0b0351508e81fd91fe443618df147f0cc0531 fix(web): save channel configs with nested channel_list patches (#2530)
* 79f87d151e7a310f9fbf00d27d56ceb05fbdaf4f fix(web): show localhost entry only for local binds
* f8190f04b7db62556a8e0cdb63a0a552b60752ce fix(web): stop pinning Pico WebSocket origins during setup
* 7fdc9c7b6471d79ac00400bc6d0700474ac548e6 fix(web): support proxies in SearXNG and web fetch (#2542)
* 773a94c41437d21c7cb1fcc429cee1ac605dd509 fix(web_search): validate missing API key/URL directly in Search methods (#2517)
* ae195831bbc2abca37378d04a3220c0a113d402a fix: resolve PR2514 lint regressions
* f1b659e5ef1ba972796eed70d57768120e08d0b6 membench: add LLM-as-Judge evaluation mode (#2484)
* 93f69a98ba6c21a255364e976e8dfdba55aaac0c merge: integrate main channel config changes
* 0c6ad33a9ca8ef8ad9d130cd864bd7fc2c120310 merge: integrate main into refactor-inbound-context-routing-session
* 69ff6909e173c4a5e0340c3bf165f9eaa72659fc merge: integrate main seahorse context changes
* 0425cd4d77a34956d86faba19180ee842fb95761 refactor skills registries and add GitHub-backed skill discovery (#2442)
* 329e68e017412718c2fcf9131dfe070feee391ed refactor(agent): Agent Looper refactor phase2, restructure pipeline and rename loop files to agent (#2585)
* 79de00f7f3de9e12b4462de14e4da7acf84356ad refactor(agent): carry inbound context through events and hooks
* 9f23ec22d6820a73643c5c68a21eb0affa4559c9 refactor(agent): normalize dispatch and outbound turn metadata
* 2095ec8700343935b2a296102d4f77fad38eb07a refactor(agent): route using inbound context
* 12d5421c266c789ab9b4577c58039172c03d0f8b refactor(agent): split loop.go into focused sub-packages
* cf11ff70c3cc0ad4b8e3f08a8f362d51b4a446cd refactor(channels): emit inbound context in primary adapters
* 963ed07d69b8aa706c3bf97bf96f781a34b20a27 refactor(channels): emit inbound context in secondary adapters
* 528c57dda0d3bd234a050cec4ca2532a77f8de11 refactor(channels): merge non-web fixes from main
* 667fc85d54b99e9fa5b3aad1c34bcffe8c71a45e refactor(config):  make config.Channel to multiple instance support
* e6e724a827ecfc433593dc5fe3834dcdaaa39c89 refactor(config): reconcile defaults with main
* e0ceea91f60e9c2dfed8d672adf6e2d6915ed12c refactor(context): carry route and scope through runtime
* 4e1ceee62e0dd5470f1db3ad4e57474690d28eec refactor(docs): reorganize docs by type and locale
* 9cfa3c3ba61e25eb8c83d53d226074fc42b45c2d refactor(inbound): add inbound context compatibility bridge
* ee634dc8dbbbf4bc8005cbabbac1b344187eb2a3 refactor(providers): reorganize provider packages and facades
* fcab3a1b7c815d746e9c1edbf2d6d59e32fc89f5 refactor(routing): move session allocation out of router
* 19a01d426453a7bbad1b2e07b24a91959cb3c26f refactor(routing): remove legacy bindings config
* 59dee895fc906827df14f05fb36303a31686d080 refactor(runtime): drop non-session legacy context compatibility
* 718a5e7c75792803a92486799229e5785ae8df0d refactor(runtime): merge bus context and handled tool delivery
* ca9652e120446938f1a7a516a476dd5368aad184 refactor(session): replace dm scope with dimensions policy
* 3d603859586177e09000b9856b2bd39d10db38fe refactor(session): tighten legacy boundary and tool context
* 2b844778fffec99eb35441c8e834f350dc9c1875 refactor(tests): extract common logic for fallback error handling into a helper function
* 4c133dc2d956fb82251eafe8235d8f7ce2ba5b55 refactor(tools): reorganize tool packages and facades
* 5a2e7795cd5d855c97b4f7ab913e5c45f6024bb2 refactor(web): improve theme style element management in useHighlightTheme hook
* 53482a17bc17920e8cb3f2fd029b9aed2de9da7f refactor(web): resolve pico sessions from scope metadata
* 4b76196e2ca7f1d6364bb7e8b27410b271cb4007 refactor(web): secure Pico websocket access behind launcher auth
* 74c98a5acfdd4069e39a29c1dcf1060497e33ea3 refactor(web): secure Pico websocket access behind launcher auth (#2545)
* 71c877a67fa69c3b8c782144e4d0ff4893159929 refactor(web): switch dashboard auth from tokens to passwords (#2608)
* 389f492d8ce6bd8c02c19830ef731191a72ea91d refactor(web): use official highlight themes for markdown
* f5e779e22e6d40c639a5e8e4c463a04ba1ae3d26 refactor: make agent loop support parallel and update docs
* d0ff24aa87488bb14a692fc226b9a5197402449f remove useless backend output for platform-token (#2500)
* 168b75ae214314307d1f49809747a6f05e3390c4 style(lint): fix config and qq formatting
* 58f634b582cb335a8bb8b6682a7c143210a87e04 style(lint): satisfy gci and golines for review fixes
* 087e35588547e0700fbf03b7022f22b6efb737ef test(agent): remove unused respondWithMediaHook field
* 1dc25e7cf52e49de1c8d318b800d9b74a5478a12 test(agent): remove unused respondWithMediaHook field
* bb953b788b0f3930c50eb440621ca216342bfce8 test(api): fix web tools lint issues
* a827d01d7c56f24ca01d31ea6a8debd58906208a test(channels): normalize manager outbound test message
* 3a9d1fc6fd3687b91fb2356c29a3ce5225dc1f3a test(channels): update inbound context assertions
* 4532627f715310a96fb894b8dccde62a0d35c1de test(seahorse): add TestTriggerMigration for old-DB trigger upgrade path


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