github sipeed/picoclaw v0.2.0

2 hours ago

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_id to 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_dir sandbox 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.

Don't miss a new picoclaw release

NewReleases is sending notifications on new releases.