github zeroclaw-labs/zeroclaw v0.1.1

latest release: v0.1.2
10 hours ago

What's Changed

  • fix(security): enforce HTTPS for sensitive data transmission by @agorevski in #881
  • fix(security): replace hard-coded crypto test values with runtime-generate secrets by @agorevski in #882
  • fix(security): prevent cleartext logging of sensitive data by @agorevski in #883
  • fix(tools): remove non-string enum from pushover priority for Gemini compat by @kunwl123456 in #846
  • feat(channel): make message timeout configurable by @gundemirbas in #840
  • fix(provider): enable native tool calling for OllamaProvider by @reidliu41 in #825
  • docs(readme): add multilingual announcement board + OAuth warning by @chumyin in #890
  • Add Linq channel for cross-platform iMessage/RCS/SMS by @ghsmc in #836
  • chore: Remove blocking read strings by @jaysonsantos in #838
  • Add missing mattermost/dingtalk/qq checking by @InuDial in #835
  • fix(providers): implement chat_with_tools for OpenAiProvider by @Marlinski in #827
  • feat(cron): add cron update CLI subcommand by @ecschoye in #808
  • fix(channel/signal): route UUID senders as direct recipients by @ibhagwan in #858
  • fix(agent): include workspace files when AIEOS identity is configured by @pappacorleone in #860
  • fix(provider): fallback to responses on chat transport errors by @chumyin in #896
  • chore: add nix files for easy onboarding on the project by @jaysonsantos in #897
  • feat: add zeroclaw config schema for JSON Schema export by @s04 in #849
  • fix(provider): strip tags and merge system messages for MiniMax by @YubinghanBai in #863
  • feat(onboard): add optional --model flag to quick setup by @cbigger in #866
  • fix(agent): inject full datetime into system prompt and allow date command by @YubinghanBai in #864
  • fix(config): preserve explicit custom provider when legacy PROVIDER is set by @chumyin in #908
  • feat(channels): implement WhatsApp Web channel with wa-rs integration by @mmacedoeu in #859
  • Remove more blocking io by @jaysonsantos in #891
  • fix(provider): resolve fallback provider credentials independently by @vernonstinebaker in #911
  • fix(channel): update last_recv on WS Ping/Pong frames in Lark channel by @kunwl123456 in #904
  • feat(channels): add threading support to message channels by @dwillitzer in #905
  • fix(config): log resolved config path and source at startup by @chumyin in #909
  • feat(provider): add dedicated AWS Bedrock Converse API provider by @KevinZhao in #869
  • fix(security): respect quoted shell separators in policy checks by @chumyin in #902
  • fix(provider): correct assistant content type in Codex chat history by @zverozabr in #915
  • fix(tests): make issue #868 model-refresh regression deterministic by @chumyin in #919
  • fix(ci): publish multi-arch Docker images and stabilize release tags by @chumyin in #921
  • docs(readme): add multilingual impersonation warning for openagen fork/domain by @chumyin in #922
  • fix: fail fast on context-window overflow and reset sender history by @chumyin in #924
  • fix(channels): compact history on overflow and bound memory-context injection by @chumyin in #928
  • feat(gateway): add system prompt to webhook and WhatsApp handlers by @valmy in #878
  • feat(memory): add embedding hint routes and upgrade docs (fix #791) by @chumyin in #914
  • feat(provider): add qwen-code OAuth support by @chumyin in #917
  • feat: add runtime reasoning toggle for Ollama by @chumyin in #906
  • fix(provider): keep multi-turn context in responses fallback by @chumyin in #933
  • feat: add multimodal image marker pipeline and Ollama vision support by @chumyin in #929
  • perf(build): gate Matrix channel for faster iteration by @chumyin in #931
  • fix(provider): align qwen oauth alias with qwen base-url mapping by @chumyin in #936
  • legal: add dual MIT+Apache 2.0 license, trademark policy, and CLA by @theonlyhennygod in #941
  • perf(ci): reduce GitHub Actions costs ~60-65% across all workflows by @agorevski in #847
  • chore: ignore macOS AppleDouble files (._*) by @reidliu41 in #889
  • test: add systematic test coverage for 7 bug pattern groups (#852) by @agorevski in #865
  • perf: eliminate unnecessary heap allocations across agent loop, memory and channels by @agorevski in #872
  • fix(onboard): correct channel selector default to 'Done' item by @agorevski in #948
  • fix: gate nusb/hardware discovery to Linux/macOS/Windows only (fixes #880) by @theonlyhennygod in #885
  • fix: restore Composio OAuth execution path after connect by @chumyin in #953
  • fix(memory): prevent auto-save hallucination feedback loop by @chumyin in #958
  • fix(composio): recover connected account selection after OAuth by @chumyin in #963
  • fix(skills): inject skill prompts and tools into agent system prompt by @ecschoye in #879
  • fix(channels): interrupt in-flight Telegram request on newer same-sender message by @chumyin in #964
  • fix: eliminate fragile channel index dispatch and fix OpenAI tool-spec parsing by @chumyin in #956
  • fix(channel): normalize Telegram history role ordering for MiniMax by @chumyin in #960
  • Fix skill prompts/tools injection into system prompt (#877) by @chumyin in #962
  • fix(security): change pairing lockout to per-client accounting by @agorevski in #951
  • fix(cli): add range validation for temperature argument by @agorevski in #979
  • docs(config): add missing config sections to config-reference.md by @agorevski in #980
  • fix(config): add startup validation to catch invalid config values early by @agorevski in #981
  • docs(cli): add detailed help text and examples to complex subcommands by @agorevski in #982
  • docs(env): add missing environment variables to .env.example by @agorevski in #983
  • fix(errors): improve config error messages with section paths and remediation hints by @agorevski in #984
  • fix(memory): add openrouter as recognized embedding provider by @ecschoye in #987
  • docs(readme): add Homebrew install instructions by @vyahhi in #969
  • docs(readme): add Telegram CN/RU channels to media matrix by @chumyin in #971
  • fix: resolve merge conflict in pull request template by @agorevski in #994
  • fix(composio): pick first usable account when multiple exist, add connected_accounts alias by @theonlyhennygod in #1003
  • docs(code): add module-level doc blocks to providers, channels, tools, and security by @agorevski in #1008
  • docs: add architecture, subscription auth, and memory system sections to multilingual READMEs by @agorevski in #1009
  • docs(code): expand doc comments on security, observability, runtime, and peripheral traits by @agorevski in #1010
  • docs(code): add comprehensive doc comments to config schema public fields by @agorevski in #1011
  • docs: enhance getting-started, hardware, and project collection indexes by @agorevski in #1012
  • docs(code): add decision-point comments to agent loop, security policy, and reliable provider by @agorevski in #1013
  • test(gateway): add edge-case idempotency store tests by @agorevski in #1015
  • test(quality): replace bare .unwrap() with .expect() in agent and shell tests by @agorevski in #1016
  • test(peripherals): add unit tests for peripheral module configuration and listing by @agorevski in #1017
  • test(fuzz): add webhook, provider response, and command validation fuzz targets by @agorevski in #1018
  • fix(security): address CodeQL code-scanning alerts by @agorevski in #1020
  • Codex/chore/bootstrap docker by @ttulttul in #991
  • fix(channel): replace hardcoded Discord bot text with generic channel text by @ecschoye in #995
  • fix(channel): remove duplicated tool protocol from system prompt by @ecschoye in #996
  • fix(memory): add minimum-length filter for auto-save messages by @ecschoye in #989
  • fix(channel): save original user text to conversation history by @ecschoye in #988
  • fix(channel): preserve tool context in conversation history by @ecschoye in #992
  • fix(channel): hot-apply config.toml updates in running channel runtime by @chumyin in #968
  • fix(build): unblock low-resource installs and release binaries by @chumyin in #1041
  • fix(skills): support SSH git remotes for skills install by @chumyin in #1035
  • fix(gemini): correct Gemini CLI OAuth cloudcode payload/response handling by @chumyin in #1040
  • fix(channel): avoid false 300s timeout during multi-turn tool loops by @chumyin in #1037
  • fix(composio): request latest tool versions for list and execute by @chumyin in #1039
  • fix(channel): use native tool calling to preserve conversation context by @gh-xj in #787
  • fix(observability): avoid OTel reactor panic in batch exporter by @chumyin in #1054
  • fix(channel): preserve interrupted sender context in cached turn normalization by @chumyin in #1057
  • fix: prevent postgres memory init panic inside tokio runtime by @chumyin in #1055
  • fix(config): prevent cfg signature drift in sync_directory by @chumyin in #1052
  • test(onboard): add regression coverage for quick setup model override by @chumyin in #1058
  • fix(channels): harden WhatsApp Web mode and align docs/onboarding by @chumyin in #1059
  • fix: make open-skills opt-in by default with config support by @chumyin in #1060
  • feat(installer): add guided zeroclaw installer and distro hardening by @willsarg in #887
  • chore(deps): bump sigstore/cosign-installer from 3.8.2 to 4.0.0 by @dependabot[bot] in #1067
  • chore(deps): bump the rust-all group with 3 updates by @dependabot[bot] in #1068
  • chore(deps): bump directories from 5.0.1 to 6.0.0 by @dependabot[bot] in #1069
  • chore(deps): bump criterion from 0.5.1 to 0.8.2 by @dependabot[bot] in #1070
  • chore: Fix pull request template's merge conflict by @jaysonsantos in #892
  • fix(config): change web_search.enabled default to false for explicit opt-in by @agorevski in #986
  • fix(provider): surface API key rotation as ineffective warning by @ecschoye in #1000
  • fix(channel): use per-recipient typing handles in Discord by @ecschoye in #1005
  • fix(agent): implement actual concurrent tool execution by @ecschoye in #1001
  • refactor(lib): restrict internal module visibility to pub(crate) by @agorevski in #985
  • fix(observability): avoid OTEL reactor panic with blocking exporter client by @xiaotianxt in #1032
  • fix(security): deny unapproved tool calls on non-CLI channels by @ecschoye in #998
  • fix(security): enforce cron agent autonomy and rate gates by @fettpl in #626
  • chore(deps): bump probe-rs from 0.30.0 to 0.31.0 by @dependabot[bot] in #1076
  • chore(deps): bump toml from 0.8.23 to 1.0.1+spec-1.1.0 by @dependabot[bot] in #1074
  • chore(deps): bump actions/download-artifact from 4.3.0 to 7.0.0 by @dependabot[bot] in #1073
  • chore(deps): bump rand from 0.9.2 to 0.10.0 by @dependabot[bot] in #1075
  • docs(i18n): add Vietnamese README translation by @pluginmd in #1078
  • feat: add stdout-safe shell completions command by @chumyin in #1082
  • fix(doctor): keep scheduler/channel health fresh in daemon doctor by @chumyin in #1077
  • feat(agent): run independent tool calls concurrently in runtime loop by @chumyin in #1081
  • feat(delegate): agentic delegate mode with safe tool-loop wiring by @chumyin in #1085
  • fix(ci): sync release publishing with GHCR and add runbook by @willsarg in #1087
  • fix(lark): refresh tenant token on Feishu 99991663 responses by @chumyin in #1086
  • feat(provider): add first-class llama.cpp provider flow by @chumyin in #1089
  • fix(ci): restore containerized validation on main by @willsarg in #1096
  • fix(scheduler): harden idle health heartbeat coverage by @chumyin in #1111
  • fix(security): make schedule tool honor cron.enabled and command policy by @chumyin in #1114
  • fix(security): enforce cron tool policy gates by @chumyin in #1117
  • feat(channel): add native Nextcloud Talk integration by @chumyin in #1118
  • feat(service): add OpenRC support for Alpine Linux by @Baz00k in #716
  • fix: hide leaked raw tool JSON in channel replies by @chumyin in #1119
  • feat(skills): add compact prompt injection mode for low-context models by @chumyin in #1115
  • fix(ollama): make cloud routing deterministic in onboarding and config by @chumyin in #1122
  • feat(provider): add Doubao (Volcengine Ark) provider support by @reidliu41 in #903
  • fix(provider): add chat() override to ReliableProvider for native tool calling by @vernonstinebaker in #894
  • fix: tool calling compatibility for DeepSeek/GLM/Kimi by @HHRAYLAM in #899
  • fix(ci): correct first-interaction input keys by @chumyin in #810
  • feat(ci): build with release-fast by @agorevski in #1128
  • fix(ci): use grouped redirect for GITHUB_OUTPUT writes in pub-release by @agorevski in #1129
  • feat(tools): add pdf_read tool for workspace PDF text extraction by @reidliu41 in #893
  • docs(vi): comprehensive Vietnamese localization under docs/vi/ by @pluginmd in #1099
  • Remove pin rust version with a minimum rust version by @Paulo-21 in #935
  • feat(lark): add immediate ack emoji reaction on message receive by @AllenHyang in #1042
  • feat(memory): add zeroclaw memory CLI management commands by @reidliu41 in #1051
  • perf(channel): offload provider initialization from async workers by @xiaotianxt in #1023
  • feat(tool): add line numbers and partial reading to file_read by @reidliu41 in #1038
  • fix(provider): add chat() override for Ollama and ReliableProvider to… by @reidliu41 in #1036
  • docs(i18n): add Vietnamese links to all locale READMEs and docs navigation by @pluginmd in #1091
  • Feat/add podman support by @b4iterdev in #1094
  • feat: reduce release binary size with opt-in heavy features by @chumyin in #1064
  • fix(onboard): require explicit confirmation before overwriting existing config by @chumyin in #1084
  • refactor(auth): make auth profile store async by @jaysonsantos in #930
  • docs: update stale binary size claim from 3.4 MB to ~8.8 MB (#957) by @yashmahe2020 in #967
  • fix(telegram): prevent message overflow from continuation markers and strip function_calls tags by @ecschoye in #1102
  • feat(tool): add glob_search for workspace file pattern search by @reidliu41 in #1123
  • fix(provider): correct Gemini CLI internal payload for OAuth flow by @xiaotianxt in #1031
  • docs(i18n): add Vietnamese translations for docs hub and key references by @pluginmd in #1092
  • fix(ci): restore containerized validation on main by @willsarg in #1097
  • fix(providers): update synthetic provider base URL by @cesdperez in #1101
  • fix(cron): jobtype conversion by @781226451 in #910
  • feat: add vision/multimodal support for Telegram + Bedrock by @hustshawn in #1126
  • feat(ci): block workflows if binary increases beyond 20mb by @agorevski in #1135
  • add french docs by @lamachina in #1079
  • fix: resolve three compilation errors breaking release-fast build by @agorevski in #1138
  • docs(policy): require i18n follow-through for supported locales by @chumyin in #1166
  • fix(gemini): handle thinking model response parts correctly by @mackenzieclark in #1140
  • feat: Telegram vision support + EC2 IMDSv2 credential fallback for Bedrock by @hustshawn in #1161
  • docs(channel): add Linq to documentation and feature matrix by @heaveless in #1163
  • fix(build): remove stale rust-toolchain.toml reference from Dockerfile by @vernonstinebaker in #1164
  • fix(gateway): enable tool execution for WhatsApp, Linq, Nextcloud Talk channels by @valmy in #1165
  • fix(channel): unify configured channel construction for doctor and startup by @xiaotianxt in #1022
  • refactor(cli): reuse shared command enums from lib by @xiaotianxt in #1027
  • fix(tests): increase lucid memory test timeouts to prevent flakiness by @AllenHyang in #1108
  • fix: resolve compilation, test, fmt, and CI errors on main [MERGE FIRST] by @zverozabr in #1139
  • docs(i18n): extract canonical vi tree under docs/i18n and sync locale nav by @chumyin in #1167
  • fix(gemini): fix OAuth provider for cloudcode-pa internal API by @AllenHyang in #1065
  • feat: capture token usage from LLM provider responses by @s04 in #1024
  • feat(provider): add first-class vLLM provider flow by @reidliu41 in #1095
  • fix(telegram): fall back to text link when send-media-by-URL fails by @s04 in #1125
  • fix(agent): parse MiniMax tool call formats for execution by @klampatech in #1131
  • chore: resolve clippy warnings and rustfmt [depends on #1139] by @zverozabr in #1141
  • fix(channel): merge consecutive user turns [depends on #1139] by @zverozabr in #1142
  • feat(channels): add emoji reaction support to Channel trait and Discord by @NorbertBodziony in #949
  • feat(providers): support provider:profile syntax [depends on #1139] by @zverozabr in #1145
  • feat(channel): add voice transcription via Whisper API [depends on #1139] by @zverozabr in #1144
  • feat(providers): Gemini OAuth credential rotation [depends on #1139] by @zverozabr in #1146
  • feat(channel): Telegram enhancements — reply, photo, e2e [depends on #1139, #1144, #1142] by @zverozabr in #1148
  • fix(channel): strip tool_call XML tags from Discord outgoing messages by @ecschoye in #1004
  • Add warning about zeroclaw.net domain by @sammcj in #1171
  • docs(i18n): follow up vi nav alignment and fr readme link fixes by @chumyin in #1174
  • feat(channel): inline text attachments from Discord messages by @xero7689 in #1172
  • refactor(onboard): make model refresh and doctor model checks async-safe by @jaysonsantos in #943
  • feat(tools): file_read binary/PDF support [depends on #1139] by @zverozabr in #1147
  • feat(channel): add Nostr channel with NIP-04 and NIP-17 support by @v0l in #925
  • docs: announce zeroclawlabs.ai launch in all README locales by @chumyin in #1177
  • docs(readme): link official repository in all locale announcements by @chumyin in #1178
  • feat(tools): add file_edit tool for precise in-place text replacement by @reidliu41 in #1045
  • feat(hooks): add plugin hooks system with HookHandler trait and HookRunner dispatcher by @gh-xj in #918
  • fix(security): remove sensitive fields from Debug impls by @agorevski in #1182
  • docs: improve i18n parity, contributor onboarding, and identity clarity by @agorevski in #1183
  • test: add unit tests for audit-07 coverage gaps by @agorevski in #1186
  • fix(tests): update test structs for new usage and hooks fields by @agorevski in #1187
  • feat(telegram): convert Markdown to Telegram HTML for proper formatting by @hustshawn in #1176
  • fix(channel): close orphan user turn on error and timeout by @AllenHyang in #1180
  • fix(config): add missing "date" to AutonomyConfig default allowed_commands by @vernonstinebaker in #1184
  • fix(channels): include date and time in system prompt datetime section by @bowans in #1185
  • Remove PROVIDER environment variable from Dockerfile by @yookoala in #1188
  • fix(agent): skip interactive approval in daemon/cron context by @AllenHyang in #1190
  • feat(provider): add Osaurus as first-class local provider by @vernonstinebaker in #1181
  • feat(security): add allowed_roots for file access by @zverozabr in #1143
  • fix(slack): support wildcard/all-channel listen when channel_id is unset by @chumyin in #1191
  • fix: resolve post-1083 reliability regressions across providers/channels/tools by @chumyin in #1189
  • fix(gateway): switch default port to 42617 across runtime and docs by @willsarg in #1179

New Contributors

Full Changelog: v0.1.0...v0.1.1

Don't miss a new zeroclaw release

NewReleases is sending notifications on new releases.