Changelog
- 93977bf Add configurable Sogou-backed web search
- e556a81 Feat/channel tool feedback animation (#2569)
- 824e800 Fix Sogou user agent formatting for linter
- 9ded793 Fix golines formatting for web search changes
- dcf21ef Fix provider return formatting for golines
- 2784223 Make web search auto-switch with UI language
- e32a209 Merge branch 'main' into refactor-inbound-context-routing-session
- df9124b Merge pull request #2249 from alexhoshina/refactor-inbound-context-routing-session
- 20d3522 Merge pull request #2418 from lahuman/docs/korean-readme
- dde6136 Merge pull request #2420 from lahuman/docs/tool-escape-semantics
- d7d4374 Merge pull request #2453 from sipeed/dependabot/go_modules/github.com/aws/aws-sdk-go-v2/config-1.32.14
- d03d519 Merge pull request #2454 from sipeed/dependabot/go_modules/github.com/mymmrac/telego-1.8.0
- 282ebcd Merge pull request #2457 from sipeed/dependabot/go_modules/modernc.org/sqlite-1.48.2
- ba08d52 Merge pull request #2474 from srcrs/fix-cron-independent-sessions
- 6d03791 Merge pull request #2475 from lc6464/fix/issue-2448-separate-thought-message
- cbd38df Merge pull request #2481 from cytown/channel
- 18d35c7 Merge pull request #2486 from sky5454/main
- 08283dd Merge pull request #2489 from afjcjsbx/fix/mcp-reload-discovery-tools
- 7db2e7d Merge pull request #2495 from liuy/feat/seahorse-clear
- 2e149f4 Merge pull request #2497 from wj-xiao/build/split-core-builds
- eb24269 Merge pull request #2503 from cytown/loop
- aa1d7c5 Merge pull request #2507 from cytown/allow
- 04e99a1 Merge pull request #2508 from cytown/channel2
- b52eb58 Merge pull request #2514 from lc6464/fix/issue-2488-host-binding
- 08fc305 Merge pull request #2518 from imguoguo/update-wechat-qr
- c0fadc5 Merge pull request #2523 from lc6464/feat/web-chat-disabled-reasons-hint
- ead2dc9 Merge pull request #2524 from SiYue-ZO/feature/sogou-web-search-default
- bb14a5c Merge pull request #2525 from afjcjsbx/fix/vision-unsupported-media-stuck
- 100e576 Merge pull request #2529 from lc6464/feat/web-code-highlight
- b147512 Merge pull request #2547 from lc6464/chore/issue-2538-network-fallback
- 928a273 Merge pull request #2549 from lc6464/gateway-auth-no-browser
- 0da962c Merge pull request #2564 from sky5454/looper_refactor
- 6126ede Merge pull request #2566 from lc6464/refactor/providers-tools-layout
- 75e93b5 Merge remote-tracking branch 'upstream/main' into feature/sogou-web-search-default
- 6421f14 Revert "Feat/channel tool feedback animation (#2569)" (#2596)
- a2f02e4 Revert "test(agent): remove unused respondWithMediaHook field"
- 7824bc7 add test
- 036f65b bug fix for allowFrom contains empty string
- 168b6be build(android): ci build added
- f1fe2db build(deps): bump @tanstack/react-query in /web/frontend (#2458)
- 74856d3 build(deps): bump @tanstack/react-query in /web/frontend (#2560)
- d73897d build(deps): bump @tanstack/react-router in /web/frontend (#2555)
- c71cd1e build(deps): bump github.com/aws/aws-sdk-go-v2/config
- 7788ed4 build(deps): bump github.com/modelcontextprotocol/go-sdk (#2455)
- 01a33bb build(deps): bump github.com/mymmrac/telego from 1.7.0 to 1.8.0
- 9c97442 build(deps): bump go.mau.fi/util from 0.9.7 to 0.9.8 (#2553)
- c6d15da build(deps): bump golang.org/x/sys from 0.42.0 to 0.43.0 (#2450)
- 4840707 build(deps): bump jotai from 2.19.0 to 2.19.1 in /web/frontend (#2452)
- e77c4eb build(deps): bump maunium.net/go/mautrix from 0.26.4 to 0.27.0 (#2557)
- 919e9eb build(deps): bump modernc.org/sqlite from 1.48.0 to 1.48.2
- 6375440 build(deps): bump pnpm/action-setup from 4 to 6 (#2552)
- 1949314 build(deps): bump react from 19.2.4 to 19.2.5 in /web/frontend (#2456)
- c36a48c build(deps): bump react-i18next from 17.0.2 to 17.0.3 in /web/frontend (#2559)
- e58f00b build(deps): bump shadcn from 4.1.2 to 4.2.0 in /web/frontend (#2459)
- 2708c83 build(deps): patch gomarkdown and upgrade shadcn (#2568)
- 72f30c5 build(deps-dev): bump @types/node from 25.5.0 to 25.6.0 in /web/frontend (#2562)
- 235cb11 build(deps-dev): bump globals from 17.4.0 to 17.5.0 in /web/frontend (#2561)
- 0e57a44 build(deps-dev): bump vite from 8.0.3 to 8.0.8 in /web/frontend (#2451)
- d73a0e8 build(release): move Android bundle publishing into GoReleaser
- ea2107e build(release): split core builds from release-only artifacts
- 080f532 build: add Android arm64 cross-compile support
- 681b2a2 build: address PR review — fix Android launcher flags, systray tag, rename target
- de3d042 chore(docs): add docs layout lint target and contributor guidance
- acbe654 chore(web): move app providers out of main entry
- 8461c99 chore(web): update linting and router dependencies (#2592)
- 6a870cb ci(build): remove unused Node.js and pnpm setup from core build workflow
- f82fe5a ci: use pnpm/action-setup and sync README install steps (#2512)
- b0d3f19 docs(agent-refactor): document loop.go file split
- 82bfe0d docs(config): remove legacy bindings guide
- 8f7eae8 docs(tool): use provider-agnostic JSON escaping guidance
- f7e7681 feat(agent): /clear now clears seahorse DB in addition to JSONL
- 6ca7311 feat(agent): add context usage ring indicator and /context command (#2537)
- e22b4e1 feat(agent): support btw side questions (#2532)
- ab019d3 feat(auth): add no-browser option for OAuth login
- b6617a4 feat(cli): structured terminal UI for PicoClaw CLI like modern CLIs (#2229)
- bb2167e feat(event): log turn context fields
- a5379d5 feat(feishu): Add group chat trigger and random emoji response frontend configuration (#2607)
- d4d652b feat(host): complete launcher and gateway multi-host binding support
- 4e97736 feat(launcher): add host overrides for launcher and gateway
- 06023c7 feat(launcher): standard HTTP login/setup/logout flow for dashboard, frontend and backend impl. and fix windows pid lock for ws (#2339)
- 7b38d43 feat(launcher): support multi-host bind and strict host semantics
- c3f4000 feat(network): implement network error classification and fallback handling
- bef17d6 feat(routing): add ordered dispatch rules
- 3957e2c feat(session): persist scope metadata and aliases
- 25ac563 feat(web): add syntax highlighting for markdown code blocks
- 7f56ca8 feat(web): refactor tools page into tabbed library and web search settings (#2539)
- d4313b5 feat(web): show disabled chat reasons in composer
- bf6d4fd feat(web): show disabled reasons in tooltips when buttons are disabled (#2430)
- ba69922 feat(web): support list editing for channel array fields (#2595)
- d3d639c fix lint
- e60a687 fix lint
- f16bade fix some bugs:
- bd88385 fix(agent): gate pico interim publish for internal turns
- 7bd1118 fix(agent): preserve reused tool call IDs across turns (#2528)
- 1245f2d fix(agent): recover after image-input-unsupported failures
- 815e43e fix(agent): reinitialize MCP and discovery tools after reload
- 9c3dc0e fix(auth): canonicalize Google Antigravity provider and enhance credential management (#2599)
- ffd30d7 fix(auth): improve no-browser OAuth login
- b73caeb fix(chat): improve thought readability in dark mode
- 5b596ed fix(chat): keep tool summaries and assistant output together
- 748ac58 fix(chat): keep tool-call summary and assistant output in sync (#2449)
- 86917fa fix(ci): resolve lint header casing and fallback test routing
- 27db03e fix(config): migrate legacy bindings and optimize session resolve
- 2b73978 fix(cron): add agent: prefix to session key so resolveScopeKey preserves it
- d8e7a61 fix(cron): add blank line between default and localmodule imports for gci
- 36b9693 fix(cron): make each job execution use an independent session
- 5e44a99 fix(docker): run self-built images as root for parity with release (#2435)
- 4914187 fix(gateway): log startup errors before exit (#2414)
- 83e93ca fix(gemini): align thinking-off and system prompt semantics
- 6fbd7e0 fix(gemini): align thoughtSignature and stream tool IDs
- 459e78c fix(gemini): harden dedicated provider compatibility
- cbae69a fix(gemini): honor pro-model thinking constraints
- 448027c fix(host): align launcher and gateway host normalization semantics
- e7b3654 fix(host): modernize default host selection order
- d997771 fix(launcher): align react and react-dom versions (#2467)
- 795ec9a fix(launcher): fall back to token auth on unsupported platforms (#2466)
- 93bf871 fix(launcher): refine console host display
- 7aa2d67 fix(network): classify timeout errors as FailoverTimeout
- 9982ee2 fix(pico): avoid duplicate final websocket message
- c8bac69 fix(pico): separate thought and normal messages
- 2aeed8f fix(pico): stream assistant text between tool calls
- 9b4efdd fix(providers,tools): address linter issues after reorg
- e9f55d7 fix(review): address copilot backpressure and SSE parse feedback
- bd13092 fix(review): align tool feedback reconstruction with runtime behavior
- 0f23535 fix(runtime): address session promotion and steering regressions
- b8819bd fix(seahorse): drop/recreate FTS5 triggers so existing DBs get corrected bodies
- 187189a fix(seahorse): sanitize user input for FTS5 MATCH queries (#2436)
- c5c5ea2 fix(session): address review regressions
- 296077e fix(session): restore thread and legacy compatibility
- a9720da fix(test): skip TestPrepareCommand_AppliesUserEnv on unsupported operating systems (#2434)
- 743cd36 fix(tools): centralize shared LLM note constants
- 89af3b2 fix(tools): message tool no longer suppresses reply to originating chat
- 3e3b6ae fix(tools): message tool no longer suppresses reply to originating chat (#2180)
- 64c3542 fix(updater): retry release fetches (#2511)
- dcb4b67 fix(web): clean up restored chat transcripts and optimize chat UI (#2605)
- 0bb9bed fix(web): address latest Copilot review points
- 0b84f0a fix(web): address sogou search review feedback
- 2438227 fix(web): align wildcard advertise IP preference
- f32b303 fix(web): avoid resetting web search draft on config refetch (#2536)
- d002e15 fix(web): improve Pico URL and origin handling behind proxies
- 51ab3b1 fix(web): restore chat composer disabled-state messaging and clean up code (#2526)
- a8d0b03 fix(web): save channel configs with nested channel_list patches (#2530)
- 79f87d1 fix(web): show localhost entry only for local binds
- f8190f0 fix(web): stop pinning Pico WebSocket origins during setup
- 7fdc9c7 fix(web): support proxies in SearXNG and web fetch (#2542)
- 773a94c fix(web_search): validate missing API key/URL directly in Search methods (#2517)
- ae19583 fix: resolve PR2514 lint regressions
- f1b659e membench: add LLM-as-Judge evaluation mode (#2484)
- 93f69a9 merge: integrate main channel config changes
- 0c6ad33 merge: integrate main into refactor-inbound-context-routing-session
- 69ff690 merge: integrate main seahorse context changes
- 0425cd4 refactor skills registries and add GitHub-backed skill discovery (#2442)
- 329e68e refactor(agent): Agent Looper refactor phase2, restructure pipeline and rename loop files to agent (#2585)
- 79de00f refactor(agent): carry inbound context through events and hooks
- 9f23ec2 refactor(agent): normalize dispatch and outbound turn metadata
- 2095ec8 refactor(agent): route using inbound context
- 12d5421 refactor(agent): split loop.go into focused sub-packages
- cf11ff7 refactor(channels): emit inbound context in primary adapters
- 963ed07 refactor(channels): emit inbound context in secondary adapters
- 528c57d refactor(channels): merge non-web fixes from main
- 667fc85 refactor(config): make config.Channel to multiple instance support
- e6e724a refactor(config): reconcile defaults with main
- e0ceea9 refactor(context): carry route and scope through runtime
- 4e1ceee refactor(docs): reorganize docs by type and locale
- 9cfa3c3 refactor(inbound): add inbound context compatibility bridge
- ee634dc refactor(providers): reorganize provider packages and facades
- fcab3a1 refactor(routing): move session allocation out of router
- 19a01d4 refactor(routing): remove legacy bindings config
- 59dee89 refactor(runtime): drop non-session legacy context compatibility
- 718a5e7 refactor(runtime): merge bus context and handled tool delivery
- ca9652e refactor(session): replace dm scope with dimensions policy
- 3d60385 refactor(session): tighten legacy boundary and tool context
- 2b84477 refactor(tests): extract common logic for fallback error handling into a helper function
- 4c133dc refactor(tools): reorganize tool packages and facades
- 5a2e779 refactor(web): improve theme style element management in useHighlightTheme hook
- 53482a1 refactor(web): resolve pico sessions from scope metadata
- 4b76196 refactor(web): secure Pico websocket access behind launcher auth
- 74c98a5 refactor(web): secure Pico websocket access behind launcher auth (#2545)
- 71c877a refactor(web): switch dashboard auth from tokens to passwords (#2608)
- 389f492 refactor(web): use official highlight themes for markdown
- f5e779e refactor: make agent loop support parallel and update docs
- d0ff24a remove useless backend output for platform-token (#2500)
- 168b75a style(lint): fix config and qq formatting
- 58f634b style(lint): satisfy gci and golines for review fixes
- 087e355 test(agent): remove unused respondWithMediaHook field
- 1dc25e7 test(agent): remove unused respondWithMediaHook field
- bb953b7 test(api): fix web tools lint issues
- a827d01 test(channels): normalize manager outbound test message
- 3a9d1fc test(channels): update inbound context assertions
- 4532627 test(seahorse): add TestTriggerMigration for old-DB trigger upgrade path
Released by GoReleaser.