diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6444466d0..d09635740 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,32 +2,61 @@
Docs: https://docs.openclaw.ai
-## 2026.1.27-beta.1
-Status: beta.
+## 2026.1.29
+Status: stable.
### Changes
- Rebrand: rename the npm package/CLI to `openclaw`, add a `openclaw` compatibility shim, and move extensions to the `@openclaw/*` scope.
-- Commands: group /help and /commands output with Telegram paging. (#2504) Thanks @hougangdev.
-- macOS: limit project-local `node_modules/.bin` PATH preference to debug builds (reduce PATH hijacking risk).
-- macOS: finish OpenClaw app rename for macOS sources, bundle identifiers, and shared kit paths. (#2844) Thanks @fal3.
-- Branding: update launchd labels, mobile bundle IDs, and logging subsystems to bot.molt (legacy com.clawdbot migrations). Thanks @thewilloftheshadow.
-- Tools: add per-sender group tool policies and fix precedence. (#1757) Thanks @adam91holt.
-- Agents: summarize dropped messages during compaction safeguard pruning. (#2509) Thanks @jogi47.
-- Memory Search: allow extra paths for memory indexing (ignores symlinks). (#3600) Thanks @kira-ariaki.
-- Skills: add multi-image input support to Nano Banana Pro skill. (#1958) Thanks @tyler6204.
-- Agents: honor tools.exec.safeBins in exec allowlist checks. (#2281)
-- Matrix: switch plugin SDK to @vector-im/matrix-bot-sdk.
-- Docs: tighten Fly private deployment steps. (#2289) Thanks @dguido.
-- Docs: add migration guide for moving to a new machine. (#2381)
-- Docs: add Northflank one-click deployment guide. (#2167) Thanks @AdeboyeDN.
+- Onboarding: strengthen security warning copy for beta + access control expectations.
+- Onboarding: add Venice API key to non-interactive flow. (#1893) Thanks @jonisjongithub.
+- Config: auto-migrate legacy state/config paths and keep config resolution consistent across legacy filenames.
- Gateway: warn on hook tokens via query params; document header auth preference. (#2200) Thanks @YuriNachos.
- Gateway: add dangerous Control UI device auth bypass flag + audit warnings. (#2248)
- Doctor: warn on gateway exposure without auth. (#2016) Thanks @Alex-Alaniz.
-- Config: auto-migrate legacy state/config paths and keep config resolution consistent across legacy filenames.
+- Web UI: keep sub-agent announce replies visible in WebChat. (#1977) Thanks @andrescardonas7.
+- Browser: route browser control via gateway/node; remove standalone browser control command and control URL config.
+- Browser: route `browser.request` via node proxies when available; honor proxy timeouts; derive browser ports from `gateway.port`.
+- Browser: fall back to URL matching for extension relay target resolution. (#1999) Thanks @jonit-dev.
+- Telegram: allow caption param for media sends. (#1888) Thanks @mguellsegarra.
+- Telegram: support plugin sendPayload channelData (media/buttons) and validate plugin commands. (#1917) Thanks @JoshuaLelon.
+- Telegram: avoid block replies when streaming is disabled. (#1885) Thanks @ivancasco.
+- Telegram: add optional silent send flag (disable notifications). (#2382) Thanks @Suksham-sharma.
+- Telegram: support editing sent messages via message(action="edit"). (#2394) Thanks @marcelomar21.
+- Telegram: support quote replies for message tool and inbound context. (#2900) Thanks @aduk059.
+- Telegram: add sticker receive/send with vision caching. (#2629) Thanks @longjos.
+- Telegram: send sticker pixels to vision models. (#2650)
+- Telegram: keep topic IDs in restart sentinel notifications. (#1807) Thanks @hsrvc.
- Discord: add configurable privileged gateway intents for presences/members. (#2266) Thanks @kentaro.
-- Docs: add Vercel AI Gateway to providers sidebar. (#1901) Thanks @jerilynzheng.
+- Slack: clear ack reaction after streamed replies. (#2044) Thanks @fancyboi999.
+- Matrix: switch plugin SDK to @vector-im/matrix-bot-sdk.
+- Tlon: format thread reply IDs as @ud. (#1837) Thanks @wca4a.
+- Tools: add per-sender group tool policies and fix precedence. (#1757) Thanks @adam91holt.
+- Agents: summarize dropped messages during compaction safeguard pruning. (#2509) Thanks @jogi47.
- Agents: expand cron tool description with full schema docs. (#1988) Thanks @tomascupr.
+- Agents: honor tools.exec.safeBins in exec allowlist checks. (#2281)
+- Memory Search: allow extra paths for memory indexing (ignores symlinks). (#3600) Thanks @kira-ariaki.
+- Skills: add multi-image input support to Nano Banana Pro skill. (#1958) Thanks @tyler6204.
- Skills: add missing dependency metadata for GitHub, Notion, Slack, Discord. (#1995) Thanks @jackheuberger.
+- Commands: group /help and /commands output with Telegram paging. (#2504) Thanks @hougangdev.
+- Routing: add per-account DM session scope and document multi-account isolation. (#3095) Thanks @jarvis-sam.
+- Routing: precompile session key regexes. (#1697) Thanks @Ray0907.
+- CLI: use Node's module compile cache for faster startup. (#2808) Thanks @pi0.
+- Auth: show copyable Google auth URL after ASCII prompt. (#1787) Thanks @robbyczgw-cla.
+- TUI: avoid width overflow when rendering selection lists. (#1686) Thanks @mossein.
+- macOS: finish OpenClaw app rename for macOS sources, bundle identifiers, and shared kit paths. (#2844) Thanks @fal3.
+- Branding: update launchd labels, mobile bundle IDs, and logging subsystems to bot.molt (legacy com.clawdbot migrations). Thanks @thewilloftheshadow.
+- macOS: limit project-local `node_modules/.bin` PATH preference to debug builds (reduce PATH hijacking risk).
+- macOS: keep custom SSH usernames in remote target. (#2046) Thanks @algal.
+- macOS: avoid crash when rendering code blocks by bumping Textual to 0.3.1. (#2033) Thanks @garricn.
+- Update: ignore dist/control-ui for dirty checks and restore after ui builds. (#1976) Thanks @Glucksberg.
+- Build: bundle A2UI assets during build and stop tracking generated bundles. (#2455) Thanks @0oAstro.
+- CI: increase Node heap size for macOS checks. (#1890) Thanks @realZachi.
+- Config: apply config.env before ${VAR} substitution. (#1813) Thanks @spanishflu-est1918.
+- Gateway: prefer newest session metadata when combining stores. (#1823) Thanks @emanuelst.
+- Docs: tighten Fly private deployment steps. (#2289) Thanks @dguido.
+- Docs: add migration guide for moving to a new machine. (#2381)
+- Docs: add Northflank one-click deployment guide. (#2167) Thanks @AdeboyeDN.
+- Docs: add Vercel AI Gateway to providers sidebar. (#1901) Thanks @jerilynzheng.
- Docs: add Render deployment guide. (#1975) Thanks @anurag.
- Docs: add Claude Max API Proxy guide. (#1875) Thanks @atalovesyou.
- Docs: add DigitalOcean deployment guide. (#1870) Thanks @0xJonHoldsCrypto.
@@ -36,39 +65,8 @@ Status: beta.
- Docs: add GCP Compute Engine deployment guide. (#1848) Thanks @hougangdev.
- Docs: add LINE channel guide. Thanks @thewilloftheshadow.
- Docs: credit both contributors for Control UI refresh. (#1852) Thanks @EnzeD.
-- Onboarding: add Venice API key to non-interactive flow. (#1893) Thanks @jonisjongithub.
-- Onboarding: strengthen security warning copy for beta + access control expectations.
-- Tlon: format thread reply IDs as @ud. (#1837) Thanks @wca4a.
-- Gateway: prefer newest session metadata when combining stores. (#1823) Thanks @emanuelst.
-- Web UI: keep sub-agent announce replies visible in WebChat. (#1977) Thanks @andrescardonas7.
-- CI: increase Node heap size for macOS checks. (#1890) Thanks @realZachi.
-- macOS: avoid crash when rendering code blocks by bumping Textual to 0.3.1. (#2033) Thanks @garricn.
-- Browser: fall back to URL matching for extension relay target resolution. (#1999) Thanks @jonit-dev.
-- Browser: route browser control via gateway/node; remove standalone browser control command and control URL config.
-- Browser: route `browser.request` via node proxies when available; honor proxy timeouts; derive browser ports from `gateway.port`.
-- Update: ignore dist/control-ui for dirty checks and restore after ui builds. (#1976) Thanks @Glucksberg.
-- Build: bundle A2UI assets during build and stop tracking generated bundles. (#2455) Thanks @0oAstro.
-- Telegram: allow caption param for media sends. (#1888) Thanks @mguellsegarra.
-- Telegram: support plugin sendPayload channelData (media/buttons) and validate plugin commands. (#1917) Thanks @JoshuaLelon.
-- Telegram: avoid block replies when streaming is disabled. (#1885) Thanks @ivancasco.
- Docs: keep docs header sticky so navbar stays visible while scrolling. (#2445) Thanks @chenyuan99.
- Docs: update exe.dev install instructions. (#https://github.com/openclaw/openclaw/pull/3047) Thanks @zackerthescar.
-- Security: use Windows ACLs for permission audits and fixes on Windows. (#1957)
-- Auth: show copyable Google auth URL after ASCII prompt. (#1787) Thanks @robbyczgw-cla.
-- Routing: precompile session key regexes. (#1697) Thanks @Ray0907.
-- TUI: avoid width overflow when rendering selection lists. (#1686) Thanks @mossein.
-- Telegram: keep topic IDs in restart sentinel notifications. (#1807) Thanks @hsrvc.
-- Telegram: add optional silent send flag (disable notifications). (#2382) Thanks @Suksham-sharma.
-- Telegram: support editing sent messages via message(action="edit"). (#2394) Thanks @marcelomar21.
-- Telegram: support quote replies for message tool and inbound context. (#2900) Thanks @aduk059.
-- Telegram: add sticker receive/send with vision caching. (#2629) Thanks @longjos.
-- Telegram: send sticker pixels to vision models. (#2650)
-- Config: apply config.env before ${VAR} substitution. (#1813) Thanks @spanishflu-est1918.
-- Slack: clear ack reaction after streamed replies. (#2044) Thanks @fancyboi999.
-- macOS: keep custom SSH usernames in remote target. (#2046) Thanks @algal.
-- CLI: use Node's module compile cache for faster startup. (#2808) Thanks @pi0.
-- Routing: add per-account DM session scope and document multi-account isolation. (#3095) Thanks @jarvis-sam.
-
### Breaking
- **BREAKING:** Gateway auth mode "none" is removed; gateway now requires token/password (Tailscale Serve identity still allowed).
diff --git a/appcast.xml b/appcast.xml
index 2d9296655..67fa52377 100644
--- a/appcast.xml
+++ b/appcast.xml
@@ -2,6 +2,138 @@
OpenClaw
+ -
+
2026.1.29
+ Fri, 30 Jan 2026 06:24:15 +0100
+ https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml
+ 8345
+ 2026.1.29
+ 15.0
+ OpenClaw 2026.1.29
+Status: stable.
+Changes
+
+Rebrand: rename the npm package/CLI to openclaw, add a openclaw compatibility shim, and move extensions to the @openclaw/* scope.
+Onboarding: strengthen security warning copy for beta + access control expectations.
+Onboarding: add Venice API key to non-interactive flow. (#1893) Thanks @jonisjongithub.
+Config: auto-migrate legacy state/config paths and keep config resolution consistent across legacy filenames.
+Gateway: warn on hook tokens via query params; document header auth preference. (#2200) Thanks @YuriNachos.
+Gateway: add dangerous Control UI device auth bypass flag + audit warnings. (#2248)
+Doctor: warn on gateway exposure without auth. (#2016) Thanks @Alex-Alaniz.
+Web UI: keep sub-agent announce replies visible in WebChat. (#1977) Thanks @andrescardonas7.
+Browser: route browser control via gateway/node; remove standalone browser control command and control URL config.
+Browser: route browser.request via node proxies when available; honor proxy timeouts; derive browser ports from gateway.port.
+Browser: fall back to URL matching for extension relay target resolution. (#1999) Thanks @jonit-dev.
+Telegram: allow caption param for media sends. (#1888) Thanks @mguellsegarra.
+Telegram: support plugin sendPayload channelData (media/buttons) and validate plugin commands. (#1917) Thanks @JoshuaLelon.
+Telegram: avoid block replies when streaming is disabled. (#1885) Thanks @ivancasco.
+Telegram: add optional silent send flag (disable notifications). (#2382) Thanks @Suksham-sharma.
+Telegram: support editing sent messages via message(action="edit"). (#2394) Thanks @marcelomar21.
+Telegram: support quote replies for message tool and inbound context. (#2900) Thanks @aduk059.
+Telegram: add sticker receive/send with vision caching. (#2629) Thanks @longjos.
+Telegram: send sticker pixels to vision models. (#2650)
+Telegram: keep topic IDs in restart sentinel notifications. (#1807) Thanks @hsrvc.
+Discord: add configurable privileged gateway intents for presences/members. (#2266) Thanks @kentaro.
+Slack: clear ack reaction after streamed replies. (#2044) Thanks @fancyboi999.
+Matrix: switch plugin SDK to @vector-im/matrix-bot-sdk.
+Tlon: format thread reply IDs as @ud. (#1837) Thanks @wca4a.
+Tools: add per-sender group tool policies and fix precedence. (#1757) Thanks @adam91holt.
+Agents: summarize dropped messages during compaction safeguard pruning. (#2509) Thanks @jogi47.
+Agents: expand cron tool description with full schema docs. (#1988) Thanks @tomascupr.
+Agents: honor tools.exec.safeBins in exec allowlist checks. (#2281)
+Memory Search: allow extra paths for memory indexing (ignores symlinks). (#3600) Thanks @kira-ariaki.
+Skills: add multi-image input support to Nano Banana Pro skill. (#1958) Thanks @tyler6204.
+Skills: add missing dependency metadata for GitHub, Notion, Slack, Discord. (#1995) Thanks @jackheuberger.
+Commands: group /help and /commands output with Telegram paging. (#2504) Thanks @hougangdev.
+Routing: add per-account DM session scope and document multi-account isolation. (#3095) Thanks @jarvis-sam.
+Routing: precompile session key regexes. (#1697) Thanks @Ray0907.
+CLI: use Node's module compile cache for faster startup. (#2808) Thanks @pi0.
+Auth: show copyable Google auth URL after ASCII prompt. (#1787) Thanks @robbyczgw-cla.
+TUI: avoid width overflow when rendering selection lists. (#1686) Thanks @mossein.
+macOS: finish OpenClaw app rename for macOS sources, bundle identifiers, and shared kit paths. (#2844) Thanks @fal3.
+Branding: update launchd labels, mobile bundle IDs, and logging subsystems to bot.molt (legacy com.clawdbot migrations). Thanks @thewilloftheshadow.
+macOS: limit project-local node_modules/.bin PATH preference to debug builds (reduce PATH hijacking risk).
+macOS: keep custom SSH usernames in remote target. (#2046) Thanks @algal.
+macOS: avoid crash when rendering code blocks by bumping Textual to 0.3.1. (#2033) Thanks @garricn.
+Update: ignore dist/control-ui for dirty checks and restore after ui builds. (#1976) Thanks @Glucksberg.
+Build: bundle A2UI assets during build and stop tracking generated bundles. (#2455) Thanks @0oAstro.
+CI: increase Node heap size for macOS checks. (#1890) Thanks @realZachi.
+Config: apply config.env before ${VAR} substitution. (#1813) Thanks @spanishflu-est1918.
+Gateway: prefer newest session metadata when combining stores. (#1823) Thanks @emanuelst.
+Docs: tighten Fly private deployment steps. (#2289) Thanks @dguido.
+Docs: add migration guide for moving to a new machine. (#2381)
+Docs: add Northflank one-click deployment guide. (#2167) Thanks @AdeboyeDN.
+Docs: add Vercel AI Gateway to providers sidebar. (#1901) Thanks @jerilynzheng.
+Docs: add Render deployment guide. (#1975) Thanks @anurag.
+Docs: add Claude Max API Proxy guide. (#1875) Thanks @atalovesyou.
+Docs: add DigitalOcean deployment guide. (#1870) Thanks @0xJonHoldsCrypto.
+Docs: add Oracle Cloud (OCI) platform guide + cross-links. (#2333) Thanks @hirefrank.
+Docs: add Raspberry Pi install guide. (#1871) Thanks @0xJonHoldsCrypto.
+Docs: add GCP Compute Engine deployment guide. (#1848) Thanks @hougangdev.
+Docs: add LINE channel guide. Thanks @thewilloftheshadow.
+Docs: credit both contributors for Control UI refresh. (#1852) Thanks @EnzeD.
+Docs: keep docs header sticky so navbar stays visible while scrolling. (#2445) Thanks @chenyuan99.
+Docs: update exe.dev install instructions. (#https://github.com/openclaw/openclaw/pull/3047) Thanks @zackerthescar.
+
+Breaking
+
+BREAKING: Gateway auth mode "none" is removed; gateway now requires token/password (Tailscale Serve identity still allowed).
+
+Fixes
+
+Telegram: avoid silent empty replies by tracking normalization skips before fallback. (#3796)
+Mentions: honor mentionPatterns even when explicit mentions are present. (#3303) Thanks @HirokiKobayashi-R.
+Discord: restore username directory lookup in target resolution. (#3131) Thanks @bonald.
+Agents: align MiniMax base URL test expectation with default provider config. (#3131) Thanks @bonald.
+Agents: prevent retries on oversized image errors and surface size limits. (#2871) Thanks @Suksham-sharma.
+Agents: inherit provider baseUrl/api for inline models. (#2740) Thanks @lploc94.
+Memory Search: keep auto provider model defaults and only include remote when configured. (#2576) Thanks @papago2355.
+Telegram: include AccountId in native command context for multi-agent routing. (#2942) Thanks @Chloe-VP.
+Telegram: handle video note attachments in media extraction. (#2905) Thanks @mylukin.
+TTS: read OPENAI_TTS_BASE_URL at runtime instead of module load to honor config.env. (#3341) Thanks @hclsys.
+macOS: auto-scroll to bottom when sending a new message while scrolled up. (#2471) Thanks @kennyklee.
+Web UI: auto-expand the chat compose textarea while typing (with sensible max height). (#2950) Thanks @shivamraut101.
+Gateway: prevent crashes on transient network errors (fetch failures, timeouts, DNS). Added fatal error detection to only exit on truly critical errors. Fixes #2895, #2879, #2873. (#2980) Thanks @elliotsecops.
+Agents: guard channel tool listActions to avoid plugin crashes. (#2859) Thanks @mbelinky.
+Discord: stop resolveDiscordTarget from passing directory params into messaging target parsers. Fixes #3167. Thanks @thewilloftheshadow.
+Discord: avoid resolving bare channel names to user DMs when a username matches. Thanks @thewilloftheshadow.
+Discord: fix directory config type import for target resolution. Thanks @thewilloftheshadow.
+Providers: update MiniMax API endpoint and compatibility mode. (#3064) Thanks @hlbbbbbbb.
+Telegram: treat more network errors as recoverable in polling. (#3013) Thanks @ryancontent.
+Discord: resolve usernames to user IDs for outbound messages. (#2649) Thanks @nonggialiang.
+Providers: update Moonshot Kimi model references to kimi-k2.5. (#2762) Thanks @MarvinCui.
+Gateway: suppress AbortError and transient network errors in unhandled rejections. (#2451) Thanks @Glucksberg.
+TTS: keep /tts status replies on text-only commands and avoid duplicate block-stream audio. (#2451) Thanks @Glucksberg.
+Security: pin npm overrides to keep tar@7.5.4 for install toolchains.
+Security: properly test Windows ACL audit for config includes. (#2403) Thanks @dominicnunez.
+CLI: recognize versioned Node executables when parsing argv. (#2490) Thanks @David-Marsh-Photo.
+CLI: avoid prompting for gateway runtime under the spinner. (#2874)
+BlueBubbles: coalesce inbound URL link preview messages. (#1981) Thanks @tyler6204.
+Cron: allow payloads containing "heartbeat" in event filter. (#2219) Thanks @dwfinkelstein.
+CLI: avoid loading config for global help/version while registering plugin commands. (#2212) Thanks @dial481.
+Agents: include memory.md when bootstrapping memory context. (#2318) Thanks @czekaj.
+Agents: release session locks on process termination and cover more signals. (#2483) Thanks @janeexai.
+Agents: skip cooldowned providers during model failover. (#2143) Thanks @YiWang24.
+Telegram: harden polling + retry behavior for transient network errors and Node 22 transport issues. (#2420) Thanks @techboss.
+Telegram: ignore non-forum group message_thread_id while preserving DM thread sessions. (#2731) Thanks @dylanneve1.
+Telegram: wrap reasoning italics per line to avoid raw underscores. (#2181) Thanks @YuriNachos.
+Telegram: centralize API error logging for delivery and bot calls. (#2492) Thanks @altryne.
+Voice Call: enforce Twilio webhook signature verification for ngrok URLs; disable ngrok free tier bypass by default.
+Security: harden Tailscale Serve auth by validating identity via local tailscaled before trusting headers.
+Media: fix text attachment MIME misclassification with CSV/TSV inference and UTF-16 detection; add XML attribute escaping for file output. (#3628) Thanks @frankekn.
+Build: align memory-core peer dependency with lockfile.
+Security: add mDNS discovery mode with minimal default to reduce information disclosure. (#1882) Thanks @orlyjamie.
+Security: harden URL fetches with DNS pinning to reduce rebinding risk. Thanks Chris Zheng.
+Web UI: improve WebChat image paste previews and allow image-only sends. (#1925) Thanks @smartprogrammer93.
+Security: wrap external hook content by default with a per-hook opt-out. (#1827) Thanks @mertcicekci0.
+Gateway: default auth now fail-closed (token/password required; Tailscale Serve identity remains allowed).
+Gateway: treat loopback + non-local Host connections as remote unless trusted proxy headers are present.
+Onboarding: remove unsupported gateway auth "off" choice from onboarding/configure flows and CLI flags.
+
+View full changelog
+]]>
+
+
-
2026.1.24-1
Sun, 25 Jan 2026 14:05:25 +0000
@@ -97,92 +229,5 @@
]]>
- -
-
2026.1.23
- Sat, 24 Jan 2026 13:02:18 +0000
- https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml
- 7750
- 2026.1.23
- 15.0
- OpenClaw 2026.1.23
-Highlights
-
-TTS: allow model-driven TTS tags by default for expressive audio replies (laughter, singing cues, etc.).
-
-Changes
-
-Gateway: add /tools/invoke HTTP endpoint for direct tool calls and document it. (#1575) Thanks @vignesh07.
-Agents: keep system prompt time zone-only and move current time to session_status for better cache hits.
-Agents: remove redundant bash tool alias from tool registration/display. (#1571) Thanks @Takhoffman.
-Browser: add node-host proxy auto-routing for remote gateways (configurable per gateway/node).
-Heartbeat: add per-channel visibility controls (OK/alerts/indicator). (#1452) Thanks @dlauer.
-Plugins: add optional llm-task JSON-only tool for workflows. (#1498) Thanks @vignesh07.
-CLI: restart the gateway by default after openclaw update; add --no-restart to skip it.
-CLI: add live auth probes to openclaw models status for per-profile verification.
-CLI: add openclaw system for system events + heartbeat controls; remove standalone wake.
-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.
-Channels: allow per-group tool allow/deny policies across built-in + plugin channels. (#1546) Thanks @adam91holt.
-TTS: move Telegram TTS into core with auto-replies, commands, and gateway methods. (#1559) Thanks @Glucksberg.
-
-Fixes
-
-Sessions: accept non-UUID sessionIds for history/send/status while preserving agent scoping. (#1518)
-Gateway: compare Linux process start time to avoid PID recycling lock loops; keep locks unless stale. (#1572) Thanks @steipete.
-Messaging: mirror outbound sends into target session keys (threads + dmScope) and create session entries on send. (#1520)
-Sessions: normalize session key casing to lowercase for consistent routing.
-BlueBubbles: normalize group session keys for outbound mirroring. (#1520)
-Skills: gate bird Homebrew install to macOS. (#1569) Thanks @bradleypriest.
-Slack: honor open groupPolicy for unlisted channels in message + slash gating. (#1563) Thanks @itsjaydesu.
-Agents: show tool error fallback when the last assistant turn only invoked tools (prevents silent stops).
-Agents: ignore IDENTITY.md template placeholders when parsing identity to avoid placeholder replies. (#1556)
-Agents: drop orphaned OpenAI Responses reasoning blocks on model switches. (#1562) Thanks @roshanasingh4.
-Docker: update gateway command in docker-compose and Hetzner guide. (#1514)
-Sessions: reject array-backed session stores to prevent silent wipes. (#1469)
-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.
-Discord: retry rate-limited allowlist resolution + command deploy to avoid gateway crashes.
-Mentions: ignore mentionPattern matches when another explicit mention is present in group chats (Slack/Discord/Telegram/WhatsApp).
-Gateway: accept null optional fields in exec approval requests. (#1511) Thanks @pvoo.
-Exec: honor tools.exec ask/security defaults for elevated approvals (avoid unwanted prompts).
-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 openclaw 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 openclaw 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.
-Agents: trigger model fallback when auth profiles are all in cooldown or unavailable. (#1522)
-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: only parse MEDIA: tags when they start the line to avoid stripping prose mentions. (#1206)
-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.
-MS Teams (plugin): remove .default suffix from Bot Framework probe scope to avoid double-appending. (#1574) Thanks @Evizero.
-Browser: keep extension relay tabs controllable when the extension reuses a session id after switching tabs. (#1160)
-Agents: warn and ignore tool allowlists that only reference unknown or unloaded plugin tools. (#1566)
-
-View full changelog
-]]>
-
-
\ No newline at end of file
diff --git a/docs/index.md b/docs/index.md
index 32eaa47dd..ade5c5e23 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -7,10 +7,15 @@ read_when:
> *"EXFOLIATE! EXFOLIATE!"* — A space lobster, probably
+
-
+
+
+
+
+
Any OS + WhatsApp/Telegram/Discord/iMessage gateway for AI agents (Pi).
Plugins add Mattermost and more.
@@ -42,6 +47,10 @@ The dashboard is the browser Control UI for chat, config, nodes, sessions, and m
Local default: http://127.0.0.1:18789/
Remote access: [Web surfaces](/web) and [Tailscale](/gateway/tailscale)
+
+
+
+
## How it works
```
diff --git a/extensions/bluebubbles/package.json b/extensions/bluebubbles/package.json
index b23b64ff4..e76fa7700 100644
--- a/extensions/bluebubbles/package.json
+++ b/extensions/bluebubbles/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/bluebubbles",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw BlueBubbles channel plugin",
"openclaw": {
diff --git a/extensions/copilot-proxy/package.json b/extensions/copilot-proxy/package.json
index d8925aa2d..60ca9dbbd 100644
--- a/extensions/copilot-proxy/package.json
+++ b/extensions/copilot-proxy/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/copilot-proxy",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Copilot Proxy provider plugin",
"openclaw": {
diff --git a/extensions/diagnostics-otel/package.json b/extensions/diagnostics-otel/package.json
index f18837b28..996bebb06 100644
--- a/extensions/diagnostics-otel/package.json
+++ b/extensions/diagnostics-otel/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/diagnostics-otel",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw diagnostics OpenTelemetry exporter",
"openclaw": {
diff --git a/extensions/discord/package.json b/extensions/discord/package.json
index b4eed1bf7..76e32dd7c 100644
--- a/extensions/discord/package.json
+++ b/extensions/discord/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/discord",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Discord channel plugin",
"openclaw": {
diff --git a/extensions/google-antigravity-auth/package.json b/extensions/google-antigravity-auth/package.json
index 5d1cd15b5..93a764378 100644
--- a/extensions/google-antigravity-auth/package.json
+++ b/extensions/google-antigravity-auth/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/google-antigravity-auth",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Google Antigravity OAuth provider plugin",
"openclaw": {
diff --git a/extensions/google-gemini-cli-auth/package.json b/extensions/google-gemini-cli-auth/package.json
index 48237913f..8b799aa74 100644
--- a/extensions/google-gemini-cli-auth/package.json
+++ b/extensions/google-gemini-cli-auth/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/google-gemini-cli-auth",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Gemini CLI OAuth provider plugin",
"openclaw": {
diff --git a/extensions/googlechat/package.json b/extensions/googlechat/package.json
index 050c590f2..31f6905d3 100644
--- a/extensions/googlechat/package.json
+++ b/extensions/googlechat/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/googlechat",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Google Chat channel plugin",
"openclaw": {
diff --git a/extensions/imessage/package.json b/extensions/imessage/package.json
index 7c18cf237..147408bc5 100644
--- a/extensions/imessage/package.json
+++ b/extensions/imessage/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/imessage",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw iMessage channel plugin",
"openclaw": {
diff --git a/extensions/line/package.json b/extensions/line/package.json
index 49136fd32..d9e880d19 100644
--- a/extensions/line/package.json
+++ b/extensions/line/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/line",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw LINE channel plugin",
"openclaw": {
diff --git a/extensions/llm-task/package.json b/extensions/llm-task/package.json
index 20add31e1..68abe209c 100644
--- a/extensions/llm-task/package.json
+++ b/extensions/llm-task/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/llm-task",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw JSON-only LLM task plugin",
"openclaw": {
diff --git a/extensions/lobster/package.json b/extensions/lobster/package.json
index 5a701d03b..07be493b1 100644
--- a/extensions/lobster/package.json
+++ b/extensions/lobster/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/lobster",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "Lobster workflow tool plugin (typed pipelines + resumable approvals)",
"openclaw": {
diff --git a/extensions/matrix/package.json b/extensions/matrix/package.json
index 6d3708416..22f0a26ba 100644
--- a/extensions/matrix/package.json
+++ b/extensions/matrix/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/matrix",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Matrix channel plugin",
"openclaw": {
diff --git a/extensions/mattermost/package.json b/extensions/mattermost/package.json
index 48d6f8572..6b100cf27 100644
--- a/extensions/mattermost/package.json
+++ b/extensions/mattermost/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/mattermost",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Mattermost channel plugin",
"openclaw": {
diff --git a/extensions/memory-core/package.json b/extensions/memory-core/package.json
index 6f3c579f7..947b217bd 100644
--- a/extensions/memory-core/package.json
+++ b/extensions/memory-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/memory-core",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw core memory search plugin",
"openclaw": {
diff --git a/extensions/memory-lancedb/package.json b/extensions/memory-lancedb/package.json
index a1d84ce19..043c5ce5c 100644
--- a/extensions/memory-lancedb/package.json
+++ b/extensions/memory-lancedb/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/memory-lancedb",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw LanceDB-backed long-term memory plugin with auto-recall/capture",
"dependencies": {
diff --git a/extensions/msteams/package.json b/extensions/msteams/package.json
index 61d7b35c3..bc93dd5ae 100644
--- a/extensions/msteams/package.json
+++ b/extensions/msteams/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/msteams",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Microsoft Teams channel plugin",
"openclaw": {
diff --git a/extensions/nextcloud-talk/package.json b/extensions/nextcloud-talk/package.json
index 8dea2bd7a..0a2657f4a 100644
--- a/extensions/nextcloud-talk/package.json
+++ b/extensions/nextcloud-talk/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/nextcloud-talk",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Nextcloud Talk channel plugin",
"openclaw": {
diff --git a/extensions/nostr/package.json b/extensions/nostr/package.json
index b9a74caeb..8b639783b 100644
--- a/extensions/nostr/package.json
+++ b/extensions/nostr/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/nostr",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Nostr channel plugin for NIP-04 encrypted DMs",
"openclaw": {
diff --git a/extensions/open-prose/package.json b/extensions/open-prose/package.json
index 080c3a25c..c6ef69d9f 100644
--- a/extensions/open-prose/package.json
+++ b/extensions/open-prose/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/open-prose",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenProse VM skill pack plugin (slash command + telemetry).",
"openclaw": {
diff --git a/extensions/signal/package.json b/extensions/signal/package.json
index a82f26e4f..a23d501b5 100644
--- a/extensions/signal/package.json
+++ b/extensions/signal/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/signal",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Signal channel plugin",
"openclaw": {
diff --git a/extensions/slack/package.json b/extensions/slack/package.json
index de5d64e87..1b447ff85 100644
--- a/extensions/slack/package.json
+++ b/extensions/slack/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/slack",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Slack channel plugin",
"openclaw": {
diff --git a/extensions/telegram/package.json b/extensions/telegram/package.json
index 608612ff2..3263238af 100644
--- a/extensions/telegram/package.json
+++ b/extensions/telegram/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/telegram",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Telegram channel plugin",
"openclaw": {
diff --git a/extensions/tlon/package.json b/extensions/tlon/package.json
index 59a4a1f63..eb68d75b1 100644
--- a/extensions/tlon/package.json
+++ b/extensions/tlon/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/tlon",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Tlon/Urbit channel plugin",
"openclaw": {
diff --git a/extensions/twitch/package.json b/extensions/twitch/package.json
index ac8f2d1a4..99ebb07cd 100644
--- a/extensions/twitch/package.json
+++ b/extensions/twitch/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/twitch",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"description": "OpenClaw Twitch channel plugin",
"type": "module",
"dependencies": {
diff --git a/extensions/voice-call/package.json b/extensions/voice-call/package.json
index 49cf8efe2..b78db15f1 100644
--- a/extensions/voice-call/package.json
+++ b/extensions/voice-call/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/voice-call",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw voice-call plugin",
"dependencies": {
diff --git a/extensions/whatsapp/package.json b/extensions/whatsapp/package.json
index 968baa4cb..2c783e146 100644
--- a/extensions/whatsapp/package.json
+++ b/extensions/whatsapp/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/whatsapp",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw WhatsApp channel plugin",
"openclaw": {
diff --git a/extensions/zalo/package.json b/extensions/zalo/package.json
index e856df2c9..512548cd2 100644
--- a/extensions/zalo/package.json
+++ b/extensions/zalo/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/zalo",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Zalo channel plugin",
"openclaw": {
diff --git a/extensions/zalouser/package.json b/extensions/zalouser/package.json
index ec061634f..f771389b6 100644
--- a/extensions/zalouser/package.json
+++ b/extensions/zalouser/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/zalouser",
- "version": "2026.1.27-beta.1",
+ "version": "2026.1.29",
"type": "module",
"description": "OpenClaw Zalo Personal Account plugin via zca-cli",
"dependencies": {
diff --git a/package.json b/package.json
index b6328437c..77211d865 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "openclaw",
- "version": "2026.1.29-beta.7",
+ "version": "2026.1.29",
"description": "WhatsApp gateway CLI (Baileys web) with Pi RPC agent",
"type": "module",
"main": "dist/index.js",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a7d3c6776..95b940c97 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -314,17 +314,17 @@ importers:
specifier: ^10.5.0
version: 10.5.0
devDependencies:
- moltbot:
+ openclaw:
specifier: workspace:*
- version: link:../../packages/moltbot
+ version: link:../..
extensions/imessage: {}
extensions/line:
devDependencies:
- moltbot:
+ openclaw:
specifier: workspace:*
- version: link:../../packages/moltbot
+ version: link:../..
extensions/llm-task: {}
@@ -348,17 +348,17 @@ importers:
specifier: ^4.3.6
version: 4.3.6
devDependencies:
- moltbot:
+ openclaw:
specifier: workspace:*
- version: link:../../packages/moltbot
+ version: link:../..
extensions/mattermost: {}
extensions/memory-core:
devDependencies:
- moltbot:
+ openclaw:
specifier: workspace:*
- version: link:../../packages/moltbot
+ version: link:../..
extensions/memory-lancedb:
dependencies:
@@ -386,9 +386,9 @@ importers:
express:
specifier: ^5.2.1
version: 5.2.1
- moltbot:
+ openclaw:
specifier: workspace:*
- version: link:../../packages/moltbot
+ version: link:../..
proper-lockfile:
specifier: ^4.1.2
version: 4.1.2
@@ -397,12 +397,12 @@ importers:
extensions/nostr:
dependencies:
- moltbot:
- specifier: workspace:*
- version: link:../../packages/moltbot
nostr-tools:
specifier: ^2.20.0
version: 2.20.0(typescript@5.9.3)
+ openclaw:
+ specifier: workspace:*
+ version: link:../..
zod:
specifier: ^4.3.6
version: 4.3.6
@@ -439,9 +439,9 @@ importers:
specifier: ^4.3.5
version: 4.3.6
devDependencies:
- moltbot:
+ openclaw:
specifier: workspace:*
- version: link:../../packages/moltbot
+ version: link:../..
extensions/voice-call:
dependencies:
@@ -459,9 +459,9 @@ importers:
extensions/zalo:
dependencies:
- moltbot:
+ openclaw:
specifier: workspace:*
- version: link:../../packages/moltbot
+ version: link:../..
undici:
specifier: 7.19.0
version: 7.19.0
@@ -471,9 +471,9 @@ importers:
'@sinclair/typebox':
specifier: 0.34.47
version: 0.34.47
- moltbot:
+ openclaw:
specifier: workspace:*
- version: link:../../packages/moltbot
+ version: link:../..
packages/clawdbot:
dependencies: