From bf02bbf9cec2aacbc909905fad90450cc7d921ec Mon Sep 17 00:00:00 2001 From: Ayaan Zaidi Date: Wed, 18 Feb 2026 15:14:52 +0530 Subject: [PATCH] docs: document heartbeat topic targets --- CHANGELOG.md | 1 + docs/gateway/heartbeat.md | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61cfa81c3f..ef328c5d0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Docs: https://docs.openclaw.ai ### Fixes +- Telegram/Cron/Heartbeat: honor explicit Telegram topic targets in cron and heartbeat delivery (`:topic:`) so scheduled sends land in the configured topic instead of the last active thread. (#19367) Thanks @Lukavyi. - Commands/Doctor: avoid rewriting invalid configs with new `gateway.auth.token` defaults during repair and only write when real config changes are detected, preventing accidental token duplication and backup churn. - Sandbox/Registry: serialize container and browser registry writes with shared file locks and atomic replacement to prevent lost updates and delete rollback races from desyncing `sandbox list`, `prune`, and `recreate --all`. Thanks @kexinoh. - Security/Exec: require `tools.exec.safeBins` binaries to resolve from trusted bin directories (system defaults plus gateway startup `PATH`) so PATH-hijacked trojan binaries cannot bypass allowlist checks. Thanks @jackhax for reporting. diff --git a/docs/gateway/heartbeat.md b/docs/gateway/heartbeat.md index a450218f2c..36550e35ae 100644 --- a/docs/gateway/heartbeat.md +++ b/docs/gateway/heartbeat.md @@ -176,7 +176,7 @@ Use `accountId` to target a specific account on multi-account channels like Tele heartbeat: { every: "1h", target: "telegram", - to: "12345678", + to: "12345678:topic:42", // optional: route to a specific topic/thread accountId: "ops-bot", }, }, @@ -205,7 +205,7 @@ Use `accountId` to target a specific account on multi-account channels like Tele - `last` (default): deliver to the last used external channel. - explicit channel: `whatsapp` / `telegram` / `discord` / `googlechat` / `slack` / `msteams` / `signal` / `imessage`. - `none`: run the heartbeat but **do not deliver** externally. -- `to`: optional recipient override (channel-specific id, e.g. E.164 for WhatsApp or a Telegram chat id). +- `to`: optional recipient override (channel-specific id, e.g. E.164 for WhatsApp or a Telegram chat id). For Telegram topics/threads, use `:topic:`. - `accountId`: optional account id for multi-account channels. When `target: "last"`, the account id applies to the resolved last channel if it supports accounts; otherwise it is ignored. If the account id does not match a configured account for the resolved channel, delivery is skipped. - `prompt`: overrides the default prompt body (not merged). - `ackMaxChars`: max chars allowed after `HEARTBEAT_OK` before delivery.