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/README.md b/README.md index e85d18519..1fd5e074c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,10 @@ # ๐Ÿฆž OpenClaw โ€” Personal AI Assistant

- OpenClaw + + + OpenClaw +

@@ -11,7 +14,6 @@

CI status GitHub release - DeepWiki Discord MIT License

@@ -21,7 +23,7 @@ It answers you on the channels you already use (WhatsApp, Telegram, Slack, Disco If you want a personal, single-user assistant that feels local, fast, and always-on, this is it. -[Website](https://openclaw.ai) ยท [Docs](https://docs.openclaw.ai) ยท [Getting Started](https://docs.openclaw.ai/start/getting-started) ยท [Updating](https://docs.openclaw.ai/install/updating) ยท [Showcase](https://docs.openclaw.ai/start/showcase) ยท [FAQ](https://docs.openclaw.ai/start/faq) ยท [Wizard](https://docs.openclaw.ai/start/wizard) ยท [Nix](https://github.com/openclaw/nix-clawdbot) ยท [Docker](https://docs.openclaw.ai/install/docker) ยท [Discord](https://discord.gg/clawd) +[Website](https://openclaw.ai) ยท [Docs](https://docs.openclaw.ai) ยท [DeepWiki](https://deepwiki.com/openclaw/openclaw) ยท [Getting Started](https://docs.openclaw.ai/start/getting-started) ยท [Updating](https://docs.openclaw.ai/install/updating) ยท [Showcase](https://docs.openclaw.ai/start/showcase) ยท [FAQ](https://docs.openclaw.ai/start/faq) ยท [Wizard](https://docs.openclaw.ai/start/wizard) ยท [Nix](https://github.com/openclaw/nix-clawdbot) ยท [Docker](https://docs.openclaw.ai/install/docker) ยท [Discord](https://discord.gg/clawd) Preferred setup: run the onboarding wizard (`openclaw onboard`). It walks through gateway, workspace, channels, and skills. The CLI wizard is the recommended path and works on **macOS, Linux, and Windows (via WSL2; strongly recommended)**. Works with npm, pnpm, or bun. 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/assets/openclaw-logo-text-dark.png b/docs/assets/openclaw-logo-text-dark.png new file mode 100644 index 000000000..b14e4233b Binary files /dev/null and b/docs/assets/openclaw-logo-text-dark.png differ 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 +

- OpenClaw + + + OpenClaw +

+

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) +

+ OpenClaw +

+ ## 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 0aa5bebc5..da6ae45c6 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 @@ -441,9 +441,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: @@ -461,9 +461,9 @@ importers: extensions/zalo: dependencies: - moltbot: + openclaw: specifier: workspace:* - version: link:../../packages/moltbot + version: link:../.. undici: specifier: 7.19.0 version: 7.19.0 @@ -473,9 +473,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: diff --git a/src/cli/banner.ts b/src/cli/banner.ts index 79ed3ee90..a3a452bfc 100644 --- a/src/cli/banner.ts +++ b/src/cli/banner.ts @@ -63,13 +63,12 @@ export function formatCliBannerLine(version: string, options: BannerOptions = {} } const LOBSTER_ASCII = [ - "โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„", - "โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆ", - "โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–ˆโ–‘โ–‘โ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆ", - "โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–ˆโ–‘โ–ˆโ–‘โ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–ˆโ–‘โ–ˆ", - "โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–‘โ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆ", - "โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆ", - " ๐Ÿฆž OPENCLAW ๐Ÿฆž ", + "โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„", + "โ–ˆโ–ˆโ–‘โ–„โ–„โ–„โ–‘โ–ˆโ–ˆโ–‘โ–„โ–„โ–‘โ–ˆโ–ˆโ–‘โ–„โ–„โ–„โ–ˆโ–ˆโ–‘โ–€โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–‘โ–„โ–„โ–€โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–„โ–„โ–€โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–ˆ", + "โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–‘โ–€โ–€โ–‘โ–ˆโ–ˆโ–‘โ–„โ–„โ–„โ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–ˆโ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–€โ–€โ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–ˆโ–‘โ–ˆโ–ˆ", + "โ–ˆโ–ˆโ–‘โ–€โ–€โ–€โ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–€โ–€โ–€โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–„โ–‘โ–ˆโ–ˆโ–‘โ–€โ–€โ–„โ–ˆโ–ˆโ–‘โ–€โ–€โ–‘โ–ˆโ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–„โ–€โ–„โ–€โ–„โ–ˆโ–ˆ", + "โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€", + " ๐Ÿฆž OPENCLAW ๐Ÿฆž ", " ", ]; diff --git a/src/commands/onboard-helpers.ts b/src/commands/onboard-helpers.ts index 1fb6f180c..f56da78e9 100644 --- a/src/commands/onboard-helpers.ts +++ b/src/commands/onboard-helpers.ts @@ -64,14 +64,12 @@ export function randomToken(): string { export function printWizardHeader(runtime: RuntimeEnv) { const header = [ - "โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“", - "โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆ", - "โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–ˆโ–‘โ–‘โ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆ", - "โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–ˆโ–‘โ–ˆโ–‘โ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–ˆโ–‘โ–ˆ", - "โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–‘โ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆ", - "โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆโ–‘โ–ˆโ–‘โ–‘โ–‘โ–ˆ", - "โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“", - " ๐Ÿฆž FRESH DAILY ๐Ÿฆž ", + "โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„โ–„", + "โ–ˆโ–ˆโ–‘โ–„โ–„โ–„โ–‘โ–ˆโ–ˆโ–‘โ–„โ–„โ–‘โ–ˆโ–ˆโ–‘โ–„โ–„โ–„โ–ˆโ–ˆโ–‘โ–€โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–‘โ–„โ–„โ–€โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–„โ–„โ–€โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–ˆ", + "โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–‘โ–€โ–€โ–‘โ–ˆโ–ˆโ–‘โ–„โ–„โ–„โ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–ˆโ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–€โ–€โ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–‘โ–ˆโ–‘โ–ˆโ–ˆ", + "โ–ˆโ–ˆโ–‘โ–€โ–€โ–€โ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–€โ–€โ–€โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–„โ–‘โ–ˆโ–ˆโ–‘โ–€โ–€โ–„โ–ˆโ–ˆโ–‘โ–€โ–€โ–‘โ–ˆโ–‘โ–ˆโ–ˆโ–‘โ–ˆโ–ˆโ–„โ–€โ–„โ–€โ–„โ–ˆโ–ˆ", + "โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€โ–€", + " ๐Ÿฆž OPENCLAW ๐Ÿฆž ", " ", ].join("\n"); runtime.log(header);