From 865e84d78b3b661bd2bc57ce759b2e27f6a89e0d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 24 Jan 2026 03:56:53 +0000 Subject: [PATCH] docs: clarify heartbeat empty file behavior (#1535) (thanks @JustYannicc) --- CHANGELOG.md | 26 +++++++++++++++++++++++++- docs/gateway/heartbeat.md | 4 ++++ docs/start/clawd.md | 2 ++ docs/start/faq.md | 4 ++++ 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b33b621e8..ec5e9ad7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,25 +2,49 @@ Docs: https://docs.clawd.bot -## 2026.1.23 +## 2026.1.23 (Unreleased) ### Changes +- Plugins: add optional llm-task JSON-only tool for workflows. (#1498) Thanks @vignesh07. - CLI: restart the gateway by default after `clawdbot update`; add `--no-restart` to skip it. - CLI: add live auth probes to `clawdbot models status` for per-profile verification. +- Agents: add Bedrock auto-discovery defaults + config overrides. (#1553) Thanks @fal3. +- Docs: add cron vs heartbeat decision guide (with Lobster workflow notes). (#1533) Thanks @JustYannicc. +- Docs: clarify HEARTBEAT.md empty file skips heartbeats, missing file still runs. (#1535) Thanks @JustYannicc. - Markdown: add per-channel table conversion (bullets for Signal/WhatsApp, code blocks elsewhere). (#1495) Thanks @odysseus0. +- Tlon: add Urbit channel plugin (DMs, group mentions, thread replies). (#1544) Thanks @wca4a. ### Fixes +- Docker: update gateway command in docker-compose and Hetzner guide. (#1514) +- Voice wake: auto-save wake words on blur/submit across iOS/Android and align limits with macOS. +- UI: keep the Control UI sidebar visible while scrolling long pages. (#1515) Thanks @pookNast. +- UI: cache Control UI markdown rendering + memoize chat text extraction to reduce Safari typing jank. +- Tailscale: retry serve/funnel with sudo only for permission errors and keep original failure details. (#1551) Thanks @sweepies. +- Agents: add CLI log hint to "agent failed before reply" messages. (#1550) Thanks @sweepies. - Discord: limit autoThread mention bypass to bot-owned threads; keep ack reactions mention-gated. (#1511) Thanks @pvoo. - Gateway: accept null optional fields in exec approval requests. (#1511) Thanks @pvoo. - TUI: forward unknown slash commands (for example, `/context`) to the Gateway. - TUI: include Gateway slash commands in autocomplete and `/help`. - CLI: skip usage lines in `clawdbot models status` when provider usage is unavailable. - CLI: suppress diagnostic session/run noise during auth probes. +- CLI: hide auth probe timeout warnings from embedded runs. +- CLI: render auth probe results as a table in `clawdbot models status`. +- CLI: suppress probe-only embedded logs unless `--verbose` is set. +- CLI: move auth probe errors below the table to reduce wrapping. +- CLI: prevent ANSI color bleed when table cells wrap. +- CLI: explain when auth profiles are excluded by auth.order in probe details. +- CLI: drop the em dash when the banner tagline wraps to a second line. +- CLI: inline auth probe errors in status rows to reduce wrapping. +- Telegram: render markdown in media captions. (#1478) +- Agents: honor enqueue overrides for embedded runs to avoid queue deadlocks in tests. +- Daemon: use platform PATH delimiters when building minimal service paths. +- Tests: skip embedded runner ordering assertion on Windows to avoid CI timeouts. - Linux: include env-configured user bin roots in systemd PATH and align PATH audits. (#1512) Thanks @robbyczgw-cla. - TUI: render Gateway slash-command replies as system output (for example, `/context`). - Media: preserve PNG alpha when possible; fall back to JPEG when still over size cap. (#1491) Thanks @robbyczgw-cla. - Agents: treat plugin-only tool allowlists as opt-ins; keep core tools enabled. (#1467) - Exec approvals: persist allowlist entry ids to keep macOS allowlist rows stable. (#1521) Thanks @ngutman. +- MS Teams (plugin): remove `.default` suffix from Graph scopes to avoid double-appending. (#1507) Thanks @Evizero. ## 2026.1.22 diff --git a/docs/gateway/heartbeat.md b/docs/gateway/heartbeat.md index cc6c2a7d5..bda09a074 100644 --- a/docs/gateway/heartbeat.md +++ b/docs/gateway/heartbeat.md @@ -159,6 +159,10 @@ If a `HEARTBEAT.md` file exists in the workspace, the default prompt tells the agent to read it. Think of it as your “heartbeat checklist”: small, stable, and safe to include every 30 minutes. +If `HEARTBEAT.md` exists but is effectively empty (only blank lines and markdown +headers like `# Heading`), Clawdbot skips the heartbeat run to save API calls. +If the file is missing, the heartbeat still runs and the model decides what to do. + Keep it tiny (short checklist or reminders) to avoid prompt bloat. Example `HEARTBEAT.md`: diff --git a/docs/start/clawd.md b/docs/start/clawd.md index 106c9c05c..8da004b02 100644 --- a/docs/start/clawd.md +++ b/docs/start/clawd.md @@ -182,6 +182,8 @@ By default, Clawdbot runs a heartbeat every 30 minutes with the prompt: `Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.` Set `agents.defaults.heartbeat.every: "0m"` to disable. +- If `HEARTBEAT.md` exists but is effectively empty (only blank lines and markdown headers like `# Heading`), Clawdbot skips the heartbeat run to save API calls. +- If the file is missing, the heartbeat still runs and the model decides what to do. - If the agent replies with `HEARTBEAT_OK` (optionally with short padding; see `agents.defaults.heartbeat.ackMaxChars`), Clawdbot suppresses outbound delivery for that heartbeat. - Heartbeats run full agent turns — shorter intervals burn more tokens. diff --git a/docs/start/faq.md b/docs/start/faq.md index a3efb2b0b..f832f3a94 100644 --- a/docs/start/faq.md +++ b/docs/start/faq.md @@ -971,6 +971,10 @@ Heartbeats run every **30m** by default. Tune or disable them: } ``` +If `HEARTBEAT.md` exists but is effectively empty (only blank lines and markdown +headers like `# Heading`), Clawdbot skips the heartbeat run to save API calls. +If the file is missing, the heartbeat still runs and the model decides what to do. + Per-agent overrides use `agents.list[].heartbeat`. Docs: [Heartbeat](/gateway/heartbeat). ### Do I need to add a “bot account” to a WhatsApp group?