v0.2.7
AppFlowy-IO/AppFlowyv0.2.7Apr 22, 2026by github-actions[bot]
AI Summary
Adds Sogou web search integration and refactors context routing with new agent features.
Key Highlights
- Configurable Sogou-backed web search
- Tool feedback animation improvements
- Web search auto-switching based on UI language
- Context usage ring indicator and `/context` command
- Seahorse DB clear command
New Features
- Sogou-backed web search
- Context usage ring indicator
- Seahorse DB clear command
- OAuth no-browser option
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).