Changelog
- a91a4e5 * update wechat qrcode & delete unused mp4 file (#852)
- 1b3da2c 1. update wechat group qrcode
- aea4f25 1. update wechat qrcode. 2. add CONTRIBUTING.md
- 19c6890 Add ARMv7 build target to Makefile
- 14cb16f Add goarm versions for ARM architecture in config
- 25362ec Add new build tag for WhatsApp native support to keep the binary smaller.
- 852d361 Add new provider cerebras
- c1ed163 Added a native WhatsApp channel implementation.
- 16a36ea Adding a new target to the Makefile to build for multiple platforms with WhatsApp native support.
- 5772b92 Better nuance
- 91eff9b Changing the logging to use the logger package to be consistent.
- 287100f Comments resolved
- 42ee9ab Complete the whatsapp native channel implementation based on the new channel interface
- 7de7519 Disable Docker Hub login in release.yml
- 8527605 Disable dockers_v2 section in goreleaser config
- f7d487e Enable Docker Hub login in release workflow
- 8207c1c Feat/update migrate (#910)
- 3390576 Feature/websearch OpenAI (#118)
- d692cc0 Feature: Implement Skill Discovery - With Clawhub Integration and Caching (#332)
- df49f66 Fix
- 97bf4ff Fix Japanese translation
- 80c8b57 Fix Memory Write (#557)
- f6c275f Fix formatting of WhatsAppConfig struct fields
- 7276a2d Fix lint errors
- 994ec72 Fix parsing of SKILL.md file frontmatter - regex
- 7ce5b75 Fix shadowing field runnnig
- 6cd419b Fix the case sensitivity issue when automatically recognizing VolcEngine LLM model names.
- 4cc8b90 Fix: missing Tavily config in loop.go, and the invalid config param in web_search (#660)
- 76f8ab8 Handle dis
- 6992012 Merge PR #333: Add Cerebras provider
- 5d1669e Merge PR #343: Add Google Antigravity provider and harden tool-call compatibility
- de4ef9a Merge PR #365: Add Qwen provider
- 6913edb Merge PR #368: Add Volcengine (doubao) provider
- 2ee2858 Merge branch 'main' into docs/add-vietnamese-readme
- 2038f04 Merge branch 'main' into fix-formatting
- ad8c2d4 Merge branch 'main' into fix-formatting
- 5ff4a0f Merge branch 'main' into fix-formatting
- 0785a05 Merge branch 'main' into golangci-lint
- 24e35a1 Merge branch 'main' into golangci-lint
- 552d6f1 Merge branch 'main' into golangci-lint
- ef89650 Merge branch 'main' into golangci-lint
- 7a2d353 Merge branch 'main' of github.com:mosir/picoclaw into fix/atomic-file-writes
- a161bf9 Merge branch 'main' of https://github.com/sipeed/picoclaw
- 78ba057 Merge branch 'main' of https://github.com/sipeed/picoclaw
- fa68023 Merge branch 'refactor/channel-system' into main
- 0a9d24e Merge branch 'sipeed:main' into feat/base-layer-message-split
- 16a1c96 Merge branch 'sipeed:main' into fix/atomic-file-writes
- 87e674b Merge branch 'sipeed:main' into fix/atomic-file-writes
- b8c0d13 Merge branch 'sipeed:main' into fix/atomic-file-writes
- be4b8fa Merge branch 'sipeed:main' into fix/atomic-file-writes
- cdbc9c4 Merge branch 'sipeed:main' into main
- b1a6b38 Merge branch 'sipeed:main' into reasoning-chnl
- 1e88df3 Merge branch 'upstream/main' into docs/add-vietnamese-readme
- e3c246a Merge origin/main into refactor/provider-protocol-122
- ab805fd Merge pull request #131 from Leeaandrob/feat/multi-agent-routing
- e61786c Merge pull request #213 from jmahotiedu/refactor/provider-protocol-122
- b77a403 Merge pull request #218 from mattn/fix-readme-ja
- 7b9b810 Merge pull request #225 from yinwm/feat/cron-exec-timeout-config
- 4fde017 Merge pull request #227 from mattn/fix-shadowing-running
- b1e3b11 Merge pull request #304 from mymmrac/golangci-lint
- ba47892 Merge pull request #327 from humaid0x/fix-japanese-readme-link
- 87aee78 Merge pull request #337 from quybquang/docs/add-vietnamese-readme
- 8807d82 Merge pull request #362 from blib/feat-bin-size
- 5b525f6 Merge pull request #378 from lunareed720/fix/exec-timeout-process-tree
- eeac7c7 Merge pull request #385 from Leeaandrob/docs/add-portuguese-br-readme
- f7ec89d Merge pull request #411 from harshbansal7/frontmatter_fix
- 1eb6b83 Merge pull request #418 from DanielVenturini/fix/add-missing-accentuation-in-ptbr-readme
- df2c424 Merge pull request #435 from mymmrac/fix-formatting
- 59fd391 Merge pull request #436 from Huaaudio/feat/base-layer-message-split
- 048cd08 Merge pull request #437 from harshbansal7/fix_build
- 1ef33c9 Merge pull request #474 from swordkee/main
- b3e20c7 Merge pull request #491 from PixelTux/ollama
- e599573 Merge pull request #492 from yinwm/feat/refactor-provider-by-protocol
- 36a8a03 Merge pull request #514 from CrisisAlpha/docs/config-example-add-missing-sections
- 5522776 Merge pull request #524 from mattn/perf/strings-builder
- e23795e Merge pull request #537 from Esubaalew/main
- ae74fa3 Merge pull request #541 from edouard-claude/feat/mistral-provider
- 1e3a9eb Merge pull request #546 from harshbansal7/readme_fix
- e883e14 Merge pull request #548 from mymmrac/build-no-fmt
- 273a8a2 Merge pull request #550 from mymmrac/govet-linter
- fd26fa7 Merge pull request #587 from nayihz/feat_webtool_proxy
- 40f9630 Merge pull request #590 from alexhoshina/docs
- bb8b924 Merge pull request #592 from alexhoshina/main
- b6e965e Merge pull request #604 from winterfx/fix/reasoning-content-missing
- 53578da Merge pull request #617 from Zhaoyikaiii/fix/repeated-context-reprocessing
- eb138a3 Merge pull request #642 from Lixeer/main
- c119e0d Merge pull request #655 from adityakalro/main
- d20cb36 Merge pull request #677 from yinwm/refactor/model-to-model-name
- 8529abb Merge pull request #681 from dimensi/bugfix/falsy-context-deadline
- 7cbfa89 Merge pull request #697 from xiaket/doc-remove-chinese-comments
- 69e5b61 Merge pull request #706 from mosir/fix/atomic-file-writes
- 18ba888 Merge pull request #722 from ihao/main
- 9cc0f8e Merge pull request #724 from mqyang56/fix/model-list-default-value-leak
- b10555c Merge pull request #726 from xiaket/devx-make-improvements
- 9c7933d Merge pull request #730 from winterfx/main
- 3584c0c Merge pull request #766 from penzhan8451/main
- f244076 Merge pull request #768 from avaksru/main
- f7fc8bb Merge pull request #770 from xiaket/ci-golangci-cleanup
- 094d659 Merge pull request #779 from wgjtyu/main
- 95b246f Merge pull request #790 from rordd/fix/gemini-prompt-cache-key
- 90e49bc Merge pull request #802 from biisal/reasoning-chnl
- b1c61cd Merge pull request #808 from alexhoshina/config/change-default-dm-scope-to-per-channel-peer
- 70fcbc5 Merge pull request #824 from 0xYiliu/fix/issue-783-fallback-alias-resolution
- 2c8416e Merge pull request #842 from sipeed/revert-767-update-wechat-group
- 5b96923 Merge pull request #877 from sipeed/refactor/channel-system
- 1211218 Merge pull request #881 from mosir/fix/onboard-include-empty-model
- 2f4f450 Merge pull request #882 from sipeed/fix/issue#565
- feee0da Merge pull request #884 from alexhoshina/fix/memory-leak-whatsapp-reasoning
- 684e741 Merge remote-tracking branch 'origin/main' into feat/cron-exec-timeout-config
- f8f1d53 Merge remote-tracking branch 'origin/main' into feat/refactor-provider-by-protocol
- e76e45f Merge remote-tracking branch 'origin/main' into refactor/model-to-model-name
- f86de3c Merge remote-tracking branch 'sipeed/main' into fix/atomic-file-writes
- 40f9028 Merge remote-tracking branch 'upstream/main' into feat/cron-exec-timeout-config
- 8a3be99 Merge remote-tracking branch 'upstream/main' into refactor/provider-protocol-122
- 23c39f4 Merge upstream main into feat/refactor-provider-by-protocol
- 723f4e8 Merge upstream main into feat/refactor-provider-by-protocol
- 04806bf Moving logging from INFO to DEBUG for messages Removing extrnaeous comments about mutex in loop.go
- bb0eadd Optimize ./picoclaw status output to support all config file configurations.
- 8a1fb03 Perf/precompile regex (#687)
- 82a2fae Privated function
- b6927c9 Prompt to modify the max_tool_iterations parameter. (#855)
- 49612ad Rebuilt after the refactoring of the base channel implementation.
- a8644ca Refactor whatsapp native channel based on the new channel interface
- 6fcc80b Reformat WhatsAppConfig struct fields alignment
- 6b427af Remove ignored files from .gitignore
- 071505e Removing the agentMu mutex from the AgentLoop
- e8afd31 Replace \s+ with [^\S\n]+ to preserve newlines (#299)
- 75a86eb Resolve merge conflict in config.example.json
- a527976 Restore dockers_v2 configuration for picoclaw
- 7592ccd Revert "docs: update wechat qrcode (#767)"
- e268ea8 Revert "feat(line): add StartTyping and PlaceholderRecorder integration"
- 81234f7 Sanitize WhatsApp messages and remove extra log messages.
- ebfa72a Update config file reference from config.yaml to config.json
- 3ad937f Update function comment for SanitizeMessageContent
- ef1989f Update pkg/tools/web.go
- 0d6b22f Update pkg/utils/message.go
- 4ccee85 Update pkg/utils/message.go
- dfc3dff Update pkg/utils/message.go
- 67e1dab Update test case for unicode letters preservation
- f38ce0d Update to support extra long code blocks
- bca9243 Use strings.Builder instead of += concatenation in loops
- 9be1cd6 a moved case of nakedret
- 2f24be6 add Volcengine LLM (doubao) support
- c8a553f add proxy support for TavilySearchProvider
- 02b5811 add support for \r as well
- 08599f8 build: add armv6 support to goreleaser (#905)
- cb3191c build: support armv81 arch in Makefile (#776)
- a5c8179 chore(docker): reorganize docker files and add first-run entrypoint (#812)
- 0ede643 chore: apply PR #697 comment translations to refactored channel subpackages
- d429dcd chore: fix go fmt formatting issues after rebase
- dc9fb32 chore: update Claude model references to claude-sonnet-4.6
- 43611e2 ci: add loongarch64, remove s390x and mips64 support in goreleaser
- 974337f ci: add rpm and deb support in goreleaser
- 6a4116b ci: fix go generate not running in subdirectories (#807)
- a5cc4db ci: remove version from rpm and deb file name (#804)
- 21654f1 config: change default dm_scope to per-channel-peer
- d167b47 dead code cleanup (#210)
- e5788e7 docs(channels): add Chinese README for channel system architecture
- 779e4df docs(channels): add English README for channel system architecture
- be55204 docs(config): add missing duckduckgo, exec, and qq sections to example config
- f8bd883 docs(readme): add brazilian accentuation on pt-br README
- 362c49a docs(test): document protocol architecture and migration compatibility
- 95f22bc enable bodyclose
- 06daa30 enable dogsled
- 1fab196 enable goprintffuncname
- c5e8e19 enable misspell
- 09cf8ef enable nakedret
- 4e6589d enable prealloc
- 6830790 enable predeclared
- d8b164b enable wastedassign
- b190e6e enable whitespace
- 676bd6d extra_hosts mapping to have enables container-to-host connectivity
- e10b1e1 feat(channels): add MediaSender optional interface for outbound media
- 60b68b3 feat(channels): add typing/placeholder automation and Pico Protocol channel (Phase 10 + 7)
- 29ed650 feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces
- c2ace25 feat(ci): Remove fmt from build step
- df6958f feat(config): add complete model_list template with all 17 providers
- 1e26312 feat(config): validate duplicate model names
- 82856bc feat(cron): add configurable execution timeout for cron jobs
- 2fb2a73 feat(discord): add mention_only option for @-mention responses (#518)
- d07ac54 feat(fmt): Fix fmt
- a896831 feat(fmt): Fix formatting
- 0675ce7 feat(fmt): Fix formatting
- 9e120f9 feat(fmt): Run formatters
- 2d758d7 feat(goreleaser): add 'stdjson' tag to picoclaw build configuration
- 2d876ea feat(goreleaser): enhance build flags with versioning and commit info
- 56d8037 feat(identity): add unified user identity with canonical platform:id format
- e450e9e feat(line): add StartTyping and PlaceholderRecorder integration
- 02b4d9f feat(linter): Fix govet linter
- 35670d5 feat(linters): Added golangci-lint config & CI job
- d69ef65 feat(linters): Added job names
- df52d4a feat(linters): Fix linter
- b88f4c9 feat(linters): Fix linter
- 272cabc feat(linters): Fix version
- d6f052f feat(linters): Fixed golangci-lint version
- 67d0710 feat(linters): Removed fmt check (present in linters)
- d9b5f64 feat(linters): Temporarily disable most linters
- 4ada406 feat(media): integrate TTL cleanup into FileMediaStore
- 56a060f feat(onebot): enhance OneBot channel (#192)
- 7f24164 feat(providers): add thought_signature support for gemini
- f3c1162 feat(skills): add retry for HTTP requests in skill installer (#261)
- 27e988c feat(tui): Add configurable Launcher and Gateway process management (#909)
- f929268 feat: Add Perplexity search provider integration (#138)
- f96cf3f feat: Add
reasoning_channel_idto communication platform configurations and improve message bus context cancellation handling. - f0e90e6 feat: Add the Qwen provider
- 9f95aad feat: Introduce LLM reasoning fields to LLM responses and enable routing reasoning output to dedicated channels.
- eda6e37 feat: Support modifying the command filtering list of the exec tool (#410)
- 29e07ec feat: add manual callback URL entry for headless OAuth flow
- 6e71495 feat: add model fallback chain with error classification
- a73d8e1 feat: add model_list configuration for zero-code provider addition
- 272536a feat: add multi-agent routing with declarative bindings
- 65422a1 feat: add native Mistral AI provider support
- 5e028a8 feat: add picoclaw-launcher with web UI for configuration and gateway management (#904)
- 59772cd feat: add wecom and wecomApp channel support
- 14ccfb3 feat: add wecom and wecomApp test
- ca48103 feat: add wecom and wecomApp test
- 0f70f78 feat: add wecom and wecomApp test
- 848aaed feat: complete Antigravity provider integration with robust error handling and docs
- 76f2b42 feat: improve web proxy handling and coverage
- c6865fe feat: integrate Tavily search (#340)
- d3fe8c5 feat: use gemini-3-flash-preview as default model name
- b122abd fix
- 5ca239b fix
- 244eb0b fix (security): ExecTool
working_dirsandbox escape (#478) - 123cffa fix 2
- 162f38c fix Code Review: PR #768
- ad747e8 fix(Makefile): update LDFLAGS and GOFLAGS for optimized build size
- 1e96733 fix(agent): avoid consecutive system messages in compression
- 7f425f1 fix(agent): correct misspelling of 'canceled'
- 1d0220f fix(agent): prevent reasoning goroutine accumulation on full bus
- 3a38623 fix(agent): resolve fallback model aliases from model_list
- caf3913 fix(antigravity): normalize tool calls to avoid empty function names
- 84110aa fix(antigravity): preserve thought signature on tool call parts
- 99c3271 fix(antigravity): sanitize invalid tool-call history ordering
- d1655d5 fix(antigravity): update default model from gemini-3-flash-preview to gemini-3-flash
- 6ad85d2 fix(auth): preserve model_list and use gpt-5.2 for Codex API
- 1d4fe46 fix(bus): increase message bus buffer size from 16 to 64
- c241c55 fix(channels): address PR #734 review comments
- 4adafa8 fix(channels): channels session key routing (#489)
- 72e897f fix(channels): fix memory hazards in channel abstraction layer
- 7572e3b fix(config): allow duplicate model_name for load balancing
- 1161aee fix(config): keep empty agents.defaults.model in saved config
- 58b5e21 fix(config): support legacy config without provider field
- 172e6eb fix(exec) fail close on invalid deny pattern (#781)
- acac197 fix(exec): terminate process tree on timeout
- 33915fb fix(gemini): preserve thought_signature in tool calls to prevent 400 errors
- 61eae92 fix(line): log loading refresh errors, skip typing without recorder
- b705e58 fix(media): address review comments on TTL cleanup
- d804f9c fix(media): guard Interval<=0 panic, two-phase ReleaseAll
- 0a7c929 fix(media): separate import groups for gci linter
- 94aa2b1 fix(media): use project logger and harden map cleanup
- a1d694b fix(migrate): add github_copilot to supportedProviders
- fb96645 fix(providers): support lookup-based fallback candidate resolution
- 438f764 fix(providers): support per-model request_timeout in model_list (#733)
- 2fa51d7 fix(security): change gateway default bind to 127.0.0.1 (#393)
- 09b1992 fix(security): ensure custom deny patterns extend defaults instead of replacing them (#479)
- 19c6983 fix(security): workspace sandbox avoid time-of-check/time-of-use (TOCTOU) races (#464)
- fc28c26 fix(whatsapp_native): close TOCTOU race between eventHandler and Stop
- c7d75a1 fix(whatsapp_native): fix goroutine and resource leak in Start/Stop lifecycle
- 9b80fdf fix(whatsapp_native,agent): address PR #884 review feedback
- d1b10a0 fix(whatsapp_native,agent): address second round of review feedback
- 871b2d7 fix(whatsapp_native,agent): fixes for resource leak and log noise
- 01d694b fix: Add comprehensive command injection and system abuse prevention patterns (#401)
- 394d1d1 fix: Templates update (#485)
- 8405d39 fix: add CGO_ENABLED=0 for static build to fix cross-platform GLIBC errors
- 09a0d19 fix: add VLLM default API base and implement MaxTokensField support
- 6852f24 fix: address PR #662 review comments (bus drain, context timeouts, onebot leak)
- f645e9a fix: address PR review feedback across channel system
- 8a53cb9 fix: align Docker Go version with go.mod and optimize logger (#596)
- 01e2354 fix: align map values for proper formatting
- bb0424e fix: also use max_completion_tokens for gpt5 era models (#445)
- a849e02 fix: better session management for
github_copilot_provider - 1f7cbd9 fix: cache system prompt with mtime-based auto-invalidation (#607)
- 0d16525 fix: codex tool call
- 838a690 fix: correct docs misalignment across translations and guides
- a4b6cea fix: distinguish network timeouts from context window errors
- 12f0c4a fix: ensure tool name is correctly assigned in LLM iteration(missing tool call name in debug mode logs) (#454)
- ea90242 fix: exclude prompt_cache_key for Gemini API requests
- 3df7f70 fix: golangci-lint fmt
- b25b3c1 fix: golangci-lint run --fix
- 0066602 fix: golangci-lint run --fix
- b47a39a fix: handle multi-tool-call orphan detection in sanitizeHistoryForProvider
- 8f60673 fix: hide compressed historical messages notification (#799)
- d09c64f fix: implement code review suggestions
- ec86b21 fix: improve migration logic and reduce code duplication
- 2132740 fix: keep Discord typing indicator alive during agent processing (#391)
- 6d487a1 fix: make install should be aware of the textfile busy since it tries to overwrite the file with non-atomic operation (#558)
- 35a035b fix: port main branch changes to channel subpackages after rebase
- d224397 fix: preserve reasoning_content for OpenAI-compatible reasoning models
- 0d761ca fix: prevent DefaultConfig template values from leaking into user model_list entries
- 6c8866d fix: propagate error when no channels are enabled during startup (#897)
- ec6da7a fix: reject empty task in spawn tool (#740)
- 34a8ce5 fix: remove extra fields from ToolCall JSON serialization
- 4cd3f99 fix: remove max_tokens
- 740cdca fix: remove redundant tools definitions from system prompt (#771)
- 5cd1597 fix: remove unnecessary lock mechanism and upgrade Claude 3 to Claude 4
- b9a6624 fix: resolve Groq STT key from model_list when providers.groq is absent (#602)
- 5d304a9 fix: resolve golangci-lint issues in channel system
- ba98069 fix: resolve wastedassign lint warnings in channel subpackages
- f1223ee fix: revert enable endy patterns (#519)
- 3d605a4 fix: run fmt and lint
- 29d4019 fix: set max tokens to 32k, default model to null (#858)
- cec6fd4 fix: should use fmt.Printf instead of fmt.Print(fmt.Sprintf(...)) (#623)
- 1765f6d fix: strip antigravity prefix and improve model list for flash-preview
- c51ceac fix: updated model configuration links at readme (#544)
- 81c8c07 fix:Openrouter in providers and modellist
- 920e30a fix:pr-272 reverted the changes from pr-227 (#361)
- 4a73415 golangci-lint run --fix on master
- 6b429de golangci-lint run --fix on master (#656)
- 6e754a8 merge: resolve conflicts with main
- d887009 merge: resolve conflicts with main
- 447c17a merge: sync upstream/main (PR #213) into feat/multi-agent-routing
- 12007b5 merge: sync upstream/main into feat/multi-agent-routing
- 5e89264 merge: sync upstream/main into feat/multi-agent-routing
- 8a6fb7d merge: sync upstream/main into feat/multi-agent-routing
- 2276bd1 merge: sync upstream/main, wire WebSearch through factory
- 78e5bda minor improvements in Makefile
- 6fe3920 perf: refactoring collecting skills (#688)
- c4cbb5f providers: finalize PR213 review fixes
- ea447c6 refactor(auth): extract supported providers message as constant
- afc7a19 refactor(bus): fix deadlock and concurrency issues in MessageBus
- 931093c refactor(bus,channels): promote peer and messageID from metadata to structured fields
- 6122ab6 refactor(channels): add channel subpackages and update gateway imports
- dfcf15b refactor(channels): add factory registry and export SetRunning on BaseChannel
- 38a26d7 refactor(channels): add per-channel rate limiting and send retry with error classification
- 65a0920 refactor(channels): consolidate HTTP servers into shared server managed by Manager
- a7276e2 refactor(channels): move SplitMessage from pkg/utils to pkg/channels
- e007454 refactor(channels): remove channel-side voice transcription (Phase 12)
- 59a889b refactor(channels): remove old channel files from parent package
- cd22272 refactor(channels): remove redundant setRunning method from BaseChannel
- d978483 refactor(channels): replace bool with atomic.Bool for running state in BaseChannel
- 083e29e refactor(channels): replace direct constructors with factory registry in manager
- d72c9c1 refactor(channels): standardize Send error classification with sentinel types
- f8b656e refactor(channels): standardize group chat trigger filtering (Phase 8)
- c669784 refactor(channels): unify Start/Stop lifecycle and fix goroutine/context leaks
- a91de85 refactor(channels): unify message splitting and add per-channel worker queues
- 73f2780 refactor(cli): migrate to Cobra-based command structure (#429)
- 712f5a8 refactor(config): rename model field to model_name
- c08deb9 refactor(config): use provider-specific protocol instead of generic openai protocol
- 26bee0b refactor(loop): disable media cleanup to prevent premature file deletion
- 038fdf5 refactor(media): add MediaStore for unified media file lifecycle management
- 11996f1 refactor(pkg): move atomic file write to dedicated fileutil package
- c56fced refactor(pkg/utils): add unified atomic file write utility
- 4aed359 refactor(pkg/utils): improve WriteFileAtomic with stronger durability guarantees
- a6e885b refactor(providers): extract protocol factory and openai-compat transport
- 762565b refactor(providers): move anthropic logic to protocol package
- 68cdafc refactor(providers): restructure provider creation with protocol-based configuration
- 881999a refactor(shell): interpret zero timeout as unlimited execution
- 100356e refactor: cleanup dead code and turn on dead code detection in CI (#515)
- 94a1b86 refactor: extract message splitting logic to shared utils
- e03124d refactor: improve SplitMessage API clarity
- ef7078a refactor: reorganize commands and provider architecture
- 32c5c4b refactor: replace bool map with set-style map for internal channels (#472)
- e1583f3 refactor: simplify legacy_provider.go from 349 to 49 lines
- 8928f83 remove old roadmap (#632)
- 98afd39 remove unicode
- edc7819 style: fix gci formatting in protocoltypes/types.go
- 433af43 style: fix gci import grouping in config, cron, and skills installer
- 0f5b2f6 style: fix gofmt formatting in cooldown files
- e2d37f0 style: run gofmt to fix code formatting
- cb0c870 test(tools,utils): add ToolRegistry unit tests and fix Truncate panic on negative maxLen (#517)
- 6fb6153 translate Chinese comments
- e35a827 update documents
- a46fe14 update dynamic buffer
- 7d8894d update message test, change dynamic buffer
Released by GoReleaser.