2025-11-25 12:00:48 +01:00
# Changelog
2026-01-12 10:23:45 +00:00
## 2026.1.12
2026-01-12 11:06:37 +00:00
### Changes
2026-01-12 10:23:45 +00:00
- Cron: add optional `agentId` binding (CLI `--agent` / `--clear-agent` ), route cron runs + summaries to the chosen agent, and document/test the fallback to the default agent. (#770 )
2026-01-12 09:46:34 +00:00
2026-01-12 01:16:39 +00:00
## 2026.1.11
2026-01-11 10:15:37 +00:00
2026-01-12 05:28:17 +00:00
### Highlights
- Plugins are now first-class: loader + CLI management, plus the new Voice Call plugin.
- Config: modular `$include` support for split config files. (#731 ) — thanks @pasogott .
- Agents/Pi: reserve compaction headroom so pre-compaction memory writes can run before auto-compaction.
- Agents: automatic pre-compaction memory flush turn to store durable memories before compaction.
2026-01-11 10:15:37 +00:00
### Changes
2026-01-12 09:14:44 +00:00
- Deps: update pi-agent-core/pi-ai/pi-coding-agent/pi-tui and refresh the pi-ai patch.
- Dev: bump @types/node .
2026-01-12 07:40:59 +00:00
- macOS: add wizard debug CLI and share wizard parsing helpers.
2026-01-12 05:49:02 +00:00
- CLI/Onboarding: simplify MiniMax auth choice to a single M2.1 option.
- CLI: configure section selection now loops until Continue.
2026-01-12 05:57:49 +00:00
- Docs: explain MiniMax vs MiniMax Lightning (speed vs cost) and restore LM Studio example.
- Docs: add Cerebras GLM 4.6/4.7 config example (OpenAI-compatible endpoint).
2026-01-12 05:08:11 +00:00
- Onboarding/CLI: group model/auth choice by provider and label Z.AI as GLM 4.7.
2026-01-12 06:47:52 +00:00
- Onboarding/Docs: add Moonshot AI (Kimi K2) auth choice + config example.
- CLI/Onboarding: prompt to reuse detected API keys for Moonshot/MiniMax/Z.AI/Gemini/Anthropic/OpenCode.
2026-01-12 07:43:20 +00:00
- CLI/Onboarding: move MiniMax to the top of the provider list.
- CLI/Onboarding: add MiniMax M2.1 Lightning auth choice.
- CLI/Onboarding: show key previews when reusing detected API keys.
2026-01-12 06:02:39 +00:00
- Auto-reply: add compact `/model` picker (models + available providers) and show provider endpoints in `/model status` .
2026-01-12 07:09:46 +00:00
- Control UI: add Config tab model presets (MiniMax M2.1, GLM 4.7, Kimi) for one-click setup.
2026-01-12 01:16:39 +00:00
- Plugins: add extension loader (tools/RPC/CLI/services), discovery paths, and config schema + Control UI labels (uiHints).
- Plugins: add `clawdbot plugins install` (path/tgz/npm), plus `list|info|enable|disable|doctor` UX.
2026-01-11 23:23:23 +00:00
- Plugins: voice-call plugin now real (Twilio/log), adds start/status RPC/CLI/tool + tests.
2026-01-11 12:11:12 +00:00
- Docs: add plugins doc + cross-links from tools/skills/gateway config.
2026-01-12 07:39:44 +00:00
- Docs: clarify memory flush behavior + writable workspace requirement in Memory/Session/FAQ.
2026-01-12 01:27:11 +00:00
- Docs: add beginner-friendly plugin quick start + expand Voice Call plugin docs.
2026-01-12 01:16:39 +00:00
- Tests: add Docker plugin loader + tgz-install smoke test.
2026-01-12 01:27:11 +00:00
- Tests: extend Docker plugin E2E to cover installing from local folders (`plugins.load.paths` ) and `file:` npm specs.
2026-01-12 07:39:44 +00:00
- Tests: add coverage for pre-compaction memory flush settings (including read-only/CLI skips).
2026-01-12 06:59:17 +00:00
- Tests: modernize live model smoke selection for current releases and enforce tools/images/thinking-high coverage. (#769 ) — thanks @steipete .
2026-01-12 03:42:49 +00:00
- Agents/Tools: add `apply_patch` tool for multi-file edits (experimental; gated by tools.exec.applyPatch; OpenAI-only).
2026-01-12 02:49:55 +00:00
- Agents/Tools: rename the bash tool to exec (config alias maintained). (#748 ) — thanks @myfunc .
2026-01-12 05:28:17 +00:00
- Agents: add pre-compaction memory flush config (`agents.defaults.compaction.*` ) with a soft threshold + system prompt.
2026-01-12 00:12:03 +00:00
- Config: add `$include` directive for modular config files. (#731 ) — thanks @pasogott .
2026-01-11 11:26:39 +00:00
- Build: set pnpm minimum release age to 2880 minutes (2 days). (#718 ) — thanks @dan -dr.
2026-01-11 10:31:15 +00:00
- macOS: prompt to install the global `clawdbot` CLI when missing in local mode; install via `clawd.bot/install-cli.sh` (no onboarding) and use external launchd/CLI instead of the embedded gateway runtime.
2026-01-11 10:39:40 +00:00
- Docs: add gog calendar event color IDs from `gog calendar colors` . (#715 ) — thanks @mjrussell .
2026-01-12 05:28:17 +00:00
- Cron/CLI: add `--model` flag to cron add/edit commands. (#711 ) — thanks @mjrussell .
2026-01-11 10:52:40 +00:00
- Cron/CLI: trim model overrides on cron edits and document main-session guidance. (#711 ) — thanks @mjrussell .
2026-01-11 11:32:30 +00:00
- Skills: bundle `skill-creator` to guide creating and packaging skills.
2026-01-12 05:28:17 +00:00
- Providers: add per-DM history limit overrides (`dmHistoryLimit` ) with provider-level config. (#728 ) — thanks @pkrmf .
- Discord: expose channel/category management actions in the message tool. (#730 ) — thanks @NicholasSpisak .
2026-01-11 23:37:44 +00:00
- Docs: rename README “macOS app” section to “Apps”. (#733 ) — thanks @AbhisekBasu1 .
2026-01-12 04:38:52 +00:00
- Gateway: require `client.id` in WebSocket connect params; use `client.instanceId` for presence de-dupe; update docs/tests.
- macOS: remove the attach-only gateway setting; local mode now always manages launchd while still attaching to an existing gateway if present.
2026-01-11 10:15:37 +00:00
2026-01-11 23:54:26 +00:00
### Installer
- Postinstall: replace `git apply` with builtin JS patcher (works npm/pnpm/bun; no git dependency) plus regression tests.
2026-01-12 05:28:17 +00:00
- Postinstall: skip pnpm patch fallback when the new patcher is active.
2026-01-11 23:54:26 +00:00
- Installer tests: add root+non-root docker smokes, CI workflow to fetch clawd.bot scripts and run install sh/cli with onboarding skipped.
- Installer UX: support `CLAWDBOT_NO_ONBOARD=1` for non-interactive installs; fix npm prefix on Linux and auto-install git.
2026-01-12 02:00:09 +00:00
- Installer UX: add `install.sh --help` with flags/env and git install hint.
2026-01-12 00:59:08 +00:00
- Installer UX: add `--install-method git|npm` and auto-detect source checkouts (prompt to update git checkout vs migrate to npm).
2026-01-11 23:54:26 +00:00
2026-01-11 10:48:46 +00:00
### Fixes
2026-01-12 08:13:49 +00:00
- Control UI: flatten nav into a single horizontal scroll row on tablet/mobile (and always show collapsed group items). (#771 ) — thanks @carlulsoe .
2026-01-12 07:40:59 +00:00
- macOS: start + await local gateway before onboarding wizard begins.
2026-01-12 08:24:09 +00:00
- macOS: cancel onboarding wizard on close, recover if the gateway drops the session, and time out stalled gateway connects.
2026-01-12 08:33:21 +00:00
- macOS: wizard debug CLI now surfaces error status instead of exiting as complete.
2026-01-12 05:09:59 +00:00
- Models/Onboarding: configure MiniMax (minimax.io) via Anthropic-compatible `/anthropic` endpoint by default (keep `minimax-api` as a legacy alias).
2026-01-12 07:37:14 +00:00
- Agents/Browser: cap Playwright AI snapshots for tool calls (maxChars); CLI snapshots remain full. (#763 ) — thanks @thesash .
2026-01-12 07:02:49 +00:00
- Models: normalize Gemini 3 Pro/Flash IDs to preview names for live model lookups. (#769 ) — thanks @steipete .
- CLI: fix guardCancel typing for configure prompts. (#769 ) — thanks @steipete .
2026-01-12 08:21:50 +00:00
- Providers: default groupPolicy to allowlist across providers and warn in doctor when groups are open.
2026-01-12 08:31:59 +00:00
- MS Teams: add groupPolicy/groupAllowFrom gating for group chats and warn when groups are open.
2026-01-12 08:59:13 +00:00
- Providers: strip tool call/result ids from Gemini CLI payloads to avoid API 400s. (#756 )
2026-01-12 05:28:17 +00:00
- Gateway/WebChat: include handshake validation details in the WebSocket close reason for easier debugging; preserve close codes.
2026-01-12 00:15:14 +00:00
- Gateway/Auth: send invalid connect responses before closing the handshake; stabilize invalid-connect auth test.
2026-01-12 05:28:17 +00:00
- Gateway: tighten gateway listener detection.
- Control UI: hide onboarding chat when configured and guard the mobile chat sidebar overlay.
- Auth: read Codex keychain credentials and make the lookup platform-aware.
- macOS/Release: avoid bundling dist artifacts in relay builds and generate appcasts from zip-only sources.
2026-01-11 12:11:12 +00:00
- Doctor: surface plugin diagnostics in the report.
2026-01-12 05:28:17 +00:00
- Plugins: treat `plugins.load.paths` directory entries as package roots when they contain `package.json` + `clawdbot.extensions` ; load plugin packages from config dirs; extract archives without system tar.
- Config: expand `~` in `CLAWDBOT_CONFIG_PATH` and common path-like config fields (including `plugins.load.paths` ); guard invalid `$include` paths. (#731 ) — thanks @pasogott .
2026-01-12 05:17:54 +00:00
- Agents: stop pre-creating session transcripts so first user messages persist in JSONL history.
2026-01-12 06:33:14 +00:00
- Agents: skip pre-compaction memory flush when the session workspace is read-only.
2026-01-12 07:31:20 +00:00
- Auto-reply: allow inline `/status` for allowlisted senders (stripped before the model); unauthorized senders see it as plain text.
- Auto-reply: include config-only allowlisted models in `/model` even when the catalog is partial.
2026-01-12 07:57:11 +00:00
- Auto-reply: allow fuzzy `/model` matches (e.g. `/model kimi` or `/model moonshot/kimi` ) when unambiguous.
2026-01-12 07:39:44 +00:00
- Auto-reply: ignore inline `/status` directives unless the message is directive-only.
2026-01-12 07:43:20 +00:00
- CLI/Configure: enter the selected section immediately, then return to the section picker.
2026-01-12 08:04:26 +00:00
- CLI/Configure: apply the chosen auth model as default (skip the extra picker) and refresh the model catalog for new providers.
2026-01-12 02:51:17 +00:00
- Auto-reply: align `/think` default display with model reasoning defaults. (#751 ) — thanks @gabriel -trigo.
2026-01-12 02:54:57 +00:00
- Auto-reply: flush block reply buffers on tool boundaries. (#750 ) — thanks @sebslight .
2026-01-12 06:28:53 +00:00
- Auto-reply: allow sender fallback for command authorization when `SenderId` is empty (WhatsApp self-chat). (#755 ) — thanks @juanpablodlc .
2026-01-12 05:28:17 +00:00
- Heartbeat: refresh prompt text for updated defaults.
- Agents/Tools: use PowerShell on Windows to capture system utility output. (#748 ) — thanks @myfunc .
2026-01-12 08:48:25 +00:00
- Agents/Tools: normalize Claude Code-style read/write/edit params (file_path/old_string/new_string) and keep sandbox guards in place. (#768 ) — thanks @hsrvc .
2026-01-12 00:38:05 +00:00
- Docker: tolerate unset optional env vars in docker-setup.sh under strict mode. (#725 ) — thanks @petradonka .
2026-01-11 10:48:46 +00:00
- CLI/Update: preserve base environment when passing overrides to update subprocesses. (#713 ) — thanks @danielz1z .
2026-01-11 11:04:29 +00:00
- Agents: treat message tool errors as failures so fallback replies still send; require `to` + `message` for `action=send` . (#717 ) — thanks @theglove44 .
2026-01-12 05:28:17 +00:00
- Agents: preserve reasoning items on tool-only turns.
2026-01-12 08:45:23 +00:00
- Agents: enforce `<final>` gating for reasoning-tag providers to prevent tag/reasoning leaks. (#754 ) — thanks @mcinteerj .
2026-01-12 05:28:17 +00:00
- Agents/Subagents: wait for completion before announcing, align wait timeout with run timeout, and make announce prompts more emphatic.
2026-01-11 11:19:38 +00:00
- Agents: route subagent transcripts to the target agent sessions directory and add regression coverage. (#708 ) — thanks @xMikeMickelson .
- Agents/Tools: preserve action enums when flattening tool schemas. (#708 ) — thanks @xMikeMickelson .
2026-01-12 01:05:43 +00:00
- Gateway/Agents: canonicalize main session aliases for store writes and add regression coverage. (#709 ) — thanks @xMikeMickelson .
2026-01-12 00:28:02 +00:00
- Agents: reset sessions and retry when auto-compaction overflows instead of crashing the gateway.
2026-01-12 05:28:17 +00:00
- Providers/Telegram: normalize command mentions for consistent parsing. (#729 ) — thanks @obviyus .
- Providers: skip DM history limit handling for non-DM sessions. (#728 ) — thanks @pkrmf .
2026-01-12 01:23:37 +00:00
- Sandbox: fix non-main mode incorrectly sandboxing the main DM session and align `/status` runtime reporting with effective sandbox state.
2026-01-12 02:22:56 +00:00
- Sandbox/Gateway: treat `agent:<id>:main` as a main-session alias when `session.mainKey` is customized (backwards compatible).
2026-01-12 06:10:17 +00:00
- Auto-reply: fast-path allowlisted slash commands (inline `/help` /`/commands` /`/status` /`/whoami` stripped before model).
2026-01-11 10:48:46 +00:00
2026-01-11 04:41:38 +01:00
## 2026.1.10
2026-01-11 03:57:44 +01:00
2026-01-11 04:17:37 +01:00
### Highlights
2026-01-11 04:41:38 +01:00
- CLI: `clawdbot status` now table-based + shows OS/update/gateway/daemon/agents/sessions; `status --all` adds a full read-only debug report (tables, log tails, Tailscale summary, and scan progress via OSC-9 + spinner).
2026-01-11 01:40:09 +00:00
- CLI Backends: add Codex CLI fallback with resume support (text output) and JSONL parsing for new runs, plus a live CLI resume probe.
2026-01-11 04:41:38 +01:00
- CLI: add `clawdbot update` (safe-ish git checkout update) + `--update` shorthand. (#673 ) — thanks @fm1randa .
2026-01-11 11:45:25 +00:00
- Gateway: add OpenAI-compatible `/v1/chat/completions` HTTP endpoint (auth, SSE streaming, per-agent routing). (#680 ).
2026-01-11 04:17:37 +01:00
### Changes
2026-01-11 04:41:38 +01:00
- Onboarding/Models: add first-class Z.AI (GLM) auth choice (`zai-api-key` ) + `--zai-api-key` flag.
2026-01-11 03:42:27 +01:00
- CLI/Onboarding: add OpenRouter API key auth option in configure/onboard. (#703 ) — thanks @mteam88 .
2026-01-11 04:41:38 +01:00
- Agents: add human-delay pacing between block replies (modes: off/natural/custom, per-agent configurable). (#446 ) — thanks @tony -freedomology.
2026-01-11 04:17:37 +01:00
- Agents/Browser: add `browser.target` (sandbox/host/custom) with sandbox host-control gating via `agents.defaults.sandbox.browser.allowHostControl` , allowlists for custom control URLs/hosts/ports, and expand browser tool docs (remote control, profiles, internals).
2026-01-11 04:41:38 +01:00
- Onboarding/Models: add catalog-backed default model picker to onboarding + configure. (#611 ) — thanks @jonasjancarik .
- Agents/OpenCode Zen: update fallback models + defaults, keep legacy alias mappings. (#669 ) — thanks @magimetal .
2026-01-11 10:23:52 +00:00
- CLI: add `clawdbot reset` and `clawdbot uninstall` flows (interactive + non-interactive) plus docker cleanup smoke test.
2026-01-11 11:45:25 +00:00
- Providers: move provider wiring to a plugin architecture. (#661 ).
- Providers: unify group history context wrappers across providers with per-provider/per-account `historyLimit` overrides (fallback to `messages.groupChat.historyLimit` ). Set `0` to disable. (#672 ).
2026-01-11 04:41:38 +01:00
- Gateway/Heartbeat: optionally deliver heartbeat `Reasoning:` output (`agents.defaults.heartbeat.includeReasoning` ). (#690 )
- Docker: allow optional home volume + extra bind mounts in `docker-setup.sh` . (#679 ) — thanks @gabriel -trigo.
2026-01-11 01:40:09 +00:00
2026-01-11 02:42:14 +01:00
### Fixes
2026-01-11 10:46:20 +00:00
- Auto-reply: suppress draft/typing streaming for `NO_REPLY` (silent system ops) so it doesn’ t leak partial output.
2026-01-11 04:41:38 +01:00
- CLI/Status: expand tables to full terminal width; clarify provider setup vs runtime warnings; richer per-provider detail; token previews in `status` while keeping `status --all` redacted; add troubleshooting link footer; keep log tails pasteable; show gateway auth used when reachable; surface provider runtime errors (Signal/iMessage/Slack); harden `tailscale status --json` parsing; make `status --all` scan progress determinate; and replace the footer with a 3-line “Next steps” recommendation (share/debug/probe).
- CLI/Gateway: clarify that `clawdbot gateway status` reports RPC health (connect + RPC) and shows RPC failures separately from connect failures.
- CLI/Update: gate progress spinner on stdout TTY and align clean-check step label. (#701 ) — thanks @bjesuiter .
2026-01-11 04:17:37 +01:00
- Telegram: add `/whoami` + `/id` commands to reveal sender id for allowlists; allow `@username` and prefixed ids in `allowFrom` prompts (with stability warning).
2026-01-11 23:26:51 +00:00
- Heartbeat: strip markup-wrapped `HEARTBEAT_OK` so acks don’ t leak to external providers (e.g., Telegram).
2026-01-11 04:17:37 +01:00
- Control UI: stop auto-writing `telegram.groups["*"]` and warn/confirm before enabling wildcard groups.
- WhatsApp: send ack reactions only for handled messages and ignore legacy `messages.ackReaction` (doctor copies to `whatsapp.ackReaction` ). (#629 ) — thanks @pasogott .
2026-01-11 04:24:11 +01:00
- Sandbox/Skills: mirror skills into sandbox workspaces for read-only mounts so SKILL.md stays accessible.
2026-01-11 02:42:14 +01:00
- Terminal/Table: ANSI-safe wrapping to prevent table clipping/color loss; add regression coverage.
2026-01-11 03:27:48 +01:00
- Docker: allow optional apt packages during image build and document the build arg. (#697 ) — thanks @gabriel -trigo.
2026-01-11 04:17:37 +01:00
- Gateway/Heartbeat: deliver reasoning even when the main heartbeat reply is `HEARTBEAT_OK` . (#694 ) — thanks @antons .
2026-01-11 23:55:14 +00:00
- Agents/Pi: inject config `temperature` /`maxTokens` into streaming without replacing the session streamFn; cover with live maxTokens probe. (#732 ) — thanks @peschee .
2026-01-11 03:19:24 +01:00
- macOS: clear unsigned launchd overrides on signed restarts and warn via doctor when attach-only/disable markers are set. (#695 ) — thanks @jeffersonwarrior .
2026-01-11 01:40:09 +00:00
- Agents: enforce single-writer session locks and drop orphan tool results to prevent tool-call ID failures (MiniMax/Anthropic-compatible APIs).
2026-01-11 04:41:38 +01:00
- Docs: make `clawdbot status` the first diagnostic step, clarify `status --deep` behavior, and document `/whoami` + `/id` .
2026-01-11 01:40:09 +00:00
- Docs/Testing: clarify live tool+image probes and how to list your testable `provider/model` ids.
2026-01-11 04:46:30 +00:00
- Tests/Live: make gateway bash+read probes resilient to provider formatting while still validating real tool calls.
2026-01-11 04:08:33 +01:00
- WhatsApp: detect @lid mentions in groups using authDir reverse mapping + resolve self JID E.164 for mention gating. (#692 ) — thanks @peschee .
- Gateway/Auth: default to token auth on loopback during onboarding, add doctor token generation flow, and tighten audio transcription config to Whisper-only.
2026-01-11 00:12:17 +01:00
- Providers: dedupe inbound messages across providers to avoid duplicate LLM runs on redeliveries/reconnects. (#689 ) — thanks @adam91holt .
2026-01-10 23:23:23 +01:00
- Agents: strip `<thought>` /`<antthinking>` tags from hidden reasoning output and cover tag variants in tests. (#688 ) — thanks @theglove44 .
2026-01-10 23:39:39 +01:00
- macOS: save model picker selections as normalized provider/model IDs and keep manual entries aligned. (#683 ) — thanks @benithors .
2026-01-10 23:12:27 +01:00
- Agents: recognize "usage limit" errors as rate limits for failover. (#687 ) — thanks @evalexpr .
2026-01-10 22:52:09 +01:00
- CLI: avoid success message when daemon restart is skipped. (#685 ) — thanks @carlulsoe .
2026-01-11 00:42:04 +01:00
- Commands: disable `/config` + `/debug` by default; gate via `commands.config` /`commands.debug` and hide from native registration/help output.
2026-01-11 05:04:14 +01:00
- Agents/System: clarify that sub-agents remain sandboxed and cannot use elevated host access.
2026-01-10 21:55:54 +00:00
- Gateway: disable the OpenAI-compatible `/v1/chat/completions` endpoint by default; enable via `gateway.http.endpoints.chatCompletions.enabled=true` .
2026-01-10 22:25:05 +01:00
- macOS: stabilize bridge tunnels, guard invoke senders on disconnect, and drain stdout/stderr to avoid deadlocks. (#676 ) — thanks @ngutman .
2026-01-10 21:37:04 +01:00
- Agents/System: clarify sandboxed runtime in system prompt and surface elevated availability when sandboxed.
2026-01-10 17:32:19 +01:00
- Auto-reply: prefer `RawBody` for command/directive parsing (WhatsApp + Discord) and prevent fallback runs from clobbering concurrent session updates. (#643 ) — thanks @mcinteerj .
2026-01-10 18:06:53 +13:00
- WhatsApp: fix group reactions by preserving message IDs and sender JIDs in history; normalize participant phone numbers to JIDs in outbound reactions. (#640 ) — thanks @mcinteerj .
2026-01-10 21:08:49 +01:00
- WhatsApp: expose group participant IDs to the model so reactions can target the right sender.
2026-01-10 18:05:23 +01:00
- Cron: `wakeMode: "now"` waits for heartbeat completion (and retries when the main lane is busy). (#666 ) — thanks @roshanasingh4 .
2026-01-11 04:41:38 +01:00
- Agents/OpenAI: fix Responses tool-only → follow-up turn handling (avoid standalone `reasoning` items that trigger 400 “required following item”) and replay reasoning items in Responses/Codex Responses history for tool-call-only turns.
2026-01-10 20:28:34 +01:00
- Sandbox: add `clawdbot sandbox explain` (effective policy inspector + fix-it keys); improve “sandbox jail” tool-policy/elevated errors with actionable config key paths; link to docs.
2026-01-10 18:52:17 +01:00
- Hooks/Gmail: keep Tailscale serve path at `/` while preserving the public path. (#668 ) — thanks @antons .
2026-01-10 19:19:30 +01:00
- Hooks/Gmail: allow Tailscale target URLs to preserve internal serve paths.
2026-01-10 16:37:49 +01:00
- Auth: update Claude Code keychain credentials in-place during refresh sync; share JSON file helpers; add CLI fallback coverage.
2026-01-10 17:44:03 +01:00
- Auth: throttle external CLI credential syncs (Claude/Codex), reduce Keychain reads, and skip sync when cached credentials are still fresh.
2026-01-10 18:06:05 +01:00
- CLI: respect `CLAWDBOT_STATE_DIR` for node pairing + voice wake settings storage. (#664 ) — thanks @azade -c.
2026-01-10 04:19:43 +00:00
- Onboarding/Gateway: persist non-interactive gateway token auth in config; add WS wizard + gateway tool-calling regression coverage.
2026-01-10 17:02:20 +01:00
- Gateway/Control UI: make `chat.send` non-blocking, wire Stop to `chat.abort` , and treat `/stop` as an out-of-band abort. (#653 )
2026-01-10 17:23:16 +01:00
- Gateway/Control UI: allow `chat.abort` without `runId` (abort active runs), suppress post-abort chat streaming, and prune stuck chat runs. (#653 )
2026-01-10 20:06:33 +01:00
- Gateway/Control UI: sniff image attachments for chat.send, drop non-images, and log mismatches. (#670 ) — thanks @cristip73 .
2026-01-10 23:48:33 +01:00
- macOS: force `restart-mac.sh --sign` to require identities and keep bundled Node signed for relay verification. (#580 ) — thanks @jeffersonwarrior .
2026-01-10 20:34:34 +00:00
- Gateway/Agent: accept image attachments on `agent` (multimodal message) and add live gateway image probe (`CLAWDBOT_LIVE_GATEWAY_IMAGE_PROBE=1` ).
2026-01-10 05:14:09 +01:00
- CLI: `clawdbot sessions` now includes `elev:*` + `usage:*` flags in the table output.
2026-01-10 16:36:43 +01:00
- CLI/Pairing: accept positional provider for `pairing list|approve` (npm-run compatible); update docs/bot hints.
2026-01-10 05:14:09 +01:00
- Branding: normalize user-facing “ClawdBot”/“CLAWDBOT” → “Clawdbot” (CLI, status, docs).
2026-01-10 16:52:14 +01:00
- Auto-reply: fix native `/model` not updating the actual chat session (Telegram/Slack/Discord). (#646 )
2026-01-10 21:14:30 +01:00
- Doctor: offer to run `clawdbot update` first on git installs (keeps doctor output aligned with latest).
2026-01-10 16:23:28 +01:00
- Doctor: avoid false legacy workspace warning when install dir is `~/clawdbot` . (#660 )
2026-01-10 15:31:57 +01:00
- iMessage: fix reasoning persistence across DMs; avoid partial/duplicate replies when reasoning is enabled. (#655 ) — thanks @antons .
2026-01-10 15:08:12 +01:00
- Models/Auth: allow MiniMax API configs without `models.providers.minimax.apiKey` (auth profiles / `MINIMAX_API_KEY` ). (#656 ) — thanks @mneves75 .
2026-01-10 15:28:13 +01:00
- Agents: avoid duplicate replies when the message tool sends. (#659 ) — thanks @mickahouan .
2026-01-10 18:03:43 +01:00
- Agents: harden Cloud Code Assist tool ID sanitization (toolUse/toolCall/toolResult) and scrub extra JSON Schema constraints. (#665 ) — thanks @sebslight .
2026-01-11 04:46:30 +00:00
- Agents: sanitize tool results + Cloud Code Assist tool IDs at context-build time (prevents mid-run strict-provider request rejects).
2026-01-10 17:09:56 +01:00
- Agents/Tools: resolve workspace-relative Read/Write/Edit paths; align bash default cwd. (#642 ) — thanks @mukhtharcm .
2026-01-10 18:30:06 +01:00
- Discord: include forwarded message snapshots in agent session context. (#667 ) — thanks @rubyrunsstuff .
- Telegram: add `telegram.draftChunk` to tune draft streaming chunking for `streamMode: "block"` . (#667 ) — thanks @rubyrunsstuff .
2026-01-10 17:26:29 +01:00
- Tests/Agents: add regression coverage for workspace tool path resolution and bash cwd defaults.
2026-01-10 16:04:08 +00:00
- iOS/Android: enable stricter concurrency/lint checks; fix Swift 6 strict concurrency issues + Android lint errors (ExifInterface, obsolete SDK check). (#662 ) — thanks @KristijanJovanovski .
2026-01-11 23:39:55 +00:00
- Auth: read Codex CLI keychain tokens on macOS before falling back to `~/.codex/auth.json` , preventing stale refresh tokens from breaking gateway live tests.
2026-01-10 16:23:25 +00:00
- iOS/macOS: share `AsyncTimeout` , require explicit `bridgeStableID` on connect, and harden tool display defaults (avoids missing-resource label fallbacks).
2026-01-10 18:05:33 +01:00
- Telegram: serialize media-group processing to avoid missed albums under load.
2026-01-10 19:13:23 +01:00
- Signal: handle `dataMessage.reaction` events (signal-cli SSE) to avoid broken attachment errors. (#637 ) — thanks @neist .
2026-01-10 16:16:48 +01:00
- Docs: showcase entries for ParentPay, R2 Upload, iOS TestFlight, and Oura Health. (#650 ) — thanks @henrino3 .
2026-01-10 21:45:10 +00:00
- Agents: repair session transcripts by dropping duplicate tool results across the whole history (unblocks Anthropic-compatible APIs after retries).
- Tests/Live: reset the gateway session between model runs to avoid cross-provider transcript incompatibilities (notably OpenAI Responses reasoning replay rules).
2026-01-11 04:41:38 +01:00
2026-01-10 04:17:27 +01:00
## 2026.1.9
### Highlights
- Microsoft Teams provider: polling, attachments, outbound CLI send, per-channel policy.
- Models/Auth expansion: OpenCode Zen + MiniMax API onboarding; token auth profiles + auth order; OAuth health in doctor/status.
- CLI/Gateway UX: message subcommands, gateway discover/status/SSH, /config + /debug, sandbox CLI.
- Provider reliability sweep: WhatsApp contact cards/targets, Telegram audio-as-voice + streaming, Signal reactions, Slack threading, Discord stability.
- Auto-reply + status: block-streaming controls, reasoning handling, usage/cost reporting.
- Control UI/TUI: queued messages, session links, reasoning view, mobile polish, logs UX.
### Breaking
- CLI: `clawdbot message` now subcommands (`message send|poll|...` ) and requires `--provider` unless only one provider configured.
- Commands/Tools: `/restart` and gateway restart tool disabled by default; enable with `commands.restart=true` .
### New Features and Changes
- Models/Auth: OpenCode Zen onboarding (#623 ) — thanks @magimetal ; MiniMax Anthropic-compatible API + hosted onboarding (#590 , #495 ) — thanks @mneves75 , @tobiasbischoff .
- Models/Auth: setup-token + token auth profiles; `clawdbot models auth order {get,set,clear}` ; per-agent auth candidates in `/model status` ; OAuth expiry checks in doctor/status.
- Agent/System: claude-cli runner; `session_status` tool (and sandbox allow); adaptive context pruning default; system prompt messaging guidance + no auto self-update; eligible skills list injection; sub-agent context trimmed.
- Commands: `/commands` list; `/models` alias; `/usage` alias; `/debug` runtime overrides + effective config view; `/config` chat updates + `/config get` ; `config --section` .
- CLI/Gateway: unified message tool + message subcommands; gateway discover (local + wide-area DNS-SD) with JSON/timeout; gateway status human-readable + JSON + SSH loopback; wide-area records include gatewayPort/sshPort/cliPath + tailnet DNS fallback.
- CLI UX: logs output modes (pretty/plain/JSONL) + colorized health/daemon output; global `--no-color` ; lobster palette in onboarding/config.
- Dev ergonomics: gateway `--dev/--reset` + dev profile auto-config; C-3PO dev templates; dev gateway/TUI helper scripts.
- Sandbox/Workspace: sandbox list/recreate commands; sync skills into sandbox workspace; sandbox browser auto-start.
- Config/Onboarding: inline env vars; OpenAI API key flow to shared `~/.clawdbot/.env` ; Opus 4.5 default prompt for Anthropic auth; QuickStart auto-install gateway (Node-only) + provider picker tweaks + skip-systemd flags; TUI bootstrap prompt (`tui --message` ); remove Bun runtime choice.
- Providers: Microsoft Teams provider (polling, attachments, outbound sends, requireMention, config reload/DM policy). (#404 ) — thanks @onutc
- Providers: WhatsApp broadcast groups for multi-agent replies (#547 ) — thanks @pasogott ; inbound media size cap configurable (#505 ) — thanks @koala73 ; identity-based message prefixes (#578 ) — thanks @p6l -richard.
- Providers: Telegram inline keyboard buttons + callback payload routing (#491 ) — thanks @azade -c; cron topic delivery targets (#474/#478 ) — thanks @mitschabaude -bot, @nachoiacovino ; `[[audio_as_voice]]` tag support (#490 ) — thanks @jarvis -medmatic.
- Providers: Signal reactions + notifications with allowlist support.
- Status/Usage: /status cost reporting + `/cost` lines; auth profile snippet; provider usage windows.
- Control UI: mobile responsiveness (#558 ) — thanks @carlulsoe ; queued messages + Enter-to-send (#527 ) — thanks @YuriNachos ; session links (#471 ) — thanks @HazAT ; reasoning view; skill install feedback (#445 ) — thanks @pkrmf ; chat layout refresh (#475 ) — thanks @rahthakor ; docs link + new session button; drop explicit `ui:install` .
- TUI: agent picker + agents list RPC; improved status line.
- Doctor/Daemon: audit/repair flows, permissions checks, supervisor config audits; provider status probes + warnings for Discord intents and Telegram privacy; last activity timestamps; gateway restart guidance.
- Docs: Hetzner Docker VPS guide + cross-links (#556/#592 ) — thanks @Iamadig ; Ansible guide (#545 ) — thanks @pasogott ; provider troubleshooting index; hook parameter expansion (#532 ) — thanks @mcinteerj ; model allowlist notes; OAuth deep dive; showcase refresh.
- Apps/Branding: refreshed iOS/Android/macOS icons (#521 ) — thanks @fishfisher .
### Fixes
2026-01-10 04:30:56 +01:00
- Packaging: include MS Teams send module in npm tarball.
2026-01-10 04:17:27 +01:00
- Sandbox/Browser: auto-start CDP endpoint; proxy CDP out of container for attachOnly; relax Bun fetch typing; align sandbox list output with config images.
- Agents/Runtime: gate heartbeat prompt to default sessions; /stop aborts between tool calls; require explicit system-event session keys; guard small context windows; fix model fallback stringification; sessions_spawn inherits provider; failover on billing/credits; respect auth cooldown ordering; restore Anthropic OAuth tool dispatch + tool-name bypass; avoid OpenAI invalid reasoning replay; harden Gmail hook model defaults.
- Agent history/schema: strip/skip empty assistant/error blocks to prevent session corruption/Claude 400s; scrub unsupported JSON Schema keywords + sanitize tool call IDs for Cloud Code Assist; simplify Gemini-compatible tool/session schemas; require raw for config.apply.
- Auto-reply/Streaming: default audioAsVoice false; preserve audio_as_voice propagation + buffer audio blocks + guard voice notes; block reply ordering (timeout) + forced-block fence-safe; avoid chunk splits inside parentheses + fence-close breaks + invalid UTF-16 truncation; preserve inline directive spacing + allow whitespace in reply tags; filter NO_REPLY prefixes + normalize routed replies; suppress < think > leakage with separate Reasoning; block streaming defaults (off by default, minChars/idle tuning) + coalesced blocks; dedupe followup queue; restore explicit responsePrefix default.
- Status/Commands: provider prefix in /status model display; usage filtering + provider mapping; auth label + usage snapshots (claude-cli fallback + optional claude.ai); show Verbose/Elevated only when enabled; compact usage/cost line + restore emoji-rich status; /status in directive-only + multi-directive handling; mention-bypass elevated handling; surface provider usage errors; wire /usage to /status; restore hidden gateway-daemon alias; fallback /model list when catalog unavailable.
- WhatsApp: vCard/contact cards (prefer FN, include numbers, show all contacts, keep summary counts, better empty summaries); preserve group JIDs + normalize targets; resolve @lid mappings/JIDs (Baileys/auth-dir) + inbound mapping; route queued replies to sender; improve web listener errors + remove provider name from errors; record outbound activity account id; fix web media fetch errors; broadcast group history consistency.
- Telegram: keep streamMode draft-only; long-poll conflict retries + update dedupe; grammY fetch mismatch fixes + restrict native fetch to Bun; suppress getUpdates stack traces; include user id in pairing; audio_as_voice handling fixes.
- Discord/Slack: thread context helpers + forum thread starters; avoid category parent overrides; gateway reconnect logs + HELLO timeout + stop provider after reconnect exhaustion; DM recipient parsing for numeric IDs; remove incorrect limited warning; reply threading + mrkdwn edge cases; remove ack reactions after reply; gateway debug event visibility.
- Signal: reaction handling safety; own-reaction matching (uuid+phone); UUID-only senders accepted; ignore reaction-only messages.
- MS Teams: download image attachments reliably; fix top-level replies; stop on shutdown + honor chunk limits; normalize poll providers/deps; pairing label fixes.
- iMessage: isolate group-ish threads by chat_id.
- Gateway/Daemon/Doctor: atomic config writes; repair gateway service entrypoint + install switches; non-interactive legacy migrations; systemd unit alignment + KillMode=process; node bridge keepalive/pings; Launch at Login persistence; bundle ClawdbotKit resources + Swift 6.2 compat dylib; relay version check + remove smoke test; regen Swift GatewayModels + keep agent provider string; cron jobId alias + channel alias migration + main session key normalization; heartbeat Telegram accountId resolution; avoid WhatsApp fallback for internal runs; gateway listener error wording; serveBaseUrl param; honor gateway --dev; fix wide-area discovery updates; align agents.defaults schema; provider account metadata in daemon status; refresh Carbon patch for gateway fixes; restore doctor prompter initialValue handling.
- Control UI/TUI: persist per-session verbose off + hide tool cards; logs tab opens at bottom; relative asset paths + landing cleanup; session labels lookup/persistence; stop pinning main session in recents; start logs at bottom; TUI status bar refresh + timeout handling + hide reasoning label when off.
- Onboarding/Configure: QuickStart single-select provider picker; avoid Codex CLI false-expiry warnings; clarify WhatsApp owner prompt; fix Minimax hosted onboarding (agents.defaults + msteams heartbeat target); remove configure Control UI prompt; honor gateway --dev flag.
2026-01-10 04:24:52 +01:00
### Maintenance
- Dependencies: bump pi-* stack to 0.42.2.
- Dependencies: Pi 0.40.0 bump (#543 ) — thanks @mcinteerj .
- Build: Docker build cache layer (#605 ) — thanks @zknicker .
2026-01-10 15:50:25 +01:00
- Auth: enable OAuth token refresh for Claude CLI credentials (`anthropic:claude-cli` ) with bidirectional sync back to Claude Code storage (file on Linux/Windows, Keychain on macOS). This allows long-running agents to operate autonomously without manual re-authentication (#654 — thanks @radek -paclt).
2026-01-08 09:11:28 +01:00
## 2026.1.8
### Highlights
- Security: DMs locked down by default across providers; pairing-first + allowlist guidance.
- Sandbox: per-agent scope defaults + workspace access controls; tool/session isolation tuned.
- Agent loop: compaction, pruning, streaming, and error handling hardened.
- Providers: Telegram/WhatsApp/Discord/Slack reliability, threading, reactions, media, and retries improved.
- Control UI: logs tab, streaming stability, focus mode, and large-output rendering fixes.
- CLI/Gateway/Doctor: daemon/logs/status, auth migration, and diagnostics significantly expanded.
2026-01-05 23:02:13 +00:00
### Breaking
2026-01-06 17:51:38 +01:00
- **SECURITY (update ASAP):** inbound DMs are now **locked down by default** on Telegram/WhatsApp/Signal/iMessage/Discord/Slack.
- Previously, if you didn’ t configure an allowlist, your bot could be **open to anyone** (especially discoverable Telegram bots).
- New default: DM pairing (`dmPolicy="pairing"` / `discord.dm.policy="pairing"` / `slack.dm.policy="pairing"` ).
- To keep old “open to everyone” behavior: set `dmPolicy="open"` and include `"*"` in the relevant `allowFrom` (Discord/Slack: `discord.dm.allowFrom` / `slack.dm.allowFrom` ).
2026-01-10 16:36:43 +01:00
- Approve requests via `clawdbot pairing list <provider>` + `clawdbot pairing approve <provider> <code>` .
2026-01-09 13:47:03 +01:00
- Sandbox: default `agent.sandbox.scope` to `"agent"` (one container/workspace per agent). Use `"session"` for per-session isolation; `"shared"` disables cross-session isolation.
- Timestamps in agent envelopes are now UTC (compact `YYYY-MM-DDTHH:mmZ` ); removed `messages.timestampPrefix` . Add `agent.userTimezone` to tell the model the user’ s local time (system prompt only).
2026-01-06 00:56:29 +00:00
- Model config schema changes (auth profiles + model lists); doctor auto-migrates and the gateway rewrites legacy configs on startup.
2026-01-06 02:06:06 +01:00
- Commands: gate all slash commands to authorized senders; add `/compact` to manually compact session context.
2026-01-06 03:30:33 +01:00
- Groups: `whatsapp.groups` , `telegram.groups` , and `imessage.groups` now act as allowlists when set. Add `"*"` to keep allow-all behavior.
2026-01-07 11:59:48 +01:00
- Auto-reply: removed `autoReply` from Discord/Slack/Telegram channel configs; use `requireMention` instead (Telegram topics now support `requireMention` overrides).
2026-01-08 07:40:08 +01:00
- CLI: remove `update` , `gateway-daemon` , `gateway {install|uninstall|start|stop|restart|daemon status|wake|send|agent}` , and `telegram` commands; move `login/logout` to `providers login/logout` (top-level aliases hidden); use `daemon` for service control, `send` /`agent` /`wake` for RPC, and `nodes canvas` for canvas ops.
2026-01-05 23:02:13 +00:00
2026-01-05 02:48:25 +01:00
### Fixes
2026-01-08 09:11:28 +01:00
- **CLI/Gateway/Doctor:** daemon runtime selection + improved logs/status/health/errors; auth/password handling for local CLI; richer close/timeout details; auto-migrate legacy config/sessions/state; integrity checks + repair prompts; `--yes` /`--non-interactive` ; `--deep` gateway scans; better restart/service hints.
- **Agent loop + compaction:** compaction/pruning tuning, overflow handling, safer bootstrap context, and per-provider threading/confirmations; opt-in tool-result pruning + compact tracking.
- **Sandbox + tools:** per-agent sandbox overrides, workspaceAccess controls, session tool visibility, tool policy overrides, process isolation, and tool schema/timeout/reaction unification.
- **Providers (Telegram/WhatsApp/Discord/Slack/Signal/iMessage):** retry/backoff, threading, reactions, media groups/attachments, mention gating, typing behavior, and error/log stability; long polling + forum topic isolation for Telegram.
- **Gateway/CLI UX:** `clawdbot logs` , cron list colors/aliases, docs search, agents list/add/delete flows, status usage snapshots, runtime/auth source display, and `/status` /commands auth unification.
- **Control UI/Web:** logs tab, focus mode polish, config form resilience, streaming stability, tool output caps, windowed chat history, and reconnect/password URL auth.
- **macOS/Android/TUI/Build:** macOS gateway races, QR bundling, JSON5 config safety, Voice Wake hardening; Android EXIF rotation + APK naming/versioning; TUI key handling; tooling/bundling fixes.
- **Packaging/compat:** npm dist folder coverage, Node 25 qrcode-terminal import fixes, Bun/Playwright/WebSocket patches, and Docker Bun install.
- **Docs:** new FAQ/ClawdHub/config examples/showcase entries and clarified auth, sandbox, and systemd docs.
2026-01-05 05:27:58 +01:00
### Maintenance
2026-01-08 09:11:28 +01:00
- Skills additions (Himalaya email, CodexBar, 1Password).
- Dependency refreshes (pi-* stack, Slack SDK, discord-api-types, file-type, zod, Biome, Vite).
- Refactors: centralized group allowlist/mention policy; lint/import cleanup; switch tsx → bun for TS execution.
2026-01-05 03:28:25 +01:00
2026-01-05 02:39:42 +01:00
## 2026.1.5
2026-01-04 19:35:00 +01:00
### Highlights
2026-01-09 13:47:03 +01:00
- Models: add image-specific model config (`agent.imageModel` + fallbacks) and scan support.
2026-01-04 19:35:00 +01:00
- Agent tools: new `image` tool routed to the image model (when configured).
2026-01-05 00:59:25 +01:00
- Config: default model shorthands (`opus` , `sonnet` , `gpt` , `gpt-mini` , `gemini` , `gemini-flash` ).
2026-01-05 01:02:30 +01:00
- Docs: document built-in model shorthands + precedence (user config wins).
2026-01-06 03:30:33 +01:00
- Bun: optional local install/build workflow without maintaining a Bun lockfile (see `docs/bun.md` ).
2026-01-04 19:35:00 +01:00
2026-01-04 16:16:20 +00:00
### Fixes
2026-01-05 01:22:19 +01:00
- Control UI: render Markdown in tool result cards.
2026-01-05 01:21:33 +01:00
- Control UI: prevent overlapping action buttons in Discord guild rules on narrow layouts.
2026-01-04 17:02:46 +00:00
- Android: tapping the foreground service notification brings the app to the front. (#179 ) — thanks @Syhids
2026-01-05 02:15:11 +01:00
- Cron tool uses `id` for update/remove/run/runs (aligns with gateway params). (#180 ) — thanks @adamgall
2026-01-05 00:15:13 +00:00
- Control UI: chat view uses page scroll with sticky header/sidebar and fixed composer (no inner scroll frame).
2026-01-04 18:46:57 +01:00
- macOS: treat location permission as always-only to avoid iOS-only enums. (#165 ) — thanks @Nachx639
2026-01-04 14:39:21 -08:00
- macOS: make generated gateway protocol models `Sendable` for Swift 6 strict concurrency. (#195 ) — thanks @andranik -sahakyan
2026-01-05 02:19:26 +01:00
- macOS: bundle QR code renderer modules so DMG gateway boot doesn't crash on missing qrcode-terminal vendor files.
2026-01-05 04:58:37 +00:00
- macOS: parse JSON5 config safely to avoid wiping user settings when comments are present.
2026-01-05 12:03:36 +13:00
- WhatsApp: suppress typing indicator during heartbeat background tasks. (#190 ) — thanks @mcinteerj
2026-01-05 01:33:19 +01:00
- WhatsApp: mark offline history sync messages as read without auto-reply. (#193 ) — thanks @mcinteerj
2026-01-05 00:46:46 +01:00
- Discord: avoid duplicate replies when a provider emits late streaming `text_end` events (OpenAI/GPT).
2026-01-05 02:19:26 +01:00
- CLI: use tailnet IP for local gateway calls when bind is tailnet/auto (fixes #176 ).
2026-01-05 00:41:36 +01:00
- Env: load global `$CLAWDBOT_STATE_DIR/.env` (`~/.clawdbot/.env` ) as a fallback after CWD `.env` .
2026-01-05 00:59:25 +01:00
- Env: optional login-shell env fallback (opt-in; imports expected keys without overriding existing env).
2026-01-05 00:15:42 +01:00
- Agent tools: OpenAI-compatible tool JSON Schemas (fix `browser` , normalize union schemas).
2026-01-06 09:08:25 +01:00
- Onboarding: when running from source, auto-build missing Control UI assets (`bun run ui:build` ).
2026-01-04 22:11:04 +01:00
- Discord/Slack: route reaction + system notifications to the correct session (no main-session bleed).
2026-01-09 13:47:03 +01:00
- Agent tools: honor `agent.tools` allow/deny policy even when sandbox is off.
2026-01-05 00:39:34 +01:00
- Discord: avoid duplicate replies when OpenAI emits repeated `message_end` events.
2026-01-05 01:31:36 +01:00
- Commands: unify /status (inline) and command auth across providers; group bypass for authorized control commands; remove Discord /clawd slash handler.
2026-01-06 03:30:33 +01:00
- CLI: run `clawdbot agent` via the Gateway by default; use `--local` to force embedded mode.