From 0229a108fee749327b2cc60c4d228299dfe2f889 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 4 Sep 2026 17:40:27 -0700 Subject: [PATCH] chore(release): close out 2026.9.1 on main (#137506) Set main to the shipped stable version 2026.9.1 (root, apps, plugins, and version-owned generated metadata via `pnpm release:prepare`), make the `## 2026.9.1` changelog section identical to the tagged release branch, and carry the native locale refresh that the release preflight requires. Release: https://github.com/openclaw/openclaw/releases/tag/v2026.9.1 npm: openclaw@2026.9.1 (latest, beta); 89 @openclaw/* plugins at 2026.9.1. --- CHANGELOG.md | 1474 ++++++++++++++--- .../Sources/OpenClaw/Resources/Info.plist | 4 +- extensions/a2a/package.json | 4 +- extensions/acpx/package.json | 6 +- extensions/admin-http-rpc/package.json | 2 +- extensions/alibaba/package.json | 2 +- extensions/amazon-bedrock-mantle/package.json | 6 +- extensions/amazon-bedrock/package.json | 6 +- extensions/anthropic-vertex/package.json | 6 +- extensions/anthropic/package.json | 2 +- extensions/arcee/package.json | 6 +- extensions/azure-speech/package.json | 2 +- extensions/baseten/package.json | 6 +- extensions/beam/package.json | 2 +- extensions/bonjour/package.json | 2 +- extensions/brave/package.json | 6 +- extensions/browser/package.json | 2 +- extensions/buzz/package.json | 12 +- extensions/byteplus/package.json | 6 +- extensions/canvas/package.json | 2 +- extensions/cerebras/package.json | 6 +- extensions/chutes/package.json | 6 +- extensions/clawrouter/package.json | 2 +- extensions/clickclack/package.json | 12 +- extensions/cloudflare-ai-gateway/package.json | 6 +- extensions/codex/package.json | 6 +- extensions/cohere/package.json | 6 +- extensions/comfy/package.json | 6 +- extensions/copilot-proxy/package.json | 2 +- extensions/copilot/package.json | 6 +- extensions/crabbox/package.json | 2 +- extensions/cua-computer/package.json | 2 +- extensions/deepgram/package.json | 2 +- extensions/deepinfra/package.json | 6 +- extensions/deepseek/package.json | 6 +- extensions/diagnostics-otel/package.json | 6 +- .../diagnostics-prometheus/package.json | 6 +- extensions/diffs-language-pack/package.json | 6 +- extensions/diffs/package.json | 6 +- extensions/discord/package.json | 12 +- extensions/document-extract/package.json | 2 +- extensions/duckduckgo/package.json | 6 +- extensions/elevenlabs/package.json | 2 +- extensions/exa/package.json | 6 +- extensions/fal/package.json | 2 +- extensions/featherless/package.json | 6 +- extensions/feishu/package.json | 8 +- extensions/file-transfer/package.json | 2 +- extensions/firecrawl/package.json | 6 +- extensions/fireworks/package.json | 6 +- extensions/fish-audio-speech/package.json | 6 +- extensions/geolocation/package.json | 6 +- extensions/github-copilot/package.json | 2 +- extensions/gmi/package.json | 6 +- extensions/google-meet/package.json | 8 +- extensions/google/package.json | 2 +- extensions/googlechat/package.json | 13 +- extensions/gradium/package.json | 6 +- extensions/groq/package.json | 6 +- extensions/huggingface/package.json | 2 +- extensions/image-generation-core/package.json | 2 +- extensions/imap/package.json | 6 +- extensions/imessage/package.json | 8 +- extensions/inworld/package.json | 6 +- extensions/irc/package.json | 11 +- extensions/kilocode/package.json | 6 +- extensions/kimi-coding/package.json | 6 +- extensions/line/package.json | 13 +- extensions/linux-node/package.json | 2 +- extensions/litellm/package.json | 2 +- extensions/llama-cpp/package.json | 6 +- extensions/llm-task/package.json | 2 +- extensions/lmstudio/package.json | 2 +- extensions/lobster/package.json | 6 +- extensions/logbook/package.json | 4 +- extensions/longcat/package.json | 6 +- extensions/matrix/CHANGELOG.md | 5 + extensions/matrix/package.json | 8 +- extensions/mattermost/package.json | 13 +- extensions/memory-core/package.json | 4 +- extensions/memory-lancedb/package.json | 6 +- extensions/memory-wiki/package.json | 4 +- extensions/meta/package.json | 6 +- extensions/microsoft-foundry/package.json | 2 +- extensions/microsoft/package.json | 2 +- extensions/migrate-claude/package.json | 4 +- extensions/migrate-hermes/package.json | 4 +- extensions/minimax/package.json | 2 +- extensions/mistral/package.json | 6 +- extensions/moonshot/package.json | 6 +- extensions/msteams/package.json | 14 +- extensions/mxc/package.json | 6 +- extensions/nextcloud-talk/package.json | 17 +- extensions/nostr/package.json | 12 +- extensions/novita/package.json | 6 +- extensions/nvidia/package.json | 2 +- extensions/oc-path/package.json | 4 +- extensions/ollama/package.json | 2 +- extensions/onepassword/package.json | 2 +- extensions/openai/package.json | 2 +- extensions/opencode-go/package.json | 6 +- extensions/opencode/package.json | 6 +- extensions/openrouter/package.json | 2 +- extensions/openshell/package.json | 6 +- extensions/parallel/package.json | 6 +- extensions/perplexity/package.json | 6 +- extensions/pixverse/package.json | 8 +- extensions/policy/package.json | 4 +- extensions/qa-channel/package.json | 4 +- extensions/qa-lab/package.json | 6 +- extensions/qianfan/package.json | 6 +- extensions/qwen/package.json | 6 +- extensions/raft/package.json | 8 +- extensions/reef/package.json | 2 +- extensions/runway/package.json | 2 +- extensions/searxng/package.json | 6 +- extensions/senseaudio/package.json | 2 +- extensions/sglang/package.json | 2 +- extensions/signal/package.json | 6 +- extensions/slack/package.json | 18 +- extensions/sms/package.json | 6 +- extensions/stepfun/package.json | 6 +- extensions/synology-chat/package.json | 10 +- extensions/synthetic/package.json | 6 +- extensions/tavily/package.json | 6 +- extensions/teams-meetings/package.json | 8 +- extensions/telegram/package.json | 6 +- extensions/tencent/package.json | 6 +- extensions/tlon/package.json | 8 +- extensions/together/package.json | 2 +- extensions/tokenjuice/package.json | 8 +- extensions/tts-local-cli/package.json | 2 +- extensions/twitch/package.json | 6 +- extensions/vault/package.json | 2 +- extensions/venice/package.json | 6 +- extensions/vercel-ai-gateway/package.json | 6 +- extensions/visitor-access/package.json | 2 +- extensions/vllm/package.json | 2 +- extensions/voice-call/package.json | 8 +- extensions/volcengine/package.json | 6 +- extensions/voyage/package.json | 6 +- extensions/vydra/package.json | 6 +- extensions/web-readability/package.json | 2 +- extensions/webhooks/package.json | 2 +- extensions/whatsapp/package.json | 8 +- extensions/workboard/package.json | 4 +- extensions/xai/package.json | 2 +- extensions/xiaomi/package.json | 6 +- extensions/zai/package.json | 6 +- extensions/zalo/package.json | 12 +- extensions/zalouser/package.json | 8 +- extensions/zoom-meetings/package.json | 8 +- package.json | 2 +- packages/ai/package.json | 2 +- packages/gateway-client/package.json | 2 +- packages/gateway-protocol/package.json | 2 +- .../official-external-channel-catalog.json | 46 +- 157 files changed, 1741 insertions(+), 607 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea094388f695..a3b0f090213f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,211 +3,1297 @@ Docs: https://docs.openclaw.ai 2026.8.2 release notes: https://docs.openclaw.ai/releases/2026.8.2 -## 2026.8.3 (Unreleased) +## 2026.9.1 + +### Highlights + +- **Diagrams in every chat:** Mermaid blocks now render as diagrams in the Control UI and in the native macOS, iOS, and Android apps, with enlarge previews and a retry when a diagram fails to render on mobile. (#134913, #135746, #135470, #135342) +- **From install to chat in one prompt:** fresh installs (including `npx openclaw@latest`) get a quick-start lane that detects existing Claude Code or Codex logins and API keys, verifies them live, and opens the web dashboard from a foreground Gateway; the full wizard stays available as Custom setup. (#134221) Thanks @fuller-stack-dev. +- **Personal skill libraries on shared Gateways:** keep your own skills beside the workspace set with `openclaw skills library`, import them from ZIP archives, and share or publish them per identity on team Gateways. Related #133602. (#134068) +- **Updates that leave you working:** `openclaw update` now rolls back the npm candidate when the post-update Doctor fails, preserves your configuration and secret references across a failed upgrade, hands failures to a built-in triage agent, waits for plugin readiness before restarting, accepts npm 12 local archives, lets agent-launched updates finish outside the Gateway process tree, and proceeds without a Gateway service instead of refusing when no service manager exists (users on 2026.8.2 without a service manager should run `openclaw update --no-restart` once). Related #134204, #135655. (#135462, #134490, #134865, #134699, #134663, #136316, #135701) Thanks @fuller-stack-dev, @Patrick-Erichsen, @vyctorbrzezowski, @jalehman, @devzeroLL, and @obviyus. +- **A Gateway that stays up:** startup recovers under load and with large agent rosters, malformed legacy cron rows are quarantined instead of blocking boot, migration warnings degrade the Gateway instead of refusing to start, local model servers become the preferred OOM victims, and Windows Gateways stay online after an agent restart. Related #135743, #134458, #135150, #136275, #120134, #134851. (#132186, #135773, #134704, #135713, #136276, #134549, #134853) Thanks @galiniliev, @LiuwqGit, @obviyus, @609NFT, @Nielsh82, @Zak-Finance, @vincentkoc, @nerclid, @w1130150306, and @cmanrav. +- **Codex approvals that stick:** "Allow Always" is durable for MCP tools on OpenClaw-configured servers, tool approvals follow the session's posture, and approvals granted to an active Codex placement are reused instead of asked again. Related #132369. (#136019, #135812, #132370) Thanks @jalehman. +- **Approvals reach your chat:** when a delegated system agent proposes a config change or Gateway restart, the approval card is delivered to the originating channel (Telegram topics included) with the requester's title, instead of stalling silently. Related #136083. (#134670, #136091) Thanks @obviyus. +- **Android catches up with the web UI:** the chat screen, sidebar navigation, and appearance settings match the Control UI, the composer grows to six lines, and recording is offered when dictation is unavailable. Related #125322. (#134939, #135923, #135794) Thanks @IWhatsskill, @obviyus, @BennyAI2, and @RaviTharuma. ### Changes -- **macOS releases:** retain signed artifacts and Apple submission IDs so interrupted notarization can resume without rebuilding the app or symbols, while preserving source, hash, signature, and approval checks. -- **Release validation:** defer beta candidate Parallels smoke to postpublish `release:beta-smoke` by default, keep stable/full prepublish coverage, and bound nested release workflow monitors with explicit job timeouts. -- **Developer workflow:** remove the obsolete scoped-commit helper and use standard Git commands in isolated worktrees. -- Fixed Crabbox hydration on unprivileged cloud sandboxes by falling back to a user-writable pnpm store when the shared `/var/cache/crabbox` cache is unavailable, preserving the hardlink import mode after hydration, and making Docker an explicit routed capability instead of an implicit install requirement. - -- **Model setup capability review:** let macOS and Control UI users review runtime plugin capabilities during activation, preserving the selected model route when review is declined or cancelled. (#133793) Thanks @coygeek. -- **Channel plugin ingress monitors:** add a shared plugin SDK monitor for durable admission, polling, pruning, claim identity validation, adoption handoff, and shutdown, and migrate IRC, Synology Chat, and Google Chat to the shared lifecycle. -- **TUI fuzzy selectors:** delegate list matching to pi-tui, adding slash-token and alpha-number matching while removing the local matcher fork. -- **GPT-5.6 Ultra and runtime switching:** support Sol, Terra, and Luna across OpenClaw and Codex engines; keep model, runtime, and thinking selection atomic through `/model` and fallback; and add live matrix coverage for both harnesses. (#98021) Thanks @anyech. -- **Meta provider:** add bundled `muse-spark-1.1` model support with Responses API streaming, tool calls, encrypted reasoning replay, onboarding, and standalone npm/ClawHub distribution. (#102873) Thanks @HamidShojanazeri. -- **Android chat agent selector:** switch the active agent directly from the live chat screen while keeping chat, Talk mode, and home canvas on the same canonical session. (#80422) Thanks @bcperry. -- **Gateway host status:** show the connected Gateway's host, network address, OS, runtime, uptime, CPU, memory, and disk details in Control UI Settings. (#100478) -- **iOS offline chat:** pre-paint recent sessions and canonical transcripts from a protected, bounded per-gateway cache, keep sending disabled offline, and purge cached conversation text when pairing is reset. (#100194) -- **Slack progress indicators:** use Slack's native assistant thread status and rotating loading messages by default while keeping acknowledgement reactions static; lifecycle reaction updates now require `messages.statusReactions.enabled: true`. -- **Control UI Talk controls:** keep voice, model, sensitivity, and other realtime defaults in Settings → Communications → Talk, and use the composer microphone caret to select any browser audio input. (#101046) -- **Cron model selection:** choose an agent-turn model in Control UI Quick Create and show configured or default models in cron job rows and details. (#95341) Thanks @ly85206559. -- **Control UI GitHub previews:** show issue and pull request state, title, author, activity, comments, and change statistics in hover and keyboard-focus cards. (#100434) -- **Logbook work journal:** add a disabled-by-default bundled plugin that turns paired-node screen snapshots into a private timeline, daily standup, and timeline-grounded Q&A in a plugin-contributed Control UI tab. (#99930) -- **Control UI message context:** reveal per-message token, context, and model details from the timestamp on hover or activation instead of showing a separate Context button. -- **Control UI session titles:** reveal truncated recent-session names with a reduced-motion-safe hover animation. -- **Control UI sidebar navigation:** show a small customizable pinned destination set, keep the remaining pages under More, move Settings to the footer, and persist sidebar customization in the browser. (#100296) -- **Control UI sidebar usage:** remove the provider usage quota row from the expanded sidebar while keeping usage details available in the chat composer and Usage page. Thanks @shakkernerd. -- **Android chat code highlighting:** render fenced Kotlin, Swift, TypeScript, JavaScript, Python, Bash, and JSON blocks with bounded, theme-aware syntax colors while preserving plain rendering for unknown, partial, or oversized blocks. (#100217) -- **Gateway TTS playback:** add an operator-scoped `tts.speak` RPC that returns configured-provider speech as inline whole-clip audio for remote clients. (#100708, #100770) -- **Control UI history rendering:** reuse parsed tool cards across transcript views, skip inactive tool-title preparation, and avoid redundant browser chrome updates while speeding up configuration-tier matching. (#134369) +- **Personal GitHub accounts:** connect "My GitHub" beside the system account in your profile, publish pull requests under an explicit personal identity, and switch sessions without re-verifying credentials every time. (#133799, #136223) +- **Model setup that shows how you are signed in:** Model Setup lists account versus API-key access with the runtime-reported email for Codex and Claude candidates, the catalog "+" opens the native Codex or Claude CLI in a terminal, and the provider defaults page autosaves with a simpler model picker footer. Related #136068. (#136521, #136230, #134813, #136160) Thanks @Patrick-Erichsen. +- **New models and usage:** support Anthropic Fable 5.1 from shared model metadata, show SuperGrok usage in `openclaw models` and the usage panel, keep GPT-5.6 Ultra selected across runtime boundaries and configured native accounts, and keep Sonnet 5 pricing current on Vertex. Related #135623, #135991, #135664. (#135638, #135766, #135397, #136061, #135761) +- **Local and configured providers:** discover llama.cpp models behind web-app endpoints, keep local Ollama routes selectable, auto-enable the Google provider plugin when it is configured, retain externally authenticated providers in the model menu, and refresh model catalogs after auth or config changes without a restart. Related #135361, #134731, #135221, #134516. (#135445, #135095, #135239, #135046, #134361, #135063, #135353) Thanks @gaoanze888, @Bloodis94, @obviyus, @BoatAngle, @Solvely-Colin, and @goslingmanagment. +- **Agent working directories and worktrees:** set `agents.defaults.cwd` or a per-agent `cwd` and describe directory roles in the prompt, configure a global `worktreeRoot`, and run up to 100 managed checkouts without sessions being rejected at the limit. Related #134848, #135852. (#135080, #134872, #135885, #135989) +- **Configuration controls:** `cron.skipMissedJobs` skips missed recurring jobs at startup, `blockedHostnames` on the SSRF policy blocks configured hosts for browser, web fetch, and webhooks, `config set` accepts `--expect-current-json`, `--expect-current-absent`, `--dry-run`, and `--strict-json`, and `channels..enabled: false` no longer loads that channel plugin. (#135071, #135097, #136137, #136211) Thanks @vincentkoc. +- **Memory maintenance:** `openclaw memory reset` rebuilds derived indexes without deleting sessions, and recall outcomes from active memory are surfaced to the model. Related #135086. (#135653, #135193) Thanks @Alix-007, @obviyus, and @wave-workflow. +- **Codex plugin:** preserve native history in supervised message forks, let idle chats resume while other chats run, stop interrupting long quiet native turns, keep configured MCP tools on native fallback, honor the user's time zone, keep replies working after sub-plugin config changes, keep inbound audio for automatic voice replies, hide saved reasoning unless enabled, hide node exec when no capable node is connected, keep Codex streams connected under load, and move managed installs to Codex 0.152.1. Related #134552, #136143, #99272, #122233, #136015, #135618, #135571, #135978, #135966, #135338. (#134660, #136196, #134755, #134941, #136172, #135863, #135884, #136008, #136000, #135577, #136184, #136705) Thanks @obviyus, @ernestrolfson-design, @itsuzef, @NianJiuZst, @davidcittadini, @vyctorbrzezowski, @hyper-sdn, and @tzlwn1. +- **Session naming and switching:** new-session names are prepared after idle typing, switching sessions in large lists is faster with lighter sidebar work and payloads, sidebar catalog groups are capped at five sessions, and New Session and Chat do less startup work. Related #133702. (#133724, #135021, #135332, #135574, #136362, #136021, #136040) Thanks @fuller-stack-dev. +- **Control UI layout:** sidebar controls move into the agent header, session context menus are regrouped, the accent color lives with the theme, dashboard widgets fill mobile width, the shared Agent picker and settings pages are streamlined with loading skeletons, hovercards show participants, and Gateway suspension appears in account footers. Related #135506, #135535, #132147. (#134365, #135526, #135547, #133814, #134680, #134684, #134659, #134636, #136542, #136220, #134478, #134764) Thanks @vyctorbrzezowski, @MoerAI, and @Patrick-Erichsen. +- **Chat polish:** compaction gets a folding shimmer, the composer has a stable accessible name and accepts the next prompt right after send, Escape closes the visible session popover, dropdowns reopened stay dismissible, keyboard navigation survives submenu switches, and chat errors can be copied without expanding them. Related #136441, #134997, #135613, #136070. (#135988, #133829, #135345, #136445, #135006, #135629, #136085) Thanks @aniruddhaadak80 and @Takhoffman. +- **macOS app:** a streamlined native chat composer, a browser sidebar that can expand past half width, lower idle menu-bar CPU, notifications when background sessions finish, a Talk overlay that survives quick toggles, and speech recognizers reused between voice captures. Related #136157, #136562, #127645. (#135608, #136168, #136572, #136519, #135731, #135401) Thanks @HuzaifaChaudary and @Colton-Harris. +- **iOS and watchOS:** open session dashboards without nested Control UI, disclose model targets and enforce availability, show the latest output when reopening chats, keep Watch and realtime voice replies with their own turn, and explain when a spoken reply times out. Related #134306, #135251, #135693. (#132983, #135044, #135429, #135697, #135795, #135765) Thanks @fuller-stack-dev and @goslingmanagment. +- **Linux desktop:** first-run Gateway choices work without the CLI installed. Related #135565. (#135650) +- **Channel controls:** Feishu and Matrix deliver the buttons an agent reply offers, and LINE tells the agent which buttons it renders, keeps the words a quick-reply prompt leaves behind, lets a group mention reach the turn that answers it, and gives up a card LINE would refuse instead of losing the reply. Related #132739, #134975, #135187, #135228. (#135255, #133268, #134915, #134976, #135195, #135229) Thanks @edenfunf and @ml12580. +- **CLI:** `channels add/login/logout/remove/resolve` accept `--agent`, `mcp --json` emits a JSON failure envelope, zsh and Bash completions escape descriptions and option values correctly, heartbeat status shows Gateway ages, `sessions tail` reports recorded trajectory outcomes, secrets JSON failures stay machine-readable, device approval hints keep their profile context, and TUI picker cancellation routes through shared input. Related #132347, #46932, #136089, #136406, #136632, #136556, #135089, #133128. (#135505, #132379, #64490, #135114, #136557, #136093, #136407, #136142, #136633, #133151) Thanks @wangmiao0668000666, @EdenKangdw, @walker1211, @jeffrey4341, @qingminglong, @obviyus, and @aniruddhaadak80. +- **Plugins and skills:** renamed official plugins migrate by their legacy npm package name, plugin updates require capability consent when prior acceptance is stale while verified first-party plugins are exempt, plugin uninstalls persist across a Gateway restart and keep channel settings, and skill Workshop content, read-only diagnosis, and channel setup are corrected. Related #134076, #135726, #136591. (#130894, #134172, #134933, #135460, #135729, #134759, #134871, #136600, #136615) Thanks @cxyhhhhh, @RileyJJY, @beastyrabbit, @devzeroLL, @obviyus, and @Patrick-Erichsen. +- **Uninstall and backups:** `openclaw uninstall` defaults to removing only the service and keeps user data, Claude migration backups preserve overwritten generated skills, and backups exclude disabled workspaces, tolerate ACPX-generated symlinks, find managed schedules by identity, keep Git failure diagnostics, and retain the active config through volatile filtering. Related #125694, #127403, #135218, #136159, #136118, #136665. (#134299, #134302, #135830, #136215, #136133, #135455, #136666) Thanks @PollyBot13, @kodi, @obviyus, @ericcaiwx-star, @jarvismazz, @LiuwqGit, @wave-workflow, @ly85206559, and @devzeroLL. ### Fixes -- **Update readiness:** select declared health-check owners before loading plugin APIs, preventing unrelated optional Doctor checks from interrupting upgrades while retaining mandatory readiness failures. +- **Ingress and token safety:** bound concurrent pre-auth reads on SMS webhooks, stop delivering commands to a Watch node after its device is revoked, require the per-process nonce on the Copilot Azure BYOK proxy, isolate webhook rate limits by client, let authorized scoped node tokens be managed by their owner, and reject oversized A2A JSON-RPC batches and responses. (#136504, #135904, #134781, #134622, #135617, #134603) Thanks @drobison00 and @eleqtrizit. +- **Secrets stay redacted:** `config.get` no longer returns unredacted pre-migration snapshots, blank sensitive fields stay editable without being treated as secrets, systemd unit backups no longer leak Gateway tokens, and iOS omits deep-link URLs from logs. Related #135649, #131781. (#134940, #135798, #131786, #134738) Thanks @SunnyShu0925, @markhaines, @vyctorbrzezowski, and @eleqtrizit. +- **Browser and filesystem boundaries:** Chrome MCP `--browserUrl` endpoints obey the CDP reachability policy, unreviewed Chrome MCP upgrades are blocked, unsupported fill field keys are rejected, sanitized temp file names reject dot segments, and memory sync skips symlinked or non-regular workspace files instead of aborting. Related #135845, #131231, #134967. (#135857, #136121, #131400, #135803, #135042) Thanks @LiuwqGit, @obviyus, @srb11e, @teddytennant, @ruel225, and @kiranvk-2011. +- **Authority boundaries:** agent creation stops after delegated authority closes, system-agent setup stops writing after its run closes, unauthorized native `/compact` returns no response, clients are paused when a role requires a verified identity, guest coding works again in private sandboxes, and dashboard GitHub Actions reads use the agent identity. Related #136081, #136219, #133955, #37634, #135515. (#136090, #136247, #131408, #136420, #135702, #135740) Thanks @igs-rogenlo, @obviyus, @aoclaw-glitch, and @whyuds. +- **Upgrade data safety:** identical session event replays migrate cleanly, nested session writes keep their order, schema-17 session repair is atomic, legacy cron rows keep their enabled state and delivery intent, credentials replaced during cleanup are preserved, workspaces survive legacy agent-list upgrades, and per-agent memory search survives Doctor. Related #134455, #131113, #135634, #135635, #135637, #135656, #134256. (#134568, #131456, #134272, #132868, #135736, #134892, #134760) Thanks @shakkernerd, @gaoanze888, @Grynn, @RileyJJY, @obviyus, @CanReader, and @vdruts. +- **Doctor converges:** `doctor --fix` finishes on empty workspace attestations, stale workspace setup loops resolve, incomplete exec-approvals migrations fail loudly and empty stubs retire, contaminated device-pairing records no longer crash migration, Windows Doctor and retained workspace recovery are unblocked, and legacy transcript checks are left to migration. Related #134445, #134331, #135437, #135968, #134340, #131770. (#134641, #135755, #135454, #135981, #134483, #136578, #134765) Thanks @leilei3167, @obviyus, @rosssaunders, @jjjhenriksen, @Deregtx, @qdivan, @samson1357924, @LiuwqGit, and @sblindt. +- **Doctor keeps your config:** authored values and agents survive repair, official plugin config is preserved before install, external plugin payloads are kept, keyed multi-agent rosters and explicit agent rosters are repaired and persisted, and stale npm plugins are recovered during update repair. Related #134407, #134353, #135450. (#135671, #134717, #135791, #134706, #134758, #135451) Thanks @fuller-stack-dev, @obviyus, @abacha, and @xiaomijituan. +- **Shared credential migration:** interrupted migrations recover, stranded credentials are restored, redundant relocation subsets converge, relocation conflicts are diagnosed with forced-login owners cleared, relogin repairs stale profile order, custom provider SecretRefs survive Doctor, the durable auth order is published on a running Gateway, and shared auth health reports without a default agent. Related #132605, #132979, #135385, #135140, #135079, #135734. (#134952, #135346, #135096, #134808, #135739, #135355, #135357, #135847, #135443, #134902, #133978) Thanks @jodok, @fuller-stack-dev, @Deregtx, @obviyus, @mattcbianco, @dannevang, @yetval, @josephbergvinson, and @lzhan011. +- **Credential writes and state directories:** CLI and Gateway state-directory split-brain is detected before credential writes, Model Setup no longer leaves a stale claude-cli key after Claude CLI activation, retained device-auth files and unconfigured agent databases are explained, and stale OpenAI doctor route pins are repaired. Related #134379, #101672. (#134403, #134779, #135295, #102180) Thanks @obviyus, @leilei3167, @aaajiao, @PollyBot13, @849261680, and @cpwilhelmi. +- **Subagent completions arrive:** completions are delivered after busy parent turns, background completion rejections are caught, empty completions are recorded, unsent completions are no longer reported as delivered, rejected requester wakes settle, model reroutes are shown in the completion including rerouted siblings in batched requester wakes, and Swarm completion guidance matches delivery. Related #134186, #131734, #135633, #135692, #133517. (#136423, #131735, #135846, #136524, #136033, #135531, #133660) Thanks @svdwalt007, @ruel225, @louisfy, @obviyus, @jakestenger, @Grynn, and @MertBasar0. +- **Compaction and context accounting:** native compaction is serialized with session writers and kept in one persistent transcript marker, cached usage is no longer overcounted, context usage survives Anthropic proxies that omit usage or cache fields, and status keeps context usage after tool-only turns. Related #99843, #126436, #135530. (#135441, #136169, #99864, #126473, #135467, #134634, #135580) Thanks @jjjhenriksen, @obviyus, @LZY3538, @ayaangazali, @jrex-jooni, @Oliverbot26, @Yigtwxx, @goslingmanagment, @dmsrg399, and @VACInc. +- **Fallback and retries:** Anthropic refusals are terminal instead of resending, model fallback no longer cycles every provider when the session already holds a turn claim, transient LLM retries have one failover owner that surfaces a persistent outage sooner, and failover counters appear in console logs. Related #134968, #134187. (#134980, #134219, #134281, #135844) Thanks @Marvinthebored, @obviyus, @tzlwn1, and @svdwalt007. +- **Replies that reach the conversation:** stale session dispatches are refreshed so a message after a reset is not dropped, deliveries mirrored into another session are no longer silently lost, an interrupted user message stays in context after restart recovery, fenced code survives duplicate-block collapse byte for byte, commentary progress shows before final validation with unique segment identities, and requester sessions recover after a settle-wake timeout. Related #135149, #132766, #135881, #135882, #135949, #134971, #135231. (#135154, #134083, #136023, #135945, #135954, #135081, #135854) Thanks @brettdaman, @obviyus, @edenfunf, @VACInc, @abacha, @leilei3167, @yetval, @ruel225, @JosephNatsu, @akagifreeez, @tomroberts78, and @nikolascostello. +- **Cron and heartbeat:** cancelled runs settle without ending cron retries early, `NO_REPLY` is preserved after tool calls, proven-not-sent announce deliveries retry, failure-alert outcomes persist, one-shot retries survive startup recovery, immediate main-session wakes are admitted with heartbeat disabled, the first-alert preamble shows once for isolated routes, the configured watchdog timeout is honored, scheduled replies bind to the published runtime, and ISO dates honor time zones. Related #133743, #133785, #135658, #135836, #134500, #135205, #135435, #136225. (#133747, #135919, #135985, #135516, #135083, #134648, #135849, #135925, #136256, #135973, #135155) Thanks @shakkernerd, @leilei3167, @obviyus, @Frank683456, @gaoanze888, @yetval, @RayWangyangMa, @rwinkelman, @sunlit-deng, @LowCode191, @virtexvirtuoso, @xialonglee, @jaxonparrott, @Famyoff, and @brettdaman. +- **Cron configuration:** kind changes work without an env object, isolated `cron add` no longer hides a fail-closed announce route, jobs are created with configured Codex app-server auth, legacy shorthand schedules validate their payload, history pages after visibility filtering, Doctor refuses store rewrites another process committed after its snapshot, and account identities are no longer suggested as recipients. Related #134895, #136042. (#134639, #135003, #134525, #135829, #136043, #127999, #134368) Thanks @solomonneas, @ericcaiwx-star, @obviyus, @sjf-oa, @sjf, @teddytennant, @yetval, and @BryanTegomoh. +- **Sessions and runs:** a cyclic session parent chain no longer hangs context building, the Gateway survives late CLI output after a timeout, restart drain counts as ingress idle, stale CLI recovery cannot replace newer sessions, yielded CLI spawns settle, BOOT.md runs when a previous boot session exists, oversized transcript archives stream instead of loading whole, queued cold turns keep CLI continuity, and worktree restore capacity advice is correct. Related #132581, #124343, #134748. (#131567, #132582, #133871, #135168, #134974, #134831, #136171, #136283, #136644, #136717) Thanks @igs-rogenlo, @TARSDrakon, @SebTardif, @obviyus, @mushuiyu886, @VACInc, @aoclaw-glitch, @miguelarios, @efe-arv, @liri-ha, and @anyech. +- **Tool results and edits:** `oc-path` patches preserve exact edit bytes, PDF and image analysis survive Code Mode, plugin tools are kept for namespaced allowlist entries, exec selects capable nodes and reports its target, failed `/bash` commands show their real exit status, `sessions_spawn` declares its completion-message expectation, and failed-exec warnings are preserved on silent turns. Related #136530, #132750, #131765, #133385, #75848, #135068. (#136531, #135037, #132753, #131767, #133414, #136570, #135119, #132756) Thanks @tommyjoseph, @vyctorbrzezowski, @MoerAI, @alfredjbclaw, and @sashankh. +- **Markdown, links, and media:** task lists survive chunk boundaries, literal Markdown and balanced image URLs are preserved, complete markdown links are parsed and link preprocessing is cancelled with the reply, UTF-8 attachments are recognized across sniff boundaries and keep their types when chunks are reused, inferred text is preserved while downloads are rejected promptly, fractional storage limits are reported accurately, and attachment failure cards stay out of durable model history. Related #127637, #135921, #135922, #136397, #135061, #136139, #136140. (#135200, #136228, #135341, #132883, #135227, #135232, #135928, #136402, #135185, #136685) Thanks @teddytennant, @obviyus, @SunnyShu0925, @ly85206559, @gaoanze888, and @snls1994. +- **Slack:** replies to existing threads send again, Agent View DMs keep their per-root sessions after a Gateway restart in HTTP mode and collapse correctly when Slack rejects the prompts probe, short replies arrive before progress finalization, quiet previews stay on the latest preamble, socket and relay accounts start without an unused signing secret, pre-dispatch rejections are surfaced, agent RPC messages use the configured identity, and Enterprise thread lookups are not duplicated. Related #126872. (#136566, #136559, #136510, #136460, #134716, #136092, #134827, #132723, #122078, #121598) Thanks @danielduerr, @pash-openai, @zhangguiping-xydt, @Iskam31, and @mikasa0818. +- **Discord:** webhook reply limits and delivery outcomes are preserved, missing response IDs no longer falsely confirm delivery, model picker choices apply without false failures, session-busy notices honor reply visibility, error replies stop after a voice consult is cancelled, and voice capture is bound to one lifecycle owner. Related #135946, #135947, #133550, #135442, #135340. (#135963, #136620, #135382, #135444, #135380, #135870) Thanks @Call44 and @LZY3538. +- **Telegram and WhatsApp:** durably queued Telegram callbacks are acknowledged promptly, WhatsApp replies are sent unquoted when the quote cache misses so bubbles never render blank, and Doctor reports shadowed ack emoji and lossy acknowledgement scope migrations. Related #133294, #127948, #119317, #112796. (#133379, #127959, #119501, #129825) Thanks @zhangguiping-xydt, @Paeddy87, @Finn763, @markswitch83, @harjothkhara, @obviyus, @abacha, and @yetval. +- **iMessage, Signal, Google Chat, Teams, Matrix, Feishu, Twitch, Tlon:** iMessage sends fail fast after the private-API bridge dies and remote attachments survive materialization, Signal publishes terminal status on permanent SSE rejection and rejects invalid UTF-8, Google Chat labeled links keep labels with spaces, Teams keeps thread context without a replyToId and Doctor can load its state checker after a source build, Matrix keeps code out of spoiler collisions and persists its sync cache after schema upgrades, Feishu validates document API outcomes, Twitch names the `accessToken` key in setup errors, and Tlon preserves parser progress. Related #135860, #136104, #129344, #136499, #134741. (#134572, #136301, #136178, #121569, #136151, #129345, #136509, #128453, #134742, #135106, #135421, #135181) Thanks @omarshahine, @zhangguiping-xydt, @obviyus, @zqchris, @masatohoshino, @sunlit-deng, @ericcaiwx-star, @KimOckHyun, @amalysh, @ruel225, @w9n, and @ly85206559. +- **Channel accounts and delivery:** HTTP routes are scoped to account lifetimes, rejected webhook connections are released after answering, failed plugin accounts appear in status and health, explicitly disabled manifest accounts are omitted, explicit channels resolve through the scoped plugin registry, capability timeout reports stay alive, message plugin cleanup runs before the CLI exits, and the selected agent is preserved during plugin discovery. Related #132886, #126808, #135573, #136538, #136563. (#133297, #126818, #135082, #135417, #135831, #136539, #136564, #135505) Thanks @zhangguiping-xydt, @goffern, @edenfunf, @obviyus, @ly85206559, @ruel225, and @TailsProwerWorks. +- **Voice, Talk, and TTS:** voice-call setup reports missing agent ownership, diagnostic logs stream with backpressure, host cancellation is not reported as a tool failure, Talk consults keep their owner across clients and internal prompts out of later context, narration requests are cancelled when their turn ends, terminal command replies stay text-only, local CLI synthesis inherits request timeouts, OpenAI OAuth audio transcription works again, and Volcengine TTS rejects invalid UTF-8. Related #132619, #134883, #126730, #82582, #96135. (#134739, #134838, #134924, #135031, #135423, #134839, #134802, #135222, #135855, #134010) Thanks @felixboenkost-droid, @sunlit-deng, @astra-openclaw, @najef1979-code, @yungchentang, @kAIborg24, and @ZengWen-DT. +- **Web chat and Control UI recovery:** replies to attachment-only assistant messages are restored, replies appear above queued prompts and hydrated replies reconcile by identity during recovery, WebChat reset denials show without admin scope, Ask OpenClaw connections and conversation recovery are restored, and cloud sessions can be restored from Chat or kept stopped with cleanup failures surfaced. Related #135507, #135533, #134679, #134727, #134506. (#135393, #135568, #135715, #134696, #134776, #135024, #135583) Thanks @starship863, @jalehman, @rwinkelman, and @obviyus. +- **Control UI chat:** new-session sends show immediately under load, sent images stay visible during history handoff and stable on hover, loaded images survive Gateway outages, late dictation transcripts are kept after Stop, the selected agent stays on native progress cards and dashboards, interrupted runs retire from history, commentary reconciles by run and item identity, and speaker names survive conversation exports. Related #135026, #135156, #136437. (#136069, #136072, #136440, #136446, #135109, #135426, #134714, #134457, #134888, #136439) Thanks @obviyus, @jadabreu, @rwinkelman, @Synthetic2802, and @RomneyDa. +- **Control UI details:** wildcard tool policies display correctly, compact output token counts return, tool-only model auth rows are ignored, the model picker discloses its write scope, unavailable agent harnesses and trusted-proxy login failures are explained, OAuth errors are concise, heartbeat scratch loads read-only, automation links open beyond the loaded page, equivalent Usage filters clear from their menus, format-constrained settings stay editable, the chat face switch gets icons and embedded visibility with standardized menu options, sharing member lists load with skeletons, model provider refresh status is aligned, Inbox stays out of Settings, and the macOS composer shows the Default permission icon. Related #134306, #134304, #135556, #134916, #135457, #135948, #136568, #135720, #134409. (#135786, #135951, #134218, #134473, #135118, #135584, #135112, #135508, #136012, #136569, #136603, #136602, #136646, #136647, #136648, #136649, #136650, #136609, #135722, #134413) Thanks @wantosure, @fuller-stack-dev, @goslingmanagment, @shakkernerd, @gaoanze888, @obviyus, @itsuzef, @Patrick-Erichsen, and @vyctorbrzezowski. +- **Control UI sessions and boards:** pinned sessions show a filled neutral pin without repeating titles, group titles stay on one marquee line, question sessions stay on one line, rewind hides while the agent works, task reviews fill the side panel, tall task progress scrolls, board widgets replace on put and Remove matches its menu, Workboard task links recover after cursor rejection, and free-text questions are separated from optionless ones. Related #134647, #135705, #134477. (#134775, #134651, #135523, #136606, #135521, #135926, #134517, #135748, #136637, #136619, #134598, #135524, #136607, #136614, #136527, #136668, #134631, #134732, #134860, #134791, #134653, #134833, #135008, #135681, #135957, #134686, #135724, #136002) Thanks @Patrick-Erichsen, @obviyus, @asgeirtj, @VACInc, @teddytennant, @shakkernerd, @goslingmanagment, and @Grynn. +- **Pull request tooling in the Control UI:** an explicitly approved replacement head is recovered, merge receipts finish when main advances, merges invoked from another checkout are recovered, ignored files are preserved, quota failures are distinguished from authentication errors, and GitHub sign-in works when anonymous API quota is exhausted with the CLI preflighted before device authorization. Related #135496, #135335, #134701, #135872, #135028. (#135622, #135396, #134778, #135500, #135657, #135873, #134724, #135301) Thanks @mushuiyu886, @obviyus, and @jadabreu. +- **macOS app fixes:** confirmed setup cancellation and onboarding failures are shown clearly with retry actions, misleading AI setup progress is replaced, computer input works after execution, bounded native pipe reads and final drains are centralized, native notifications are cancelled before side effects, and completions are delivered before notification status arrives. Related #134573, #134800, #134621, #136206, #136207, #136208. (#134654, #134756, #135041, #134689, #136214, #135796, #136683) Thanks @gaoanze888 and @wbstrbt. +- **iOS fixes:** assistant text selection survives long press, duplicate replies after a history refresh are gone, and dependency resolution works with WebRTC 152. Related #135217, #135249. (#135430, #135789, #134942) Thanks @Solvely-Colin and @nikolaihack. +- **Android fixes:** sends are prevented with auth-unavailable models, credentials are masked with correct secret input behavior, reconnect cleanup stays scoped to its connection, reconnected and queued messages no longer get stuck or reappear after deletion, health is rechecked when Refresh races a queued send, chat choices and live appearance updates are preserved, narrow composers stay readable, the settings conversation keeps its position, and refresh results and progress stay current. Related #135874, #136047, #128926, #136638. (#134884, #136352, #135878, #135961, #136161, #136413, #136173, #135432, #136550, #136643) Thanks @fuller-stack-dev and @aniruddhaadak80. +- **Installers:** Windows installs tolerate npm stderr warnings, use basic parsing for MinGit downloads, and keep the portable Node extraction fallback; the installer no longer points at a log that does not exist; Docker images install `libgomp1` for managed llama.cpp and build the explicitly selected WhatsApp plugin; and source installs use isolated linking to reduce filesystem churn. Related #134638, #134439, #120659. (#134385, #134412, #135410, #134655, #134532, #120660, #135728) Thanks @ly85206559, @mohamedelrefaiy, @chelsealong, @henrique-simoes, and @fr-meyer. +- **Plugins:** orphan installs recover without weakening ownership, ambiguous copied plugin paths are rejected, build stamps are ignored in registry freshness, plugin load errors survive retries, complete config errors are reported, the Weixin package compatible with the current SDK is selected, scoped ClawHub specs match in uninstall warnings, optional hook-pack dependencies install, inspection diagnostics and configured policy are preserved, lifecycle-less prepared channel turns run, packaged setup and TSX build artifacts resolve, the persisted registry refreshes when source mounts change, and plugin updates rediscover restored payloads instead of reusing stale cached facts after a reinstall. Related #134321, #136357, #134657, #136046, #136594, #136595, #114020, #135990, #136455, #136456, #136516. (#134590, #136373, #134780, #134874, #93842, #134854, #135749, #136050, #136596, #135179, #135993, #135245, #135820, #134719, #136458, #136517) Thanks @MoerAI, @obviyus, @abacha, @LiuwqGit, @Dresch63, @RayWangyangMa, @axiom-ncis, @bladin, @teddytennant, @nissl24, @fridaylans2000-art, @jooey, and @ssaade01. +- **Memory:** automatic reindex recovers after concurrent writes, orphaned workspace locks recover after PID reuse, deep consolidation works with explicit ownership, clean transient CLI searches stay off the reindex path, index identity mismatches are attributed, unnecessary full rebuilds are avoided, replies stay responsive during legacy index repair, cache overflow is prevented during forced reindex, embeddings honor the environment proxy and resolve profile auth, and embedded session recall returns the newest history. Related #134332, #134999, #134687, #135459, #135641, #134337, #135414, #136656. (#134333, #135051, #135166, #135520, #135864, #136064, #135062, #135373, #134858, #134744, #135415, #136657, #131329) Thanks @TheAngryPit, @obviyus, @pengzh1, @gru-10k, @zhangguiping-xydt, @giangthb, @gaoanze888, @LifeViwer, @yetval, @CjTruHeart, @ThatGuySizemore, @Artemeey, @0x-Parzival, and @hartmark. +- **Model harness selection:** model selections without an activatable harness are rejected with the reason explained, utility completions route through the selected runtime, scheduled model aliases stay scoped to the selected agent, `models status` skips refresh with a matching agent directory override, harness policy reasons are preserved, and the Claude subprocess keeps its failure diagnostics. Related #134305, #134304, #135566, #134690. (#134837, #135118, #135711, #135069, #134862, #135206, #134794) Thanks @fuller-stack-dev and @goslingmanagment. +- **Providers and CLIs on PATH:** claude-cli connects through PATH shims, Windows bare commands resolve through PATHEXT with empty entries dropped, native Claude login is preserved for blank node-host credentials, the CLI-backend run honors the fallback delegation gate, Responses continuations survive admitted tool arguments and exclude tools from the request-equality check, zai honors `thinkingLevelMap`, DeepInfra refreshes estimates from native pricing, Model Studio cache defaults are honored, Bedrock rejects malformed embedding encodings, and OpenCode Go sends the required User-Agent. Related #135013, #134960, #134709, #135538. (#135124, #135138, #135807, #134932, #115405, #134423, #132951, #132697, #134893, #135093, #133716, #135588) Thanks @zhangguiping-xydt, @obviyus, @masatokawano, @gaoanze888, @Vasanthdev2004, @teddytennant, @MertBasar0, @hartmark, @wangjx-xydt, @RileyJJY, and @VACInc. +- **Local models:** llama.cpp context-size-exceeded is treated as overflow, managed release archives extract safely, managed server inspection responses are bounded, and local providers are stopped before Gateway shutdown. Related #133860, #134649. (#133888, #129035, #132490, #134890) Thanks @gokay-ai, @cursoragent, @Areson, @pgondhi987, @RileyJJY, @MoerAI, @obviyus, and @Deregtx. +- **MCP and tools:** OAuth-authenticated MCP requests carry a Content-Length, MCP runtimes are not evicted during requester resolution, MCP lint finishes when SQLite is busy, `agents_wait` deadlines stay monotonic, approval grant lifetimes are validated, terminal summaries release after nested calls settle, and tool-loop warnings are bucketed. Related #136204, #134605. (#136234, #134819, #134698, #135292, #133806, #135398, #135103) Thanks @LiuwqGit, @obviyus, @Volevanius, @qingminglong, and @pfrederiksen. +- **Browser tool:** tab enumeration has its own budget separate from the CDP handshake timeout, messages are no longer interrupted during startup recovery, standalone routing errors and cropped screenshots are avoided, native action cancellation is isolated by page, and stale group updates no longer revoke valid commands. Related #132452, #136464, #135176. (#135219, #135016, #135315, #136465, #135186) Thanks @SunnyShu0925, @obviyus, @alexph-dev, @jesse-merhi, and @rwinkelman. +- **Nodes and devices:** the `openclaw node` worker exits after a stop even with stdin held open, same-install CLI nodes are classified correctly, ambiguity between current node clients is preserved, recently connected nodes stay in list age filters, remote exec hides without an executable node, node wakes retry after clock rollback, presence expires after rollback and stays bounded, and the rejected setup-code warning is clarified. Related #135661, #136593, #136635, #135914. (#135665, #136604, #136636, #135936, #136067, #133354, #134737, #134740, #134795, #136654) Thanks @Colton-Harris, @obviyus, @qingminglong, @lzhan011, @0x-Parzival, and @eleqtrizit. +- **Gateway networking:** SSH tunnel stop awaits process reaping, probe tunnels are abortable and handle SIGINT/SIGTERM, listener timeouts ignore clock skew, long temp paths no longer break desktop tunnels, socat forwards that name OpenClaw are distinguished, the tailscale sudo fallback names the operator fix, Accept media-range precedence is honored, invalid `utcOffset` values are rejected, and usage peak hours survive daylight saving. Related #127457, #127591, #135706, #124567. (#133847, #135182, #135281, #135456, #133381, #135825, #118197, #124568, #135153, #125378) Thanks @aniruddhaadak80, @obviyus, @xialonglee, @ly85206559, @ericcaiwx-star, @cursoragent, @pengzh1, @ezimerman, @peterolkhov, @zyw02, @qdivan, and @tzlwn1. +- **Gateway serving and status:** encoded and symlinked Control UI assets load, stale 304 responses are avoided, retained asset memory is bounded, APNG icons go through the shared image policy, small hosts no longer get false RSS critical alerts, delivery queue warnings appear in detailed status, active probes are reported when the preferred account is unconfigured, wait deadlines are not reported as draining, terminal timeout reasons stay in the sidebar, session-observer failures show their real cause, and method discovery no longer loads session storage. Related #136442, #136443, #135606, #136106, #136415, #136640, #136598, #135305. (#136444, #135619, #136108, #136417, #136641, #134889, #136599, #135797, #135466, #135337, #135102, #135105, #136676) Thanks @vincentkoc, @LiuwqGit, and @Cobblestone-Digital1. +- **Sessions store and CLI selectors:** strict transcript appends work without a storePath, configured transcript stores are honored, incognito sessions stay in their explicit environment, ACP metadata comes from the selected agent, blank `--session-id`, `--session-key`, `--store`, `--every`, suspend wait, dead-letter, and agent selectors are rejected instead of silently defaulted, `--target-file` reads are bounded, and deeply nested config mutations are stack-safe. Related #136198, #136217, #136224, #136662, #129734. (#136201, #136221, #136227, #136280, #134797, #134799, #135742, #135270, #135848, #136664, #134957, #129918, #135273, #136574) Thanks @marmar9615-cloud, @obviyus, @qingminglong, @masatohoshino, @xialonglee, @SunnyShu0925, @hpyhandsome, and @SebTardif. +- **Skills and worktrees:** one profile cannot exhaust pending ZIP imports, Doctor reports plugin version drift after upgrades and blocked workspace migration cleanup, tailscale-managed ingress recovers after upgrades, concurrent session starts avoid duplicate Git work, canonical skill names survive discovery and the Workshop, and ordinary replies no longer trigger eager skill discovery. Related #135587, #136493. (#135593, #134719, #134751, #135394, #134912, #136495, #136716) Thanks @jjjhenriksen. +- **Config and terminal output:** the CLI suggests `config patch --file` when a shell strips JSON quotes, `openclaw config` shows approval allowlist no-op snapshots, tabbed table columns stay aligned, authored hyperlink destinations survive in the TUI, duration quantities are preserved across locales, and console trace stacks are kept without duplicate errors. Related #135164, #136573, #136468. (#135203, #136574, #136312, #136469, #133224, #136066, #135932) Thanks @SunnyShu0925 and @wojtek76. +- **Lower memory:** reduce memory spikes in catalogs, resets, and chat, release retained Gateway and Activity memory, cut memory held by transcript scans and chat views, decode and capture large command output with less memory, drop repeated JSON copies of Code Mode results, release completed log payloads and evicted queue entries, and reduce memory used by HTTP response bodies and CodeMode between tool calls. (#134722, #134891, #135326, #135189, #135894, #135898, #135918, #136030, #136416, #134954, #135040, #135183, #136567, #136340) +- **Faster replies and streaming:** less overhead for concurrent and long streaming replies, faster concurrent final-answer streaming, pending streamed replies kept current, reduced work during streaming event delivery, faster CodeMode and session lookup, reduced turn preparation, cheaper session metadata reads, lower approval tracking across concurrent runs, and faster fence-aware message chunking. Related #135750. (#136350, #135751, #136180, #136041, #136249, #136296, #134935, #134673, #136391, #136205, #135208, #135220, #135204, #135034, #135014, #134930, #135626, #135607, #136428, #136425, #136099, #135464, #135390, #135504, #135514) Thanks @quangtran88. +- **Faster startup and plugins:** faster Doctor bootstrap and cold Doctor in built checkouts, CLI-only code no longer loads at startup, plugin catalogs and known contribution owners avoid full scans, catalog worker imports are scoped, verified metadata is reused during startup, unused discovery is skipped for read-only catalog queries, the Claude Code catalog refresh no longer re-scans the projects tree on every poll, and shell commands have shorter cold starts. Related #136385, #135893, #134864. (#136500, #136399, #133105, #135260, #135953, #135486, #136141, #136020, #136222, #136124, #134581, #134807, #134812, #134814, #135169, #135172, #135091, #135073, #135121, #136063, #136080, #136162, #136398, #136401, #136403, #136381, #135998, #135986, #135942, #135931, #135077, #135048, #135007) Thanks @ly85206559, @zeroaltitude, @obviyus, @LiuwqGit, and @rwinkelman. +- **Faster UI, terminal, and logging:** cheaper Control UI history and config processing, side panel and Workboard styles load with their owners, Settings English is deferred, attributed Markdown and reply formatting allocate less, terminal tables and SGR handling avoid character arrays, and log formatting, payload counting, and tail trimming do less work. (#135851, #136186, #135131, #135950, #135725, #136014, #136389, #135473, #136451, #136479, #136380, #135602, #135625, #136435, #134979, #135974, #136028, #136393, #136404, #135476, #135477, #135475, #135597, #136450, #136457, #136418, #135094, #135107, #135116, #135162, #134978, #134988, #134998, #136377, #135135, #134746) Thanks @arpe1618 and @vincentkoc. +- **Compaction, updates, and diagnostics:** update recovery modules load only when an update starts, the Docker upgrade survivor stops before the package update, diagnostics keep explicit fleet ownership and read-only work off the SQLite writer lifecycle, maintenance leases renew during synchronous work, and worker state closes before its runtime directory is removed. Related #135684. (#135942, #135561, #135447, #136010, #134880, #134911) Thanks @fuller-stack-dev, @obviyus, @Grynn, and @rwinkelman. -- **Apple chat:** make queued messages immediately retryable after session-settings failures, while keeping retries bound to the exact failed attempt. +### Complete contribution record -- **macOS AI setup:** show confirmed capability-review cancellation and retry guidance directly instead of a misleading Gateway failure headline. (#134573) -- **Doctor memory:** keep Matrix migration codecs separate from the live client and avoid loading the ACP runtime when no legacy session records need inspection. -- **Agent prompts:** keep model-identity guidance conditional so ordinary requests are not mistaken for questions about the current model. +This audited record covers the complete 999239d745d9cf73b0bf5c8791944565ecd3fcf2..c0433bc59efc6a6ccde0363dd6f5dabbbbc950f3 history: 1,195 in-range PRs + 0 retained seed-only PRs = 1,195 unique PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact. -- **Update/Doctor:** preserve `update --no-restart` by requiring an offline managed Gateway during updater-owned repair and leaving restart ownership with the parent. -- **Bun Gateway:** restore Gateway health checks and agent connections under Bun 1.4 while preserving WebSocket frame limits and authenticated request scheduling. -- **Doctor recovery notes:** show interrupted auth-profile archive recovery failures and completions even when no further migration runs or another migration is declined. (#134009) Thanks @angeliti999. -- Matrix lifecycle: drain in-flight monitor tasks without deadlocking shared-client retirement, and reject late acquisitions after their owning task closes. -- Provider error handling: reuse prepared or already loaded provider hooks instead of cold-loading plugins during error classification, avoiding long stalls in failure reporting and model fallback. -- **Session settings:** restore merging of concurrent first writes after a startup optimization regressed lock ordering, preserving both global and project settings without adding filesystem side effects to missing-settings reads. Thanks @MrSwagatRathod, @obviyus, and @yetval for the original fix. -- **Control UI startup and history:** reduce configuration-schema construction and skip full-text duplicate comparisons for distinct transcript messages, preserving plugin hints, redaction, and message identity. -- **Docker source builds:** include the shared package lifecycle module before dependency installation so production and cleanup smoke images build with lifecycle checks enabled. -- **Subagent completion:** recognize visible final answers delivered to internal and nested parent sessions, preventing false delivery failures while preserving external channel delivery checks. -- Codex/Linux: wait for a live app-server process to expose its startup command line within the existing inspection deadline, preserving process identity checks and preventing intermittent startup failures. -- **Cloud session lifecycle:** prevent archive, delete, and restart recovery from deadlocking behind an earlier worker move, keep work admission closed through cleanup, and preserve the same successor for concurrent recovery requests. -- **Restart recovery:** preserve resumed channel delivery routes when an older reply finishes cleanup during Gateway restart, including ownership changes immediately before the database write. -- **Upgrade state metadata:** record the current application version after repairing older databases with an unset version marker, allowing CLI commands to use the running Gateway without attempting another schema repair. -- **Gateway cancellation:** route the first `chat.abort` directly to its cancellation handler without loading unrelated chat history and send workflows. +Shipped baseline exclusions: v2026.8.1 (14 PRs: #109622, #111527, #112678, #112967, #117561, #119051, #121394, #128548, #129174, #130030, #131220, #131228, #131717, #131811); v2026.8.2 (8 PRs: #133773, #133963, #134103, #134111, #134207, #134208, #134428, #134870). -- **AI setup cleanup:** prepare isolated inference probes from configured model facts instead of starting a separate live catalog client, so temporary Codex homes do not retain a background plugin clone after setup completes. -- **Buzz plugin packaging:** keep the live QA runner on the shipped QA runner SDK surface and remove the obsolete package shrinkwrap so standalone npm and ClawHub package builds use current host exports and dependency resolutions. Thanks @shakkernerd. -- **Parallels release smoke:** preserve Windows installer reboot results across Parallels, wait for WSL MSI/default-version readiness, force explicit test-owned gateway stops, and reset Linux package, config, and cache state before install lanes, preventing false prerequisite, safety-gate, and stale-config failures. - -- **Buzz standalone sends:** let `openclaw message send` and other non-Gateway processes open a bounded authenticated relay connection, publish the message, and close cleanly while running Gateways continue to reuse their active connection. Thanks @shakkernerd. -- **Buzz presence:** publish nonblocking online presence when the Gateway connects, refresh it without overlapping heartbeat writes, and let Buzz's final-connection cleanup provide accurate offline state across reconnects and multiple Gateway instances. Thanks @shakkernerd. -- **Buzz bot profiles:** persist optional Buzz account names, publish them as bot display names without delaying Gateway startup, preserve existing profile metadata, and include configured owner attestations so Buzz can show verified provenance. Thanks @shakkernerd. -- **Buzz agent identity:** register connected bots in Buzz's agent directory without overwriting existing profile policy, so later room invitations retain the Bot role instead of downgrading the identity to a normal member. Thanks @shakkernerd. -- **Buzz guided setup:** reuse or generate the bot identity automatically, wait for Bot-role approval before falling back to identity-preserving Retry/Back controls, select single-room defaults, preserve advanced access settings, accept normal room messages by default without relying on composer mentions, verify setup without posting test messages, finish targeted channel setup directly, derive new bot profiles from the routed agent identity, and authorize fresh setups from Buzz's live room roster without per-message relay queries. Thanks @shakkernerd. -- **Buzz resumable setup:** persist paused bot identities, resume disabled setup in place, retry authenticated room discovery without rotating keys, require verified **Bot**-role room membership instead of accepting unverified room UUIDs, and give accurate CLI authorization guidance for generated identities that Buzz desktop cannot discover. Thanks @shakkernerd. -- **Buzz inbound authorization:** apply shared room sender and command authorization before agent dispatch, allow authorized control commands to bypass mention gating, and preserve Buzz thread/reply identifiers through delivery. Thanks @shakkernerd. -- **Channel outbound echo suppression:** drop recently emitted platform message and source identities at shared inbound admission and migrate Discord thread unbinds off channel-local expiry state, preventing delayed webhook copies from re-entering agents. -- **ClawHub registry reads:** retry bounded HTTP 500 responses alongside other transient gateway failures so multi-package release scans survive isolated registry errors. -- **Microsoft Teams HTML text:** decode HTML5 entities consistently in quoted and Graph-fetched messages while preserving literal escaped entity text. -- **Gateway source watch:** hand the configured port off from the installed service before starting the tmux watcher, preserve failed panes for attach/capture, and keep explicit alternate-port watches side by side with the managed Gateway. -- **QA profile channel execution:** partition mixed Crabline channel scenarios into one aggregate host suite so taxonomy-backed profile commands and evidence workflows no longer abort before execution. -- **Plugin SDK API baseline:** cover every public entrypoint, preserve complete declaration shapes without source-line churn, and run baseline and export-surface guards from changed-file validation. -- **Gateway chat typecheck:** import chat event types from their owning protocol schema after the retired aggregate type module was removed, restoring full project typechecks. -- **Packaged Crabbox commands:** include the lease-freshness helper imported by the published wrapper so `crabbox:*` commands do not fail with `ERR_MODULE_NOT_FOUND` in npm installs. -- **CLI installer cleanup:** remove Node staging directories and pnpm workspace-rewrite temporary files on failure. (#103725) Thanks @SebTardif. -- **Codex runtime switching:** accept the bundled Codex runtime for both `codex/*` and `openai/*` model routes while keeping unsupported provider/runtime pairs rejected. (#103762) -- **Swift protocol initializers:** default every schema-optional generated initializer parameter to `nil` so additive protocol fields no longer break SDK construction call sites. -- **OpenCode Zen model catalog:** refresh the provider-owned static seed for Claude Sonnet 5, Grok 4.5, Hy3 Free, Kimi K2.7 Code, and MiniMax M3 with verified routing, pricing, limits, and input capabilities, remove retired free-tier rows, and expose the same catalog through unauthenticated model listing. (#103184) -- **Gateway startup migrations:** release the shared migration lease before exiting when the selected config changes during startup, allowing immediate retries instead of blocking readiness until the five-minute lease expires. (#103145) -- **CLI plugin listing:** skip state-migration runtime loading when no legacy inputs exist, reducing packaged cold-start memory while preserving migrations for legacy plugin indexes and configured session stores. -- **Browser actions on Node 24:** keep browser request cancellation bound to the client and response lifetime instead of Node 24.16+'s prematurely aborted body-stream signal, preventing valid POST actions from failing after JSON parsing. Thanks @obviyus and @vincentkoc. -- **SecretRef model credentials:** keep resolved provider secrets behind process-local sentinels through auth storage, stream setup, SDK configuration, and managed local-provider probing, then inject plaintext only at the final network or provider-plugin boundary while retaining exact-value log redaction. (#102008, #102009) -- **Lean local model shell access:** keep `exec` directly visible beside the default structured Tool Search controls so coding-tuned local models can use their shell fallback instead of searching for missing domain tools. (#87587) Thanks @vincentkoc. -- **OAuth refresh contention diagnostics:** keep local lock paths out of user-facing refresh failures and avoid duplicate failure prefixes while preserving structured provider and profile classification. (#83383) Thanks @vincentkoc. -- **Exec approval prompts:** keep background-disabled fallback warnings out of pending gateway/node approvals and show them only after a command actually runs in the foreground. (#78184) Thanks @vincentkoc. -- **Direct poll delivery:** route direct and hybrid channel polls through the owning outbound adapter while preserving gateway-mode routing and channel option checks. (#99950) Thanks @NianJiuZst. -- **Agent wait hard-timeout snapshots:** preserve canonical hard-timeout phase and timestamps when the outer `agent.wait` timer wins the retry-grace race, while leaving queue, draining, and restart-cancelled waits correctable. (#89367) Thanks @Pick-cat. -- **Control UI typed approvals:** send `/approve` commands immediately through the authorized Gateway command path while an agent run is blocked instead of queueing the command behind that run. (#77672) Thanks @vincentkoc. -- **Microsoft Teams Graph response bounds:** cap successful file-upload and chat JSON reads so oversized Microsoft Graph responses cannot be buffered without limit. (#97784) Thanks @Alix-007. -- **Packaged speech runtime:** stop treating package-backed `speech-core` as a bundled plugin sidecar, restoring TTS startup in npm installs while release checks keep true activation-bypassing facades package-complete. (#89899, #89425) Thanks @zhangguiping-xydt. -- **Codex app-server protocol:** require app-server 0.142 or newer, remove pre-0.142 wire-shape compatibility, and teach Codex to retrieve deferred native `spawn_agent` through `tool_search` so native subagent task mirroring works on search-capable models. (#101221) -- **Android hardware keyboard chat:** send with unmodified Enter on physical keyboards while preserving Shift+Enter and other modified Enter combinations for multiline input. (#101239) Thanks @3ninyt3nin-creator. -- **CJK Markdown emphasis:** render adjacent Chinese, Japanese, and Korean emphasis punctuation through the shared Markdown pipeline instead of leaking literal markers across channels. (#101230, #101120) Thanks @nicknmorty. -- **Backup retry cleanup:** close partial archive output handles and isolate each retry path after live-write failures, preventing Windows `EBUSY` locks from cascading across attempts or leaving stale temp archives. (#101397, #101449) Thanks @ZOOWH and @LiLan0125. -- **Codex yielded native subagents:** keep the parent app-server subscription and shared client alive until yielded native subagent completion delivery settles, preventing lost wakeups and leaked one-shot cleanup. -- **Delivery recovery pacing:** pace eligible outbound and restart-continuation replays after gateway startup so outage backlogs do not burst into channel rate limits, while preserving the wall-clock recovery budget. (#101118, #101058) Thanks @ZengWen-DT. -- **Outbound pre-connect recovery:** clear stale platform-send evidence atomically when a connect or DNS failure proves no request was sent, allowing queued Discord and other channel messages to replay after connectivity returns without weakening the unknown-send duplicate guard. (#101024, #100979) Thanks @SunnyShu0925. -- **Discord streamed finals:** send completion replies as fresh messages so inactive channels become unread, while preserving targeted mentions without escalating `@everyone` or `@here`. (#99711, #99662) Thanks @davelutztx. -- **OpenAI-compatible SSE parsing:** recognize event streams mislabeled as JSON without prepending a second `data:` prefix, preserving valid streamed responses from non-conforming providers. (#96503) Thanks @ZengWen-DT. -- **LM Studio embedding preload:** honor model- and provider-level context-window limits when preloading embedding models, preventing avoidable GPU out-of-memory failures. (#100750) Thanks @zak-li, @ZOOWH, and @hxz398. -- **Provider overload messaging:** keep rate-limited responses classified for retry and fallback behavior while using overload wording when the provider supplies no explicit retry detail. (#98165) Thanks @SunnyShu0925. -- **Microsoft Teams attachment metadata:** bound Bot Framework `attachmentInfo` JSON reads and cancel oversized streams before they can exhaust Gateway memory. (#99125) Thanks @ly85206559. -- **Agent auth copy order:** preserve the source agent's portable auth-profile precedence when copying credentials to a new agent while excluding skipped profiles and transient auth state. (#100833) Thanks @machine3at. -- **Memory session repair:** keep daily dreaming ingestion bookkeeping outside session-corpus audit and repair so `memory status --fix` preserves healthy daily state. (#93389) Thanks @Alix-007 and @vincentkoc. -- **Config unset diagnostics:** explain when an inherited or default configuration value cannot be unset instead of reporting a misleading successful deletion. (#96557) Thanks @moeghashim. -- **Crestodian command probes:** contain stdout and stderr stream failures while keeping child-process close and spawn errors authoritative, preventing unhandled probe crashes. (#100741) Thanks @lsr911. -- **Feishu mention forwarding:** fail closed when the bot Open ID is unavailable so group messages cannot be misclassified as explicit bot mentions. (#100891) Thanks @zhangguiping-xydt. -- **Cron edit delivery:** preserve each job's implicit delivery mode when applying partial delivery updates, so disabling best-effort delivery no longer turns detached job announcements off. (#100846) Thanks @machine3at. -- **Control UI session creation:** keep newly created sessions at the front of the stable sidebar order after selecting another session. Thanks @shakkernerd. -- **Control UI file previews:** keep large Skill Workshop files responsive with cached, offscreen-contained text chunks while preserving wrapped content, stable file switching, full-file copy, and clean focus behavior. (#101319) Thanks @xianshishan and @shakkernerd. -- **FTS-only memory startup:** skip plugin capability discovery when `memorySearch.provider` is explicitly `none`, avoiding an unnecessary cold-start scan. -- **Control UI agent model labels:** show each selected agent's effective model in the Default picker option instead of the global model. (#100719, #77690, #77440) Thanks @hyspacex. -- **Control UI inbound image previews:** render canonical inbound media references through the authenticated ticket route after chat-history reloads. (#100725, #90172, #89591) Thanks @sweetcornna. -- **Small-context compaction:** cap the effective reserve against the known model context window so small local models do not enter compaction from the first token. (#100621) Thanks @vincentkoc. -- **Detail-less provider failures:** keep opaque upstream failures from cooling API-key auth profiles while preserving WHAM-backed OpenAI OAuth health checks and configured model fallback. (#100600, #100617) Thanks @fengjikui. -- **Plugin install diagnostics:** suppress the misleading hook-pack fallback after plugin install failures only when the hook manifest is absent, while preserving actionable malformed hook-pack errors. (#100554) Thanks @vincentkoc. -- **Config validation diagnostics:** emit each unchanged sanitized validation-warning payload once per config path, reset deduplication after a clean validation, and preserve the warning fingerprint across transient invalid reads and failed refreshes. (#100569, #25574) Thanks @vincentkoc. -- **Config size-drop guard:** compare writes against canonical bytes for parseable object configs instead of raw BOM and indentation overhead, while preserving raw audit telemetry and the conservative malformed-input fallback. (#100591, #71865) Thanks @vincentkoc. -- **Control UI coalesced updates:** show a clear queued-restart completion banner when an update joins an already-running Gateway restart. (#93082) Thanks @goutamadwant. -- **Control UI connection errors:** preserve structured pairing and authentication failures for pending RPC callers while keeping generic disconnect behavior unchanged. (#54758) Thanks @ruanrrn. -- **iOS embedded terminal:** open the terminal-only Control surface directly while native Gateway authentication connects instead of exposing the Web UI login screen. -- **TUI startup status:** show `starting up` during post-connect initialization without overwriting active-run or reconnect state. (#93999) Thanks @ml12580. -- **Control UI restart recovery:** recover stale bundle pages through a bounded whole-document refresh after Gateway updates or restarts. (#99111) Thanks @ZengWen-DT. -- **TUI active Gateway ports:** follow the verified active local Gateway port when no explicit URL, port, or remote target is configured. (#73338, #42461) Thanks @haishmg and @vincentkoc. -- **Apple chat run recovery:** restore active responses from canonical Gateway history after reconnects, foreground resumes, and event gaps, while preserving gateway user-turn identity across Codex and Copilot transcript mirrors to prevent duplicate rows. (#100277) -- **Claude CLI streamed replies:** preserve assistant text already received from Claude CLI when its terminal result envelope is empty, preventing false empty-response failover after a complete streamed answer. (#90450) Thanks @totobusnello. -- **Phone identity normalization:** canonicalize stray plus signs, preserve non-phone iMessage handles, and reject digit-free Signal identities across shared channel routing. (#100467) Thanks @morluto. -- **Tlon scry response bounds:** cap successful Urbit scry JSON reads and cancel oversized streams instead of buffering unbounded peer responses. (#100376) Thanks @hugenshen. -- **Source build portability:** keep tsdown configuration self-contained so builds do not depend on resolving the tsdown package from unrun's temporary module directory. -- **Agent tool-call decoding:** preserve surrogate-range numeric HTML entities as literal text while still decoding valid supplementary-plane values, preventing malformed model output from injecting lone UTF-16 surrogates into tool arguments. (#99564) Thanks @mikasa0818. -- **Gateway event dispatch:** catch and log lazy subscriber setup and handler failures instead of leaking unhandled promise rejections. (#100401) Thanks @cxbAsDev. -- **Ollama fallback routing:** classify incomplete native streams through the Ollama provider hook so configured model fallbacks can advance. (#100482) Thanks @TurboTheTurtle. -- **Diffs rendering:** render viewer and image output from one SSR preload, preserve language-pack highlighting through hydration, normalize language hints case-insensitively, skip identical before/after inputs with an explicit `changed` result, report truthful file-render and input errors, cache hash-pinned viewer runtimes, and prefer canonical file settings over stale aliases. (#100487) -- **Remote browser reliability:** bound persistent Playwright tab enumeration by the existing remote CDP timeout budget and retire timed-out connection attempts so late completions cannot restore a stuck connection. (#80147, #58968) Thanks @HemantSudarshan and @KeaneYan. -- **Browser attachment downloads:** return managed URL, filename, and path metadata when direct Playwright navigation starts an attachment download, while validating final URLs before saving bytes and preserving single-owner explicit downloads. (#48045, #89416) Thanks @zhangguiping-xydt. -- **Browser action downloads:** return managed URL, filename, and path metadata when agent actions trigger downloads, while preserving explicit ownership, validating final URLs before saving bytes, and quarantining policy-denied tabs without closing them. (#93250, #93307) Thanks @sunlit-deng. -- **Managed browser cookie persistence:** initialize new isolated macOS headless profiles with a non-interactive encryption key while preserving existing profile keys, and close Chromium through CDP before bounded signal fallback so persistent logins survive graceful browser and Gateway restarts. (#96704, #98284) Thanks @TurboTheTurtle. -- **MCP OAuth response bounds:** reject body-less foreign error bodies without calling their inherently unbounded `text()` fallback, while preserving HTTP status and headers for safe SDK diagnostics. (#98143) Thanks @Pick-cat. -- **Tlon image upload bounds:** cap remote image fetches before upload and fail closed on oversized or stalled responses instead of buffering them without a limit. (#100374) Thanks @hugenshen. -- **Control UI approval prompts:** keep stale resolve failures and busy-state cleanup from leaking across newer approvals or Gateway reconnects. (#98394) Thanks @haruaiclone-droid. -- **macOS service SecretRefs:** preserve generated env-file values for SecretRefs that remain in config when stale Gateway LaunchAgents are repaired or reinstalled without those variables in the invoking shell. (#99124) Thanks @mushuiyu886. -- **Anthropic OAuth callbacks:** keep the provider-required `localhost` redirect URI stable while allowing the local callback listener to bind an explicit loopback host. (#96917) Thanks @xialonglee. -- **Anthropic plugin startup:** defer authentication and live catalog runtime loading until their hooks run, avoiding cold source-registration timeouts while preserving provider setup and diagnostics. -- **Prompt-release media delivery:** accept active-leaf-preserving side appends while an embedded run temporarily releases its session lock, so successive message-tool media replies merge without a false session-takeover failure. (#100033, #100490) Thanks @scotthuang. -- **Control UI Skills filters:** align agent and search controls, use translated labels, and preserve native checkbox and radio sizing. (#100526, #99996) Thanks @evan-YM. -- **Control UI completed-run state:** bind active and completed updates to run identities so stale completions keep Send available while newer runs remain active. (#100527, #91680) Thanks @tiffanychum. -- **Control UI context usage:** keep stale cached totals visible as approximate without triggering warning styling or Compact actions. (#89772) Thanks @bladin. -- **Control UI file previews:** remove the duplicate Escape header hint while retaining the Close-button shortcut hint and Escape behavior. (#100528, #99029) Thanks @xianshishan. -- **Control UI autonomous tool failures:** preserve an earlier Tool error outcome across later autonomous recovery turns. (#100514, #98888) Thanks @qingminglong. -- **Agent empty replies:** surface a visible failure when a completed interactive turn has no deliverable reply, including queued follow-ups, while preserving explicit silence, pending continuations, and committed side effects, honoring queued send policies, and treating compaction notices as progress. (#100456) Thanks @mushuiyu886. -- **Child process output safety:** prevent stdout/stderr pipe failures from crashing agent exec sessions, local TUI shell commands, and bounded process execution. (#100407, #100406, #100410) Thanks @cxbAsDev. -- **Docker sandbox command output:** fail and terminate Docker sandbox operations when stdout/stderr capture breaks instead of returning success with incomplete output. (#100523) Thanks @cxbAsDev. -- **Background refresh isolation:** keep remote skill-bin refreshes running when one node fails, and contain periodic subagent-sweeper failures without hiding errors from direct callers. (#100393, #100390) Thanks @cxbAsDev. -- **Skill scan diagnostics:** report directory enumeration failures through the existing resource diagnostics instead of silently dropping affected skills. (#100380) Thanks @wendy-chsy. -- **Skills refresh:** detect skill roots created after startup, including nested project-agent directories, while keeping ancestor watches scoped to their intended roots. -- **Exec output sanitization:** remove complete ANSI sequences and render residual C0/C1 controls as visible escapes instead of silently discarding output bytes. (#100327) Thanks @LavyaTandel. -- **Assistant visible text:** unwrap leaked standalone `` tags while preserving their content and literal code/XML examples. (#100302) Thanks @nankingjing. -- **Android microphone capture:** treat negative `AudioRecord.read` results as fatal shared-session errors so both transcription and Talk capture stop cleanly after device loss. (#100028) Thanks @NianJiuZst. -- **Android push-to-talk lifecycle:** serialize gateway PTT preparation with app foreground and Manual Mic ownership so stale background or retry work cannot restart, replace, or tear down a newer capture. (#99840) Thanks @xialonglee. -- **Lean local-model tools:** trim media generation, TTS, and PDF tools from lean agent surfaces while preserving explicit config and runtime opt-ins. (#88881) Thanks @vincentkoc. -- **iOS development app identity:** keep the development app labeled OpenClaw while using its distinct debug icon to differentiate it from release builds. -- **Android chat recovery:** preserve optimistic user messages and locally owned runs while reconnect and sequence-gap history snapshots catch up, preventing sent messages from disappearing or stale runs from taking ownership. (#100197) -- **iOS QR gateway handoff:** stop VisionKit before delivering scanned setup codes, and keep deferred auth, approval, Watch, and foreground-node work bound to its originating gateway across reconnects. (#99572) Thanks @PollyBot13. -- **Agent terminal failures:** surface a safe interactive reply when an agent run ends without visible output, while preserving completed message-tool delivery and heartbeat-specific guidance. (#99304) Thanks @moeedahmed. -- **MCP loopback tool results:** preserve schema-valid text, image, and embedded-resource content through HTTP tool calls while rendering malformed or protocol-incompatible blocks as safe text. (#100336) Thanks @tzy-17. -- **Control UI tool-result images:** render direct image content blocks from Gateway history and make the delayed-send scroll E2E setup deterministic. (#100295) Thanks @lzyyzznl. -- **Control UI live tool ordering:** keep assistant stream text before its matching tool card when browser and Gateway timestamps disagree. (#93184) Thanks @Pick-cat. -- **Plugin approval diagnostics:** distinguish request validation rejections, expired wait decisions, and unavailable Gateways while keeping approval failures fail-closed. (#100337) Thanks @tzy-17. -- **IRC Unicode messages:** split outbound PRIVMSG payloads on UTF-16 code-point boundaries so emoji cannot be cut into lone surrogates. (#96572) Thanks @llagy009. -- **OpenAI realtime voice greetings:** prevent server VAD from creating a second outbound greeting while an explicit greeting response owns the turn, without disabling caller interruption. (#86285) Thanks @giodl73-repo. -- **Realtime voice tools:** filter malformed tool names at each OpenAI, Azure, and Google realtime payload boundary while preserving provider-specific valid names. (#89175) Thanks @vincentkoc. -- **Discord voice status:** treat Discord error 10065 as a normal disconnected state while preserving unrelated REST failures. (#90969) Thanks @asock. -- **Discord voice accounts:** isolate `@discordjs/voice` connections by Discord account and recover auto-join when gateway readiness predates listener registration. (#87530) Thanks @geekhuashan. -- **iOS Voice Wake cleanup:** avoid initializing the microphone audio pipeline while disabling inactive Voice Wake, preventing simulator launch aborts and unnecessary audio setup. -- **Cron duration validation:** reject positive durations that truncate below one millisecond instead of silently scheduling a zero-duration interval. (#100311) Thanks @qingminglong. -- **Skill workshop proposals:** preserve the terminal newline in generated proposal Markdown while still rejecting blank raw content. (#100293) Thanks @anyech. -- **Agent tool inputs and LSP startup:** treat blank optional integer arguments as absent, and fail embedded LSP startup immediately when its child process cannot spawn. (#100273, #99922) Thanks @snotty and @cxbAsDev. -- **Gateway and memory diagnostics:** report failed start-session persistence and close-time memory work instead of silently discarding those failures. (#100313, #100308) Thanks @masatohoshino and @lin-hongkuan. -- **Unicode and plugin package verification:** match native slice semantics for reversed UTF-16 bounds, and reject published plugin packages that omit `openclaw.plugin.json`. (#100014, #99904) Thanks @Simon-XYDT and @849261680. -- **Android invoke cancellation:** preserve coroutine cancellation through camera handlers and the Gateway invoke boundary so cancelled work cannot emit a stale result. (#99916) Thanks @xialonglee. -- **Codex native hook relay diagnostics:** avoid bridge registry writes before the local relay server begins listening. (#100300) Thanks @nankingjing. -- **Voice Call completed status:** resolve finalized calls from the full retained event store across Gateway, tool, and CLI status paths while preserving active-call lookup performance. (#99797) Thanks @Darren2030. -- **Agent stop recovery:** prevent late-aborting prompts from reacquiring orphaned session locks after teardown, so `/stop` leaves the conversation ready for the next turn. -- **Message delivery status:** report failed and partially failed best-effort channel delivery instead of returning a success-shaped message-tool result. (#99928) Thanks @masatohoshino. -- **WhatsApp credential recovery:** restore malformed primary auth state from a valid backup during startup. (#99070) Thanks @LeonidasLux. -- **WhatsApp quoted replies:** preserve bot-authored outbound quote metadata so replies to those messages keep their reply bubble in WhatsApp Desktop. (#94879) Thanks @Bartok9. -- **WhatsApp reconnect catch-up:** admit recently missed Baileys `append` messages during a bounded reconnect window while preserving startup stale-history guards. (#80642) Thanks @VishalJ99. -- **WhatsApp restart recovery:** stop automatic restart loops after logged-out or connection-replaced disconnects until the account reconnects. (#78511) Thanks @openperf. -- **Local Gateway CLI auth:** keep loopback CLI token/password calls off durable device scopes so read probes cannot block later write/admin commands behind a stale pairing baseline. (#95997) Thanks @vincentkoc. -- **Plugin module identity:** keep OpenClaw package chunks on Node's native module graph when jiti transforms plugin entries, preventing duplicate evaluation and class identity drift. (#88384) Thanks @vincentkoc. -- **Shell completion repair:** generate core-only caches during doctor and update repair while preserving full plugin command completion for onboarding and explicit user rebuilds. (#76235) -- **MCP schema diagnostics:** attribute draft-2020-12 compiler failures to the external MCP schema so malformed patterns produce actionable setup errors. Thanks @vincentkoc. -- **Windows Scheduled Task recovery:** keep clean early exits inside the existing bounded launch poll, falling back only when neither the task process nor Gateway listener becomes observable. (#76245) -- **iMessage group warnings:** suppress the false drop-all startup warning when an effective group sender allowlist can admit groups, and point true empty-allowlist configurations at the correct remedy. (#100046) -- **Control UI mobile login:** keep Gateway recovery guidance visible after connection failures, make the disconnected gate scroll safely on constrained screens, and improve mobile keyboard and tap-target behavior. (#100208) -- **TUI streaming:** render delta-only assistant events in live Gateway and embedded TUI sessions instead of waiting for the final response. (#83000) Thanks @flashosophy. -- **Model aliases:** resolve provider-qualified aliases during session and chat-command model switches without collisions when providers share a display alias. (#100209) Thanks @sahilsatralkar. -- **TUI new-session hooks:** create `/new` sessions through the shared Gateway lifecycle so command and session hooks receive the completed parent transcript in both Gateway and embedded modes, while preventing rollover during an active turn. (#100241, #49918) Thanks @BingqingLyu. -- **TUI abort diagnostics:** show sanitized tool argument-validation summaries for aborted runs in both Gateway and local TUI modes without exposing raw model arguments. (#91002) Thanks @wsyjh8. -- **iOS Watch replies:** persist queued quick replies in the gateway-scoped chat outbox and submit them through idempotent chat delivery, preventing losses, duplicates, and cross-gateway sends after reconnects. (#100031) Thanks @NianJiuZst. -- **iOS Gateway auth retry:** restrict stored device-token retry to parsed loopback hosts and reject wildcard bind addresses, preventing remote lookalike hostnames from receiving trusted retry credentials. (#99859) Thanks @ly85206559. -- **Bedrock Mantle discovery:** bound model-catalog fetch time and response size, and release rejected response bodies so stalled, oversized, or failed provider responses fall back safely. (#99961) Thanks @zhangguiping-xydt. -- **Discord thread-title prompts:** truncate generated-title message and channel context on UTF-16 boundaries so emoji cannot leave malformed model prompt text. (#101551) Thanks @Alix-007. -- **Task state migration:** canonicalize legacy `not-requested` delivery statuses during sidecar import and existing shared-database open so upgraded task registries and linked TaskFlows recover without manual SQL, and surface rejected persisted values in compact console diagnostics. (#103946) Thanks @bek91. +#### Pull requests +- **PR #134568** Related #134455. Thanks @shakkernerd. +- **PR #134083** Related #132766. Thanks @edenfunf and @VACInc and @abacha. +- **PR #134478** Thanks @Patrick-Erichsen. +- **PR #134637** +- **PR #134642** +- **PR #134645** +- **PR #134646** +- **PR #134652** +- **PR #134643** Thanks @vincentkoc. +- **PR #134630** Thanks @vincentkoc. +- **PR #134656** +- **PR #134661** +- **PR #134672** +- **PR #134671** +- **PR #134537** +- **PR #134627** +- **PR #134675** +- **PR #134676** +- **PR #134669** +- **PR #134590** Related #134321. Thanks @MoerAI and @obviyus and @abacha. +- **PR #134593** +- **PR #134272** Thanks @RileyJJY and @obviyus. +- **PR #134654** Related #134573. +- **PR #134673** +- **PR #134677** Thanks @vincentkoc. +- **PR #134694** +- **PR #134634** Thanks @goslingmanagment and @dmsrg399. +- **PR #134698** Related #134605. Thanks @obviyus and @pfrederiksen. +- **PR #134631** Thanks @Patrick-Erichsen. +- **PR #134707** +- **PR #134641** Related #134445. Thanks @leilei3167 and @obviyus and @rosssaunders. +- **PR #134536** +- **PR #134717** Related #134407. Thanks @obviyus and @abacha. +- **PR #134702** +- **PR #134651** Related #134647. Thanks @Patrick-Erichsen. +- **PR #134691** Thanks @vincentkoc. +- **PR #134650** Thanks @vincentkoc. +- **PR #134720** +- **PR #134704** Related #134458. Thanks @obviyus and @Nielsh82. +- **PR #134693** +- **PR #134695** Thanks @vincentkoc. +- **PR #134706** +- **PR #134728** +- **PR #134483** Related #134340. Thanks @qdivan and @obviyus and @samson1357924. +- **PR #134733** +- **PR #134732** Thanks @Patrick-Erichsen. +- **PR #134653** Thanks @Patrick-Erichsen. +- **PR #134684** Thanks @Patrick-Erichsen. +- **PR #134722** +- **PR #134716** Thanks @pash-openai. +- **PR #134747** +- **PR #134581** +- **PR #134688** +- **PR #134754** +- **PR #134751** +- **PR #134668** +- **PR #132917** Related #132862. Thanks @xydt-juyaohui and @obviyus and @lakemike. +- **PR #132199** Thanks @africoding. +- **PR #134686** +- **PR #134626** +- **PR #134699** Related #134204. Thanks @Patrick-Erichsen and @vyctorbrzezowski. +- **PR #134760** Related #134256. Thanks @obviyus and @vdruts. +- **PR #134763** +- **PR #134765** Related #131770. Thanks @obviyus and @LiuwqGit and @sblindt. +- **PR #134745** Thanks @vincentkoc. +- **PR #131619** Thanks @MertBasar0. +- **PR #134746** Thanks @vincentkoc. +- **PR #134517** Thanks @VACInc. +- **PR #134724** +- **PR #134764** Thanks @Patrick-Erichsen. +- **PR #134782** +- **PR #134473** Related #134306. Thanks @fuller-stack-dev and @goslingmanagment. +- **PR #132727** Thanks @qingminglong. +- **PR #134752** +- **PR #132868** Thanks @CanReader and @obviyus. +- **PR #134172** Related #134076. Thanks @RileyJJY and @beastyrabbit. +- **PR #134793** +- **PR #134659** Thanks @Patrick-Erichsen. +- **PR #134792** +- **PR #134762** Thanks @vincentkoc. +- **PR #134791** Thanks @Patrick-Erichsen. +- **PR #115405** Thanks @MertBasar0. +- **PR #122726** Related #122372. Thanks @191612731-cloud and @vincentkoc. +- **PR #134598** Related #134477. Thanks @Patrick-Erichsen and @goslingmanagment. +- **PR #134632** +- **PR #134696** Related #134679. +- **PR #129825** Related #112796. Thanks @zhangguiping-xydt and @obviyus and @yetval. +- **PR #131567** Thanks @igs-rogenlo. +- **PR #134351** Related #134323. +- **PR #134739** Related #132619. Thanks @felixboenkost-droid. +- **PR #134712** +- **PR #134758** +- **PR #124672** Thanks @qingminglong. +- **PR #134778** Related #134701. +- **PR #134708** Related #134692. +- **PR #134775** Thanks @Patrick-Erichsen. +- **PR #134636** Thanks @Patrick-Erichsen. +- **PR #134825** +- **PR #122628** Thanks @sunlit-deng and @obviyus. +- **PR #134719** +- **PR #134820** +- **PR #134811** +- **PR #134822** +- **PR #134808** Related #132979. Thanks @fuller-stack-dev. +- **PR #127999** Thanks @yetval and @obviyus. +- **PR #134759** +- **PR #134412** Thanks @ly85206559. +- **PR #133354** Thanks @qingminglong. +- **PR #134832** +- **PR #134814** +- **PR #134548** +- **PR #134844** Thanks @vincentkoc. +- **PR #134833** +- **PR #133220** Related #133171. Thanks @SunnyShu0925 and @ruel225. +- **PR #134836** +- **PR #134840** +- **PR #133414** Related #133385. Thanks @MoerAI. +- **PR #134776** Related #134727. +- **PR #134299** Related #125694. Thanks @PollyBot13 and @kodi. +- **PR #134804** +- **PR #134847** Thanks @vincentkoc. +- **PR #134845** +- **PR #134809** +- **PR #134805** Thanks @vincentkoc. +- **PR #133105** Thanks @ly85206559. +- **PR #134838** Thanks @sunlit-deng. +- **PR #134861** Thanks @vincentkoc. +- **PR #134856** Thanks @vincentkoc. +- **PR #134361** Thanks @obviyus. +- **PR #134852** +- **PR #134877** +- **PR #134863** +- **PR #134821** Thanks @vincentkoc. +- **PR #114678** Thanks @harjothkhara and @obviyus. +- **PR #134802** Related #82582. Thanks @najef1979-code. +- **PR #132723** Thanks @zhangguiping-xydt. +- **PR #134885** +- **PR #134660** Related #134552. +- **PR #134874** +- **PR #134882** +- **PR #134674** +- **PR #134857** +- **PR #134894** +- **PR #132186** Thanks @galiniliev. +- **PR #119501** Related #119317. Thanks @harjothkhara and @obviyus and @abacha. +- **PR #134842** +- **PR #134879** +- **PR #134909** +- **PR #134824** +- **PR #134281** Thanks @obviyus. +- **PR #132883** Related #127637. Thanks @SunnyShu0925. +- **PR #134928** +- **PR #132756** Thanks @sashankh. +- **PR #134923** +- **PR #134889** +- **PR #134927** Related #134919. +- **PR #134828** Related #134823. +- **PR #134860** Thanks @Patrick-Erichsen. +- **PR #134936** +- **PR #134921** +- **PR #134932** +- **PR #134908** +- **PR #134933** +- **PR #134812** +- **PR #134813** Thanks @Patrick-Erichsen. +- **PR #134930** +- **PR #102180** Related #101672. Thanks @849261680 and @obviyus and @cpwilhelmi. +- **PR #132477** +- **PR #134837** Related #134305. Thanks @fuller-stack-dev and @goslingmanagment. +- **PR #134827** +- **PR #134872** Related #134848. +- **PR #134949** +- **PR #134742** Related #134741. Thanks @w9n and @obviyus. +- **PR #134940** +- **PR #134935** +- **PR #134907** Thanks @fuller-stack-dev. +- **PR #134950** +- **PR #134961** +- **PR #134912** +- **PR #134585** +- **PR #134905** +- **PR #134954** +- **PR #134973** +- **PR #134946** +- **PR #134881** +- **PR #134981** +- **PR #134942** +- **PR #134978** +- **PR #134601** +- **PR #131691** Related #131491. Thanks @LiuwqGit and @meircohen. +- **PR #134711** Thanks @qingminglong. +- **PR #134983** +- **PR #134926** Thanks @vincentkoc. +- **PR #134979** +- **PR #134876** Thanks @vincentkoc. +- **PR #134947** +- **PR #134904** Thanks @vincentkoc. +- **PR #134934** +- **PR #134734** +- **PR #134884** Thanks @fuller-stack-dev. +- **PR #134917** Thanks @qingminglong. +- **PR #134958** Thanks @vincentkoc. +- **PR #134962** Thanks @vincentkoc. +- **PR #134948** +- **PR #134302** Related #127403. Thanks @PollyBot13. +- **PR #134977** Thanks @vincentkoc. +- **PR #134991** +- **PR #134893** Related #134709. +- **PR #134986** +- **PR #134888** +- **PR #135011** +- **PR #134850** Related #134841. +- **PR #134984** +- **PR #135001** +- **PR #134952** +- **PR #134607** Thanks @vincentkoc and @obviyus. +- **PR #134725** Related #134718. +- **PR #120105** Thanks @qingminglong and @vincentkoc. +- **PR #135004** +- **PR #134964** +- **PR #135015** +- **PR #134913** +- **PR #135020** +- **PR #134998** +- **PR #134988** +- **PR #135021** +- **PR #134519** Thanks @RomneyDa. +- **PR #135007** +- **PR #135008** +- **PR #134965** +- **PR #134466** +- **PR #134854** +- **PR #134966** +- **PR #135025** +- **PR #135040** +- **PR #135005** Thanks @vincentkoc. +- **PR #134891** +- **PR #134839** +- **PR #135014** +- **PR #132627** Thanks @Alix-007. +- **PR #134944** +- **PR #135012** Thanks @vincentkoc. +- **PR #134992** Thanks @vincentkoc. +- **PR #135037** +- **PR #134807** +- **PR #134670** Thanks @obviyus. +- **PR #134799** Thanks @marmar9615-cloud. +- **PR #135050** +- **PR #135048** +- **PR #135027** +- **PR #134714** +- **PR #122730** Related #121083. Thanks @191612731-cloud and @fujixm5. +- **PR #134875** Related #134867. +- **PR #133778** Thanks @qingminglong. +- **PR #120645** Thanks @firepinn. +- **PR #135039** +- **PR #135046** Related #134516. Thanks @goslingmanagment. +- **PR #134423** Thanks @hartmark. +- **PR #135034** +- **PR #125791** Thanks @santhiprakash. +- **PR #135029** +- **PR #135030** +- **PR #134862** +- **PR #120913** Thanks @qingminglong. +- **PR #135033** +- **PR #135043** +- **PR #125378** Thanks @qdivan. +- **PR #135047** +- **PR #135076** +- **PR #134740** Thanks @lzhan011 and @0x-Parzival. +- **PR #134880** +- **PR #134385** Thanks @ly85206559. +- **PR #135064** +- **PR #134831** Related #134748. Thanks @miguelarios. +- **PR #134797** Thanks @marmar9615-cloud. +- **PR #135065** +- **PR #134915** Thanks @edenfunf. +- **PR #134902** +- **PR #135074** +- **PR #135066** +- **PR #135069** +- **PR #121569** Thanks @sunlit-deng. +- **PR #135095** Related #134731. Thanks @obviyus and @BoatAngle. +- **PR #133806** Thanks @qingminglong. +- **PR #135072** +- **PR #135073** +- **PR #134010** Thanks @ZengWen-DT. +- **PR #135078** +- **PR #134362** +- **PR #135094** +- **PR #133814** Related #132147. Thanks @MoerAI and @vyctorbrzezowski. +- **PR #135070** +- **PR #135096** Related #132605. Thanks @jodok. +- **PR #133297** Related #132886. Thanks @zhangguiping-xydt and @goffern. +- **PR #135075** +- **PR #135101** +- **PR #135019** Thanks @xialonglee and @obviyus. +- **PR #135062** +- **PR #132623** Thanks @sunlit-deng. +- **PR #135031** Related #126730. Thanks @astra-openclaw. +- **PR #135090** +- **PR #120161** Thanks @qingminglong. +- **PR #134924** Related #134883. +- **PR #135091** +- **PR #128453** Thanks @ruel225. +- **PR #134892** +- **PR #135105** +- **PR #134835** Related #134834. +- **PR #133716** Thanks @RileyJJY. +- **PR #135107** +- **PR #135110** Thanks @vincentkoc. +- **PR #135103** +- **PR #121598** Thanks @mikasa0818. +- **PR #135082** +- **PR #135120** +- **PR #135051** Related #134999. Thanks @pengzh1 and @obviyus and @gru-10k. +- **PR #135098** +- **PR #135099** +- **PR #135116** +- **PR #135113** Thanks @vincentkoc. +- **PR #129035** Thanks @pgondhi987. +- **PR #135108** +- **PR #135102** +- **PR #134221** Thanks @fuller-stack-dev. +- **PR #135123** Related #135104. +- **PR #134794** Related #134690. +- **PR #135114** Related #135089. Thanks @walker1211. +- **PR #64490** Thanks @EdenKangdw and @walker1211. +- **PR #135121** +- **PR #135122** +- **PR #135119** Related #135068. +- **PR #135128** +- **PR #135100** +- **PR #135141** +- **PR #134969** +- **PR #118197** Thanks @peterolkhov. +- **PR #135042** Related #134967. Thanks @ruel225 and @obviyus and @kiranvk-2011. +- **PR #120660** Related #120659. Thanks @fr-meyer. +- **PR #135136** +- **PR #123220** Thanks @wanyongstar. +- **PR #122078** Thanks @Iskam31. +- **PR #123893** +- **PR #135003** Related #134895. Thanks @ericcaiwx-star and @obviyus. +- **PR #135157** Thanks @vincentkoc. +- **PR #135006** Related #134997. +- **PR #135109** Related #135026. Thanks @obviyus and @jadabreu. +- **PR #135165** +- **PR #134890** Related #134649. Thanks @MoerAI and @obviyus and @Deregtx. +- **PR #135161** +- **PR #135126** Thanks @vincentkoc. +- **PR #135063** +- **PR #134655** Related #134638. Thanks @mohamedelrefaiy. +- **PR #135118** Related #134304. Thanks @fuller-stack-dev and @goslingmanagment. +- **PR #135059** Thanks @vincentkoc. +- **PR #134744** Thanks @0x-Parzival. +- **PR #135162** +- **PR #134957** Thanks @xialonglee and @obviyus. +- **PR #135172** +- **PR #135131** +- **PR #134490** Thanks @fuller-stack-dev. +- **PR #135146** Thanks @vincentkoc. +- **PR #135125** +- **PR #135170** +- **PR #135169** +- **PR #135183** +- **PR #132951** Thanks @hartmark. +- **PR #135158** +- **PR #134937** +- **PR #135201** +- **PR #133224** +- **PR #135159** +- **PR #135160** +- **PR #133268** Related #132739. Thanks @edenfunf and @ml12580. +- **PR #135106** +- **PR #135204** +- **PR #135189** +- **PR #135181** +- **PR #135186** Related #135176. +- **PR #135081** Related #134971. Thanks @akagifreeez and @obviyus and @tomroberts78. +- **PR #135207** +- **PR #134780** Related #134657. Thanks @RayWangyangMa and @obviyus and @axiom-ncis. +- **PR #134910** +- **PR #135153** +- **PR #135246** +- **PR #135257** +- **PR #135206** Thanks @fuller-stack-dev. +- **PR #135259** +- **PR #134403** Thanks @obviyus. +- **PR #135232** +- **PR #135220** +- **PR #135208** +- **PR #135258** +- **PR #132582** Related #132581. Thanks @TARSDrakon. +- **PR #135145** +- **PR #135235** +- **PR #135222** +- **PR #135226** +- **PR #135265** +- **PR #135269** +- **PR #135271** +- **PR #135260** +- **PR #134738** Thanks @eleqtrizit. +- **PR #135289** +- **PR #135275** +- **PR #135274** +- **PR #135245** Thanks @ssaade01. +- **PR #135254** +- **PR #135285** +- **PR #135294** +- **PR #134903** +- **PR #134911** +- **PR #134779** Related #134379. Thanks @leilei3167 and @obviyus and @aaajiao. +- **PR #135288** +- **PR #133799** +- **PR #135306** +- **PR #133379** Related #133294. Thanks @zhangguiping-xydt and @Paeddy87. +- **PR #135124** Related #135013. Thanks @zhangguiping-xydt and @obviyus and @masatokawano. +- **PR #135155** Thanks @brettdaman and @obviyus. +- **PR #131456** Related #131113. Thanks @gaoanze888 and @Grynn. +- **PR #135317** +- **PR #135319** +- **PR #135325** +- **PR #135148** +- **PR #135323** +- **PR #135326** +- **PR #131017** Related #130918. Thanks @Alix-007 and @emes. +- **PR #135077** Related #134864. +- **PR #132571** Thanks @edenfunf. +- **PR #134980** Related #134968. Thanks @Marvinthebored and @obviyus. +- **PR #135227** +- **PR #135312** +- **PR #135360** +- **PR #135322** +- **PR #135332** +- **PR #135321** +- **PR #135304** +- **PR #135313** +- **PR #134781** Thanks @eleqtrizit. +- **PR #135138** Related #134960. Thanks @gaoanze888 and @Vasanthdev2004. +- **PR #135346** +- **PR #135345** Thanks @Takhoffman. +- **PR #135355** Related #135140. Thanks @obviyus and @mattcbianco. +- **PR #135363** +- **PR #135287** +- **PR #134865** +- **PR #131329** Thanks @hartmark. +- **PR #135369** +- **PR #135368** +- **PR #135353** +- **PR #135357** Related #135079. Thanks @obviyus and @dannevang. +- **PR #135374** +- **PR #134974** Related #124343. Thanks @VACInc and @aoclaw-glitch. +- **PR #135302** +- **PR #135382** Related #133550. Thanks @Call44. +- **PR #135407** Thanks @itsuzef. +- **PR #135279** Thanks @qingminglong. +- **PR #135185** Related #135061. Thanks @gaoanze888 and @obviyus and @snls1994. +- **PR #135373** +- **PR #135426** Related #135156. Thanks @obviyus and @rwinkelman and @Synthetic2802. +- **PR #135303** +- **PR #134680** Thanks @Patrick-Erichsen. +- **PR #135444** Related #135442. +- **PR #135390** +- **PR #135474** +- **PR #135336** +- **PR #118045** Thanks @AAliKKhan. +- **PR #132370** Related #132369. Thanks @jalehman. +- **PR #135454** Related #135437. +- **PR #135380** Related #135340. +- **PR #135393** +- **PR #135264** +- **PR #135367** +- **PR #135044** Related #134306. Thanks @fuller-stack-dev and @goslingmanagment. +- **PR #135386** +- **PR #131767** Related #131765. Thanks @vyctorbrzezowski. +- **PR #135428** +- **PR #135024** Related #134506. Thanks @jalehman. +- **PR #134664** Thanks @jalehman. +- **PR #135154** Related #135149. Thanks @brettdaman and @obviyus. +- **PR #134068** Related #133602. +- **PR #135497** +- **PR #135529** +- **PR #135239** Related #135221. Thanks @Solvely-Colin. +- **PR #134365** Thanks @vyctorbrzezowski. +- **PR #135397** +- **PR #135112** Related #134916. Thanks @shakkernerd. +- **PR #135431** +- **PR #135440** +- **PR #135432** +- **PR #135425** +- **PR #135543** +- **PR #135401** Thanks @Colton-Harris. +- **PR #135495** Thanks @lzhan011. +- **PR #135445** Related #135361. Thanks @gaoanze888 and @Bloodis94. +- **PR #135391** Thanks @Peetiegonzalez and @obviyus. +- **PR #134929** Thanks @hannesrudolph. +- **PR #135392** +- **PR #135447** +- **PR #135460** +- **PR #134756** +- **PR #135464** +- **PR #135505** +- **PR #135342** +- **PR #135560** +- **PR #135500** +- **PR #135071** +- **PR #135423** +- **PR #135200** +- **PR #135568** Related #135507. +- **PR #135572** +- **PR #135375** +- **PR #135195** Related #135187. Thanks @edenfunf. +- **PR #135579** +- **PR #135405** +- **PR #135586** +- **PR #135523** Thanks @Patrick-Erichsen. +- **PR #135524** Thanks @Patrick-Erichsen. +- **PR #135595** Thanks @hannesrudolph. +- **PR #134532** Related #134439. Thanks @chelsealong and @henrique-simoes. +- **PR #135594** +- **PR #135412** +- **PR #135284** +- **PR #135557** +- **PR #134976** Related #134975. Thanks @edenfunf. +- **PR #135559** +- **PR #134945** +- **PR #134572** Thanks @omarshahine. +- **PR #135093** +- **PR #135600** +- **PR #127284** Thanks @RomneyDa and @karkarl. +- **PR #135605** +- **PR #135598** +- **PR #135415** Related #135414. +- **PR #124568** Related #124567. Thanks @zyw02. +- **PR #135521** Thanks @Patrick-Erichsen. +- **PR #135514** +- **PR #135473** +- **PR #135574** +- **PR #135593** Related #135587. +- **PR #135475** +- **PR #135504** +- **PR #135602** +- **PR #135477** +- **PR #135563** +- **PR #135624** +- **PR #135597** +- **PR #135577** Related #135338. +- **PR #135644** +- **PR #135592** +- **PR #135651** +- **PR #135421** Thanks @ly85206559. +- **PR #135601** +- **PR #135640** +- **PR #135638** Related #135623. +- **PR #135669** +- **PR #135611** +- **PR #135476** +- **PR #135210** +- **PR #135643** +- **PR #135398** +- **PR #133897** Thanks @RomneyDa. +- **PR #122586** Related #68170. Thanks @vincentkoc and @lidge-jun and @richard-scott. +- **PR #135273** Thanks @SebTardif. +- **PR #134443** Thanks @RomneyDa. +- **PR #135625** +- **PR #135585** +- **PR #135626** +- **PR #135607** +- **PR #135616** +- **PR #135667** Thanks @vincentkoc. +- **PR #134457** Thanks @RomneyDa. +- **PR #135662** +- **PR #126887** Thanks @vincentkoc and @RomneyDa. +- **PR #134613** Thanks @RomneyDa. +- **PR #134614** Thanks @RomneyDa. +- **PR #134615** Thanks @RomneyDa. +- **PR #135622** Related #135496. +- **PR #135177** +- **PR #135619** Related #135606. +- **PR #135650** Related #135565. +- **PR #135674** +- **PR #126473** Related #126436. Thanks @ayaangazali and @Oliverbot26. +- **PR #99864** Related #99843. Thanks @LZY3538 and @ayaangazali and @jrex-jooni. +- **PR #135672** +- **PR #135629** Related #135613. +- **PR #135547** Related #135535. Thanks @vyctorbrzezowski. +- **PR #135501** +- **PR #135681** Related #135575. +- **PR #135617** +- **PR #135680** +- **PR #135608** +- **PR #135685** +- **PR #135687** +- **PR #133091** Related #127333. Thanks @SunnyShu0925. +- **PR #135174** +- **PR #135470** +- **PR #135609** Related #135352. +- **PR #135698** +- **PR #135719** +- **PR #135703** +- **PR #135718** Related #135233. Thanks @boramyleng. +- **PR #135725** +- **PR #134549** Related #120134. Thanks @nerclid and @w1130150306. +- **PR #135723** +- **PR #135526** Related #135506. Thanks @vyctorbrzezowski. +- **PR #129402** Related #129401. Thanks @ashawwal. +- **PR #135712** +- **PR #135337** Related #135305. Thanks @LiuwqGit and @Cobblestone-Digital1. +- **PR #135702** Related #37634. Thanks @whyuds. +- **PR #135670** +- **PR #135721** +- **PR #135735** +- **PR #135741** +- **PR #135451** Related #135450. +- **PR #135315** +- **PR #129345** Related #129344. Thanks @amalysh. +- **PR #121618** Thanks @fr-meyer. +- **PR #135697** Related #135693. +- **PR #135752** +- **PR #135739** Related #135385. Thanks @Deregtx. +- **PR #135724** Related #135691. +- **PR #135653** +- **PR #135394** Thanks @jjjhenriksen. +- **PR #135080** +- **PR #135711** Related #135566. Thanks @goslingmanagment. +- **PR #135733** +- **PR #132379** Related #132347. Thanks @wangmiao0668000666. +- **PR #135755** Related #134331. Thanks @jjjhenriksen and @Deregtx. +- **PR #134939** Thanks @IWhatsskill and @obviyus. +- **PR #135639** +- **PR #135763** +- **PR #133847** Related #127457. Thanks @aniruddhaadak80 and @obviyus. +- **PR #135715** Related #135533. Thanks @starship863. +- **PR #135229** Related #135228. Thanks @edenfunf. +- **PR #135713** Related #135150. Thanks @Zak-Finance. +- **PR #135701** Related #135655. +- **PR #135396** Related #135335. +- **PR #135736** Related #135634, #135635, #135637, #135656. +- **PR #135580** Related #135530. Thanks @VACInc. +- **PR #135097** +- **PR #135781** +- **PR #135203** Related #135164. Thanks @SunnyShu0925 and @wojtek76. +- **PR #135772** +- **PR #135647** Related #135630. +- **PR #135270** Thanks @qingminglong. +- **PR #135292** Thanks @qingminglong. +- **PR #135564** Related #135562. Thanks @vyctorbrzezowski. +- **PR #135753** +- **PR #135787** +- **PR #135792** +- **PR #135790** Related #135785. +- **PR #135799** +- **PR #135769** +- **PR #135456** Thanks @ly85206559. +- **PR #135804** +- **PR #135806** +- **PR #129930** Thanks @ralphptorres. +- **PR #135766** +- **PR #134218** Thanks @wantosure. +- **PR #135584** Related #135556. +- **PR #135805** Thanks @hannesrudolph. +- **PR #135810** +- **PR #135417** Thanks @ly85206559. +- **PR #135583** +- **PR #135817** +- **PR #126818** Related #126808. Thanks @edenfunf and @obviyus. +- **PR #135561** Thanks @fuller-stack-dev. +- **PR #131400** Related #131231. Thanks @LiuwqGit and @obviyus and @srb11e. +- **PR #135791** Related #134353. Thanks @xiaomijituan. +- **PR #135439** Related #135365. +- **PR #135797** +- **PR #135182** Related #127591. Thanks @aniruddhaadak80 and @obviyus. +- **PR #135823** +- **PR #133888** Related #133860. Thanks @gokay-ai and @cursoragent and @Areson. +- **PR #135728** +- **PR #132697** Thanks @wangjx-xydt. +- **PR #135820** Related #135819. +- **PR #135756** +- **PR #134639** Thanks @solomonneas. +- **PR #135818** +- **PR #135784** +- **PR #70002** Thanks @xudaiyanzi. +- **PR #135738** +- **PR #135822** Thanks @hannesrudolph. +- **PR #135761** Related #135664. +- **PR #134755** Related #99272, #122233. Thanks @obviyus and @ernestrolfson-design. +- **PR #135179** Related #114020. Thanks @nissl24 and @fridaylans2000-art and @obviyus and @jooey. +- **PR #135833** +- **PR #135657** +- **PR #135135** Thanks @arpe1618. +- **PR #135834** +- **PR #135849** Related #135205. Thanks @obviyus and @virtexvirtuoso. +- **PR #135765** +- **PR #135816** +- **PR #135830** Related #135218. Thanks @obviyus and @ericcaiwx-star and @jarvismazz. +- **PR #135751** Related #135750. +- **PR #135832** +- **PR #135850** +- **PR #135854** Related #135231. Thanks @obviyus and @nikolascostello. +- **PR #135168** Thanks @mushuiyu886 and @obviyus. +- **PR #135740** Related #135515. +- **PR #135166** Related #134687. Thanks @zhangguiping-xydt and @obviyus and @giangthb. +- **PR #135466** +- **PR #135844** +- **PR #135812** +- **PR #135041** Related #134800. +- **PR #135875** +- **PR #135885** Related #135852. +- **PR #135193** Related #135086. Thanks @Alix-007 and @obviyus and @wave-workflow. +- **PR #135902** Thanks @RomneyDa. +- **PR #135870** Thanks @LZY3538. +- **PR #135795** +- **PR #135894** +- **PR #135891** +- **PR #135869** +- **PR #135903** Related #135896. +- **PR #135904** +- **PR #135898** +- **PR #135901** Related #135899. +- **PR #135873** Related #135872. +- **PR #135915** +- **PR #135926** Related #135705. Thanks @obviyus and @asgeirtj. +- **PR #135825** Related #135706. Thanks @pengzh1 and @obviyus and @ezimerman. +- **PR #135911** +- **PR #130894** Thanks @cxyhhhhh. +- **PR #135916** +- **PR #135877** +- **PR #135918** +- **PR #135255** Thanks @edenfunf. +- **PR #135760** Thanks @RomneyDa. +- **PR #135759** Thanks @RomneyDa. +- **PR #135928** Related #135921, #135922. +- **PR #135932** +- **PR #135786** +- **PR #135883** +- **PR #135940** +- **PR #135773** Related #135743. Thanks @LiuwqGit and @obviyus and @609NFT. +- **PR #135936** Related #135914. +- **PR #135942** +- **PR #135888** +- **PR #135511** Related #135487. +- **PR #135931** +- **PR #135952** +- **PR #135939** +- **PR #135956** +- **PR #135953** +- **PR #135957** Related #135682. Thanks @obviyus and @Grynn. +- **PR #135951** +- **PR #134689** Related #134621. Thanks @gaoanze888 and @wbstrbt. +- **PR #135919** Related #135658. Thanks @leilei3167 and @obviyus and @Frank683456. +- **PR #135884** Related #135571. Thanks @hyper-sdn. +- **PR #135582** +- **PR #135665** Related #135661. Thanks @Colton-Harris and @obviyus. +- **PR #135938** Related #135920, #135930. +- **PR #133829** Thanks @aniruddhaadak80. +- **PR #135878** Related #135874. +- **PR #135971** +- **PR #135758** Thanks @RomneyDa. +- **PR #135967** +- **PR #135973** +- **PR #135963** Related #135946, #135947. +- **PR #135950** +- **PR #135972** +- **PR #135974** +- **PR #135989** +- **PR #135993** Related #135990. +- **PR #135965** +- **PR #135960** +- **PR #135995** Related #135975, #135977. +- **PR #136004** Thanks @vincentkoc. +- **PR #135986** +- **PR #135994** +- **PR #135983** Thanks @vincentkoc. +- **PR #136000** Related #135966. +- **PR #136003** +- **PR #136017** +- **PR #135789** +- **PR #136020** Related #135893. Thanks @LiuwqGit. +- **PR #135794** Related #125322. Thanks @RaviTharuma. +- **PR #135998** +- **PR #135746** +- **PR #135981** Related #135968. +- **PR #136001** Related #135999. +- **PR #136027** +- **PR #135962** +- **PR #136024** +- **PR #136040** Thanks @fuller-stack-dev. +- **PR #136006** +- **PR #135729** Related #135726. Thanks @devzeroLL and @obviyus. +- **PR #135988** +- **PR #136028** +- **PR #136044** +- **PR #135731** Related #127645. Thanks @HuzaifaChaudary. +- **PR #135857** Related #135845. +- **PR #136012** Related #135948. +- **PR #136007** Thanks @vincentkoc. +- **PR #135943** +- **PR #136055** +- **PR #136054** Thanks @vincentkoc. +- **PR #136008** Related #135978. +- **PR #136031** +- **PR #135864** Related #135641. Thanks @yetval and @obviyus and @CjTruHeart. +- **PR #135961** +- **PR #136050** Related #136046. +- **PR #135976** +- **PR #135847** Related #135734. Thanks @yetval and @obviyus and @josephbergvinson. +- **PR #136030** +- **PR #136002** +- **PR #136061** Related #135991. +- **PR #136041** +- **PR #136014** +- **PR #136053** Related #136051, #136052. +- **PR #136057** +- **PR #135478** +- **PR #136043** Related #136042. +- **PR #136021** +- **PR #135829** Thanks @teddytennant and @obviyus. +- **PR #136063** +- **PR #135803** Thanks @teddytennant. +- **PR #136066** +- **PR #136010** Related #135684. Thanks @obviyus and @Grynn. +- **PR #136062** Related #136058, #136060. +- **PR #136064** Related #134337. Thanks @ThatGuySizemore. +- **PR #135848** Thanks @masatohoshino and @obviyus. +- **PR #136019** +- **PR #136086** Thanks @vincentkoc. +- **PR #136101** +- **PR #135749** Thanks @teddytennant and @obviyus. +- **PR #135831** Related #135573. Thanks @ruel225 and @obviyus and @TailsProwerWorks. +- **PR #136033** Related #135692. Thanks @obviyus and @Grynn. +- **PR #136065** Thanks @RomneyDa. +- **PR #136056** Thanks @RomneyDa. +- **PR #136077** Thanks @RomneyDa. +- **PR #136075** Thanks @RomneyDa. +- **PR #135954** Related #135949. Thanks @JosephNatsu. +- **PR #136080** +- **PR #136124** +- **PR #136108** Related #136106. Thanks @vincentkoc. +- **PR #135517** Thanks @jmewing and @obviyus. +- **PR #136112** +- **PR #135742** Thanks @marmar9615-cloud and @obviyus. +- **PR #135520** Related #135459. Thanks @gaoanze888 and @obviyus and @LifeViwer. +- **PR #136093** Related #46932, #136089. Thanks @jeffrey4341. +- **PR #136078** +- **PR #135748** Thanks @teddytennant and @obviyus. +- **PR #136121** +- **PR #136067** +- **PR #136114** +- **PR #136109** Related #136087. +- **PR #136119** +- **PR #136141** +- **PR #136091** Related #136083. +- **PR #135351** Thanks @teddytennant and @obviyus. +- **PR #136136** +- **PR #136152** Related #136128. +- **PR #136090** Related #136081. +- **PR #136023** Related #135881. Thanks @leilei3167 and @obviyus and @yetval. +- **PR #136092** Thanks @pash-openai. +- **PR #136125** +- **PR #136099** +- **PR #136133** Related #136118. +- **PR #135807** Thanks @teddytennant. +- **PR #136069** +- **PR #136164** Thanks @vincentkoc. +- **PR #136162** +- **PR #136160** +- **PR #136132** Related #136117. +- **PR #136166** +- **PR #135516** Thanks @RayWangyangMa and @obviyus. +- **PR #136111** Related #136102. +- **PR #134648** Related #134500. Thanks @sunlit-deng and @obviyus and @LowCode191. +- **PR #136191** +- **PR #136153** +- **PR #93842** Thanks @bladin. +- **PR #136167** Related #136163. +- **PR #134333** Related #134332. Thanks @TheAngryPit and @obviyus. +- **PR #134219** Related #134187. Thanks @tzlwn1 and @obviyus and @svdwalt007. +- **PR #136195** +- **PR #136193** +- **PR #136169** +- **PR #135467** Thanks @Yigtwxx. +- **PR #134737** Thanks @lzhan011 and @obviyus. +- **PR #136137** Thanks @vincentkoc. +- **PR #136186** +- **PR #136201** Related #136198. +- **PR #136150** +- **PR #136209** +- **PR #136072** +- **PR #136127** Thanks @vincentkoc. +- **PR #136187** +- **PR #135083** Thanks @rwinkelman and @obviyus. +- **PR #136180** +- **PR #136227** Related #136224. +- **PR #135281** Thanks @xialonglee. +- **PR #135341** Thanks @teddytennant and @obviyus. +- **PR #136228** Related #136139, #136140. +- **PR #136134** +- **PR #134525** Thanks @sjf-oa and @sjf. +- **PR #136222** +- **PR #136214** Related #136206, #136207, #136208. +- **PR #135855** Related #96135. Thanks @yungchentang and @kAIborg24. +- **PR #135671** Thanks @fuller-stack-dev. +- **PR #132492** Thanks @RileyJJY. +- **PR #132490** Thanks @RileyJJY. +- **PR #135851** +- **PR #136142** Thanks @qingminglong and @obviyus. +- **PR #136182** +- **PR #136243** +- **PR #136232** +- **PR #136161** +- **PR #135846** Related #135633. Thanks @louisfy and @obviyus and @jakestenger. +- **PR #136192** +- **PR #135455** Thanks @ly85206559 and @obviyus. +- **PR #136241** Related #136237. +- **PR #136245** +- **PR #136223** +- **PR #136254** +- **PR #131408** Thanks @igs-rogenlo. +- **PR #136216** +- **PR #136196** Related #136143. +- **PR #136151** Related #136104. Thanks @ericcaiwx-star and @obviyus and @KimOckHyun. +- **PR #136234** Related #136204. Thanks @LiuwqGit and @obviyus and @Volevanius. +- **PR #135925** Related #135435. Thanks @xialonglee and @obviyus and @jaxonparrott. +- **PR #136256** Related #136225. Thanks @obviyus and @Famyoff. +- **PR #136184** +- **PR #136221** Related #136217. +- **PR #136205** Thanks @quangtran88. +- **PR #133871** Thanks @SebTardif and @obviyus. +- **PR #136272** +- **PR #135985** Related #135836. Thanks @gaoanze888 and @obviyus and @yetval. +- **PR #136105** +- **PR #132753** Related #132750. Thanks @tommyjoseph. +- **PR #136265** +- **PR #136215** Related #136159. Thanks @LiuwqGit and @obviyus and @wave-workflow. +- **PR #136171** Thanks @efe-arv and @liri-ha and @obviyus. +- **PR #136229** +- **PR #136172** Related #136015. Thanks @NianJiuZst and @obviyus and @davidcittadini. +- **PR #135462** Thanks @fuller-stack-dev. +- **PR #136278** Thanks @jodok. +- **PR #136173** Related #128926. Thanks @aniruddhaadak80. +- **PR #136085** Related #136070. +- **PR #136036** Related #136032. +- **PR #135824** Thanks @vincentkoc. +- **PR #135793** Thanks @vincentkoc. +- **PR #136280** +- **PR #135443** Thanks @lzhan011 and @obviyus. +- **PR #136287** +- **PR #133747** Related #133743, #133785. Thanks @shakkernerd. +- **PR #136291** +- **PR #133978** Thanks @yetval. +- **PR #136263** +- **PR #135828** Thanks @griswomw2 and @obviyus. +- **PR #136298** +- **PR #136211** +- **PR #135016** Thanks @jesse-merhi. +- **PR #136296** +- **PR #136138** Thanks @RomneyDa. +- **PR #136305** +- **PR #136249** +- **PR #136247** Related #136219. +- **PR #131786** Related #131781. Thanks @vyctorbrzezowski. +- **PR #136283** Related #135905. Thanks @obviyus and @anyech. +- **PR #136018** +- **PR #136304** +- **PR #136312** +- **PR #136315** Thanks @vincentkoc. +- **PR #136233** Thanks @RomneyDa. +- **PR #136307** +- **PR #136316** +- **PR #135508** Related #135457. Thanks @gaoanze888 and @obviyus and @itsuzef. +- **PR #136107** Thanks @vincentkoc. +- **PR #136323** +- **PR #136308** Thanks @vincentkoc. +- **PR #133724** Related #133702. +- **PR #136269** Thanks @yetval and @obviyus. +- **PR #136347** +- **PR #136351** +- **PR #136344** +- **PR #136336** +- **PR #136353** +- **PR #136185** +- **PR #136335** +- **PR #136352** +- **PR #136168** Related #136157. +- **PR #135441** Thanks @jjjhenriksen and @obviyus. +- **PR #135796** +- **PR #136273** +- **PR #136276** Related #136275. Thanks @vincentkoc. +- **PR #135486** Thanks @zeroaltitude and @obviyus. +- **PR #136354** +- **PR #136380** +- **PR #136377** +- **PR #136381** +- **PR #135301** Related #135028. Thanks @mushuiyu886 and @obviyus and @jadabreu. +- **PR #136359** +- **PR #134853** Related #134851. Thanks @cmanrav and @obviyus. +- **PR #132983** Thanks @fuller-stack-dev. +- **PR #136407** Related #136406. +- **PR #136340** +- **PR #136389** +- **PR #136416** +- **PR #136417** Related #136415. +- **PR #136309** Thanks @vincentkoc. +- **PR #136418** +- **PR #136398** +- **PR #136404** +- **PR #136319** Thanks @vincentkoc. +- **PR #136403** +- **PR #133381** Thanks @ericcaiwx-star and @cursoragent and @obviyus. +- **PR #136391** +- **PR #136362** +- **PR #136425** +- **PR #134663** Thanks @jalehman. +- **PR #135863** Related #135618. Thanks @vyctorbrzezowski. +- **PR #127959** Related #127948. Thanks @Finn763 and @markswitch83. +- **PR #136178** Thanks @masatohoshino and @obviyus. +- **PR #136301** Related #135860. Thanks @zhangguiping-xydt and @obviyus and @zqchris. +- **PR #136438** +- **PR #136448** +- **PR #136473** +- **PR #136450** +- **PR #134795** Thanks @eleqtrizit. +- **PR #136402** Related #136397. Thanks @ly85206559. +- **PR #136481** +- **PR #135219** Related #132452. Thanks @SunnyShu0925 and @obviyus and @alexph-dev. +- **PR #135798** Related #135649. Thanks @SunnyShu0925 and @markhaines. +- **PR #136393** +- **PR #134941** Thanks @itsuzef and @obviyus. +- **PR #136444** Related #136442, #136443. +- **PR #136483** +- **PR #136446** +- **PR #136479** +- **PR #129918** Related #129734. Thanks @SunnyShu0925 and @obviyus and @hpyhandsome. +- **PR #136522** +- **PR #135430** Related #135217, #135249. Thanks @Solvely-Colin and @nikolaihack. +- **PR #135429** Related #135251. +- **PR #135295** Thanks @PollyBot13 and @obviyus. +- **PR #136534** +- **PR #136419** +- **PR #136388** Thanks @vincentkoc. +- **PR #136460** +- **PR #136463** +- **PR #134819** Thanks @qingminglong and @obviyus. +- **PR #136423** Related #134186. Thanks @svdwalt007. +- **PR #136500** +- **PR #136440** +- **PR #134858** Thanks @Artemeey and @obviyus. +- **PR #136434** Thanks @masatohoshino and @obviyus. +- **PR #136461** +- **PR #136541** +- **PR #136445** Related #136441. +- **PR #136470** +- **PR #136413** Related #136047. +- **PR #136428** +- **PR #136510** Related #126872. Thanks @danielduerr. +- **PR #136401** +- **PR #136550** +- **PR #136435** +- **PR #136567** +- **PR #136451** +- **PR #136420** Related #133955. Thanks @obviyus and @aoclaw-glitch. +- **PR #136511** +- **PR #136539** Related #136538. +- **PR #136570** Related #75848. Thanks @alfredjbclaw. +- **PR #136501** +- **PR #136457** +- **PR #136540** +- **PR #136478** +- **PR #136399** Related #136385. +- **PR #136220** +- **PR #135945** Related #135882. Thanks @ruel225 and @obviyus and @yetval. +- **PR #136580** +- **PR #136439** Related #136437. +- **PR #136469** Related #136468. +- **PR #136366** Thanks @vincentkoc. +- **PR #136574** Related #136573. +- **PR #131735** Related #131734. Thanks @ruel225. +- **PR #136577** +- **PR #136527** Thanks @Patrick-Erichsen. +- **PR #136373** Related #136357. Thanks @LiuwqGit and @obviyus and @Dresch63. +- **PR #136094** Thanks @RomneyDa. +- **PR #133445** Thanks @edenfunf. +- **PR #135588** Related #135538. Thanks @VACInc. +- **PR #136230** Related #136068. +- **PR #136572** Related #136562. +- **PR #136559** +- **PR #135410** Thanks @ly85206559. +- **PR #136566** +- **PR #136571** +- **PR #136601** +- **PR #136590** +- **PR #136542** Thanks @Patrick-Erichsen. +- **PR #135923** Thanks @BennyAI2. +- **PR #136532** +- **PR #136465** Related #136464. +- **PR #136569** Related #136568. +- **PR #136603** +- **PR #136615** +- **PR #136604** Related #136593. +- **PR #136521** +- **PR #136602** +- **PR #136430** +- **PR #136616** +- **PR #136607** Thanks @Patrick-Erichsen. +- **PR #136620** +- **PR #136597** +- **PR #136624** Thanks @RomneyDa. +- **PR #136531** Related #136530. +- **PR #136537** Related #136536. +- **PR #136628** Thanks @RomneyDa. +- **PR #136614** Thanks @Patrick-Erichsen. +- **PR #136504** Thanks @drobison00. +- **PR #126419** Thanks @drobison00. +- **PR #136505** Thanks @drobison00. +- **PR #136564** Related #136563. +- **PR #136286** +- **PR #136596** Related #136594, #136595. +- **PR #136509** Related #136499. +- **PR #136599** Related #136598. +- **PR #136600** Related #136591. +- **PR #132266** Thanks @MonkeyLeeT. +- **PR #136637** Thanks @Patrick-Erichsen. +- **PR #136520** +- **PR #136621** +- **PR #136557** Related #136556. +- **PR #135531** Thanks @MertBasar0 and @obviyus. +- **PR #136626** +- **PR #136176** Thanks @vincentkoc. +- **PR #136633** Related #136632. +- **PR #136519** +- **PR #136636** Related #136635. +- **PR #136578** Thanks @LiuwqGit. +- **PR #136325** Thanks @vincentkoc. +- **PR #136619** Thanks @shakkernerd. +- **PR #136641** Related #136640. Thanks @vincentkoc. +- **PR #134622** Thanks @eleqtrizit. +- **PR #136654** +- **PR #136606** Thanks @Patrick-Erichsen. +- **PR #136627** Thanks @RomneyDa. +- **PR #135744** Thanks @vincentkoc. +- **PR #136657** Related #136656. +- **PR #136524** +- **PR #136664** Related #136662. +- **PR #136668** Thanks @Patrick-Erichsen. +- **PR #136658** +- **PR #133660** Related #133517. +- **PR #134603** Thanks @eleqtrizit. +- **PR #134368** Thanks @BryanTegomoh. +- **PR #136037** Thanks @RomneyDa. +- **PR #136038** Thanks @RomneyDa. +- **PR #136666** Related #136665. +- **PR #134413** Related #134409. Thanks @vyctorbrzezowski. +- **PR #133151** Related #133128. Thanks @aniruddhaadak80. +- **PR #136672** +- **PR #136605** Thanks @vincentkoc. +- **PR #136676** +- **PR #136646** Thanks @Patrick-Erichsen. +- **PR #136647** Thanks @Patrick-Erichsen. +- **PR #136648** Thanks @Patrick-Erichsen. +- **PR #136649** Thanks @Patrick-Erichsen. +- **PR #136650** Thanks @Patrick-Erichsen. +- **PR #136681** Thanks @vincentkoc. +- **PR #136644** +- **PR #136495** Related #136493. +- **PR #135802** Thanks @vincentkoc. +- **PR #136643** Related #136638. +- **PR #135722** Related #135720. Thanks @vyctorbrzezowski. +- **PR #136517** Related #136516. +- **PR #136670** Thanks @vincentkoc. +- **PR #136685** +- **PR #136683** +- **PR #136688** +- **PR #136700** +- **PR #136667** Thanks @vincentkoc. +- **PR #136659** +- **PR #136295** +- **PR #136698** +- **PR #136695** +- **PR #135859** Thanks @vincentkoc. +- **PR #136704** +- **PR #136678** +- **PR #136705** +- **PR #136716** +- **PR #136717** +- **PR #136675** +- **PR #136458** Related #136455, #136456. +- **PR #136084** +- **PR #136350** +- **PR #136609** Thanks @Patrick-Erichsen. +- **PR #136770** +- **PR #136771** +- **PR #136798** +- **PR #136968** +- **PR #136395** Thanks @fuller-stack-dev and @vincentkoc. +- **PR #137012** Related #136881. Thanks @leilei3167 and @obviyus and @anordick. ## 2026.8.2 ### Highlights diff --git a/apps/macos/Sources/OpenClaw/Resources/Info.plist b/apps/macos/Sources/OpenClaw/Resources/Info.plist index 5edd9e34b9ad..7773f9650096 100644 --- a/apps/macos/Sources/OpenClaw/Resources/Info.plist +++ b/apps/macos/Sources/OpenClaw/Resources/Info.plist @@ -15,9 +15,9 @@ CFBundlePackageType APPL CFBundleShortVersionString - 2026.8.1 + 2026.9.1 CFBundleVersion - 2026080100 + 2026090100 CFBundleIconFile OpenClaw CFBundleIconName diff --git a/extensions/a2a/package.json b/extensions/a2a/package.json index a9c657238ef8..1462bc537478 100644 --- a/extensions/a2a/package.json +++ b/extensions/a2a/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/a2a", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw A2A v1.0 Agent-to-Agent protocol channel plugin", "repository": { "type": "git", @@ -20,7 +20,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { diff --git a/extensions/acpx/package.json b/extensions/acpx/package.json index c19e11307044..946e93f83cd0 100644 --- a/extensions/acpx/package.json +++ b/extensions/acpx/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/acpx", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw ACP runtime backend with plugin-owned session and transport management.", "repository": { "type": "git", @@ -43,10 +43,10 @@ ] }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "staticAssets": [ { "source": "./src/runtime-internals/mcp-proxy.mjs", diff --git a/extensions/admin-http-rpc/package.json b/extensions/admin-http-rpc/package.json index 6da90c8520d3..9eebdc0687cf 100644 --- a/extensions/admin-http-rpc/package.json +++ b/extensions/admin-http-rpc/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/admin-http-rpc", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw admin HTTP RPC endpoint", "type": "module", diff --git a/extensions/alibaba/package.json b/extensions/alibaba/package.json index a6189f013a86..64cbf9d71cbc 100644 --- a/extensions/alibaba/package.json +++ b/extensions/alibaba/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/alibaba-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw Alibaba Model Studio video provider plugin", "type": "module", diff --git a/extensions/amazon-bedrock-mantle/package.json b/extensions/amazon-bedrock-mantle/package.json index 6ede9f44b0f8..f060b75a8624 100644 --- a/extensions/amazon-bedrock-mantle/package.json +++ b/extensions/amazon-bedrock-mantle/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/amazon-bedrock-mantle-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Amazon Bedrock Mantle provider plugin for OpenAI-compatible model routing.", "repository": { "type": "git", @@ -24,10 +24,10 @@ "minHostVersion": ">=2026.5.12-beta.1" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/amazon-bedrock/package.json b/extensions/amazon-bedrock/package.json index 1c7f1201ad51..f01c40af53da 100644 --- a/extensions/amazon-bedrock/package.json +++ b/extensions/amazon-bedrock/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/amazon-bedrock-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Amazon Bedrock provider plugin with model discovery, embeddings, and guardrail support.", "repository": { "type": "git", @@ -28,10 +28,10 @@ "minHostVersion": ">=2026.5.12-beta.1" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/anthropic-vertex/package.json b/extensions/anthropic-vertex/package.json index aa23a2749176..e9329aed0d0e 100644 --- a/extensions/anthropic-vertex/package.json +++ b/extensions/anthropic-vertex/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/anthropic-vertex-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Anthropic Vertex provider plugin for Claude models on Google Vertex AI.", "repository": { "type": "git", @@ -25,10 +25,10 @@ "minHostVersion": ">=2026.5.12-beta.1" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/anthropic/package.json b/extensions/anthropic/package.json index 9243cd6987ac..0d7c604f6beb 100644 --- a/extensions/anthropic/package.json +++ b/extensions/anthropic/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/anthropic-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw Anthropic provider, Claude CLI, and native session catalog plugin", "type": "module", diff --git a/extensions/arcee/package.json b/extensions/arcee/package.json index 499c65436903..367e3e3fa806 100644 --- a/extensions/arcee/package.json +++ b/extensions/arcee/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/arcee-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Arcee provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/azure-speech/package.json b/extensions/azure-speech/package.json index 781bdc148814..ff44722e2879 100644 --- a/extensions/azure-speech/package.json +++ b/extensions/azure-speech/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/azure-speech", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw Azure Speech plugin", "type": "module", diff --git a/extensions/baseten/package.json b/extensions/baseten/package.json index ec9333a4fbc8..88f6316041a1 100644 --- a/extensions/baseten/package.json +++ b/extensions/baseten/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/baseten-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Baseten provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/beam/package.json b/extensions/beam/package.json index bffd2564dd37..97a131cc340e 100644 --- a/extensions/beam/package.json +++ b/extensions/beam/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/beam", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "Read-only coding-session Beam receiver", "type": "module", diff --git a/extensions/bonjour/package.json b/extensions/bonjour/package.json index 47b160e62192..edf56489301c 100644 --- a/extensions/bonjour/package.json +++ b/extensions/bonjour/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/bonjour", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Bonjour/mDNS gateway discovery", "type": "module", "dependencies": { diff --git a/extensions/brave/package.json b/extensions/brave/package.json index 0b91eac8e4af..fd6c7dbe3f7a 100644 --- a/extensions/brave/package.json +++ b/extensions/brave/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/brave-plugin", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Brave Search provider plugin for web search.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "allowInvalidConfigRecovery": true }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/browser/package.json b/extensions/browser/package.json index 40dc7885d050..5c8970ff2fa0 100644 --- a/extensions/browser/package.json +++ b/extensions/browser/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/browser-plugin", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw browser tool plugin", "type": "module", diff --git a/extensions/buzz/package.json b/extensions/buzz/package.json index ae2e7b8d087c..fc19c9c1e748 100644 --- a/extensions/buzz/package.json +++ b/extensions/buzz/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/buzz", - "version": "2026.8.1", + "version": "2026.9.1", "description": "Connect OpenClaw agents to Buzz rooms", "repository": { "type": "git", @@ -16,7 +16,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -74,7 +74,9 @@ "flags": "--use-env", "description": "Use BUZZ_PRIVATE_KEY with the supplied relay URL" }, - "envVars": ["BUZZ_PRIVATE_KEY"] + "envVars": [ + "BUZZ_PRIVATE_KEY" + ] } ] } @@ -86,10 +88,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/byteplus/package.json b/extensions/byteplus/package.json index 8b5df9feedcf..434daab02643 100644 --- a/extensions/byteplus/package.json +++ b/extensions/byteplus/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/byteplus-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw BytePlus provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/canvas/package.json b/extensions/canvas/package.json index e7669f28dc62..968cfe8c31e4 100644 --- a/extensions/canvas/package.json +++ b/extensions/canvas/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/canvas-plugin", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw Canvas plugin", "type": "module", diff --git a/extensions/cerebras/package.json b/extensions/cerebras/package.json index f2b27f9403d7..b428a83dfad3 100644 --- a/extensions/cerebras/package.json +++ b/extensions/cerebras/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/cerebras-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Cerebras provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/chutes/package.json b/extensions/chutes/package.json index 10ccb5620d1e..e9836d6cfa87 100644 --- a/extensions/chutes/package.json +++ b/extensions/chutes/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/chutes-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Chutes.ai provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/clawrouter/package.json b/extensions/clawrouter/package.json index 3ba44cd19480..4e89f94e1b78 100644 --- a/extensions/clawrouter/package.json +++ b/extensions/clawrouter/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/clawrouter", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw ClawRouter plugin", "type": "module", diff --git a/extensions/clickclack/package.json b/extensions/clickclack/package.json index 7684e878f686..c2f6c7b7a5ce 100644 --- a/extensions/clickclack/package.json +++ b/extensions/clickclack/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/clickclack", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw ClickClack channel plugin", "type": "module", "exports": { @@ -17,7 +17,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -128,7 +128,9 @@ "flags": "--use-env", "description": "Use CLICKCLACK_BOT_TOKEN" }, - "envVars": ["CLICKCLACK_BOT_TOKEN"] + "envVars": [ + "CLICKCLACK_BOT_TOKEN" + ] } ] } @@ -141,10 +143,10 @@ "allowInvalidConfigRecovery": true }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/cloudflare-ai-gateway/package.json b/extensions/cloudflare-ai-gateway/package.json index 9eb1fe3d6728..6ef8bbe62eae 100644 --- a/extensions/cloudflare-ai-gateway/package.json +++ b/extensions/cloudflare-ai-gateway/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/cloudflare-ai-gateway-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Cloudflare AI Gateway provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/codex/package.json b/extensions/codex/package.json index c03b99fc89ec..34333f72a970 100644 --- a/extensions/codex/package.json +++ b/extensions/codex/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/codex", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Codex app-server harness and native session supervision plugin.", "repository": { "type": "git", @@ -36,10 +36,10 @@ ] }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/cohere/package.json b/extensions/cohere/package.json index 57735a171957..3eed53495dc4 100644 --- a/extensions/cohere/package.json +++ b/extensions/cohere/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/cohere-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Cohere provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/comfy/package.json b/extensions/comfy/package.json index 195169abbc54..1c9d5c93497f 100644 --- a/extensions/comfy/package.json +++ b/extensions/comfy/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/comfy-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw ComfyUI provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/copilot-proxy/package.json b/extensions/copilot-proxy/package.json index 96ca77877015..04d0cd7a2ea7 100644 --- a/extensions/copilot-proxy/package.json +++ b/extensions/copilot-proxy/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/copilot-proxy", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw Copilot Proxy provider plugin", "type": "module", diff --git a/extensions/copilot/package.json b/extensions/copilot/package.json index e371db6604fa..8ebef9ecc455 100644 --- a/extensions/copilot/package.json +++ b/extensions/copilot/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/copilot", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw GitHub Copilot agent runtime plugin (registers a `github-copilot` AgentHarness backed by @github/copilot-sdk over JSON-RPC to the GitHub Copilot CLI)", "repository": { "type": "git", @@ -24,10 +24,10 @@ "minHostVersion": ">=2026.5.28" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/crabbox/package.json b/extensions/crabbox/package.json index 1833fab77cfd..46d3278343e3 100644 --- a/extensions/crabbox/package.json +++ b/extensions/crabbox/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/crabbox-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw cloud worker provider backed by the Crabbox CLI", "type": "module", diff --git a/extensions/cua-computer/package.json b/extensions/cua-computer/package.json index 093f0dade063..45bdf2b89faa 100644 --- a/extensions/cua-computer/package.json +++ b/extensions/cua-computer/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/cua-computer", - "version": "2026.8.1", + "version": "2026.9.1", "description": "Experimental CUA Driver computer control for macOS, Windows, and Linux node hosts", "type": "module", "dependencies": { diff --git a/extensions/deepgram/package.json b/extensions/deepgram/package.json index 28b40af2b828..91198af20098 100644 --- a/extensions/deepgram/package.json +++ b/extensions/deepgram/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/deepgram-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw Deepgram media-understanding provider", "type": "module", diff --git a/extensions/deepinfra/package.json b/extensions/deepinfra/package.json index 579a723c20ce..cb59b51416b6 100644 --- a/extensions/deepinfra/package.json +++ b/extensions/deepinfra/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/deepinfra-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw DeepInfra provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/deepseek/package.json b/extensions/deepseek/package.json index c6df5c709ea8..8a3fa0bd0136 100644 --- a/extensions/deepseek/package.json +++ b/extensions/deepseek/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/deepseek-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw DeepSeek provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/diagnostics-otel/package.json b/extensions/diagnostics-otel/package.json index 4cb24c17082f..ece1974d1215 100644 --- a/extensions/diagnostics-otel/package.json +++ b/extensions/diagnostics-otel/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/diagnostics-otel", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw diagnostics OpenTelemetry exporter for metrics, traces, and logs.", "repository": { "type": "git", @@ -37,10 +37,10 @@ "minHostVersion": ">=2026.4.25" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/diagnostics-prometheus/package.json b/extensions/diagnostics-prometheus/package.json index d3d260b13ba0..742ee19c54d1 100644 --- a/extensions/diagnostics-prometheus/package.json +++ b/extensions/diagnostics-prometheus/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/diagnostics-prometheus", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw diagnostics Prometheus exporter for runtime metrics.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.4.25" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/diffs-language-pack/package.json b/extensions/diffs-language-pack/package.json index 59891e0241d8..5a3948432120 100644 --- a/extensions/diffs-language-pack/package.json +++ b/extensions/diffs-language-pack/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/diffs-language-pack", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw diffs viewer syntax highlighting language pack", "repository": { "type": "git", @@ -21,14 +21,14 @@ "minHostVersion": ">=2026.5.27" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "assetScripts": { "build": "node --import tsx ../../scripts/build-diffs-viewer-runtime.mts full" }, "build": { "bundledDist": false, - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "staticAssets": [ { "source": "./assets/viewer-runtime.js", diff --git a/extensions/diffs/package.json b/extensions/diffs/package.json index 55543ca74160..0069acdca6c4 100644 --- a/extensions/diffs/package.json +++ b/extensions/diffs/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/diffs", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw read-only diff viewer plugin and file renderer for agents.", "repository": { "type": "git", @@ -28,14 +28,14 @@ "minHostVersion": ">=2026.4.30" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "assetScripts": { "build": "node --import tsx ../../scripts/build-diffs-viewer-runtime.mts curated" }, "build": { "bundledDist": false, - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "staticAssets": [ { "source": "./assets/viewer-runtime.js", diff --git a/extensions/discord/package.json b/extensions/discord/package.json index eb514238bd01..d35a197dd92c 100644 --- a/extensions/discord/package.json +++ b/extensions/discord/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/discord", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Discord channel plugin for channels, DMs, commands, and app events.", "repository": { "type": "git", @@ -23,7 +23,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -74,7 +74,9 @@ "flags": "--use-env", "description": "Use DISCORD_BOT_TOKEN" }, - "envVars": ["DISCORD_BOT_TOKEN"] + "envVars": [ + "DISCORD_BOT_TOKEN" + ] } ] }, @@ -96,11 +98,11 @@ "allowInvalidConfigRecovery": true }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { "bundledDist": false, - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "staticAssets": [ { "source": "./assets/embedded-app-sdk.mjs", diff --git a/extensions/document-extract/package.json b/extensions/document-extract/package.json index 1c4c35cce2be..3b5cca8bced6 100644 --- a/extensions/document-extract/package.json +++ b/extensions/document-extract/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/document-extract-plugin", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw local document extraction plugin", "type": "module", diff --git a/extensions/duckduckgo/package.json b/extensions/duckduckgo/package.json index c9acbe316b89..8614761eb77e 100644 --- a/extensions/duckduckgo/package.json +++ b/extensions/duckduckgo/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/duckduckgo-plugin", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw DuckDuckGo plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/elevenlabs/package.json b/extensions/elevenlabs/package.json index cc1049fb958a..caf147a5080a 100644 --- a/extensions/elevenlabs/package.json +++ b/extensions/elevenlabs/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/elevenlabs-speech", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw ElevenLabs speech plugin", "type": "module", diff --git a/extensions/exa/package.json b/extensions/exa/package.json index 0fbcc2b3a09c..94b6268d9f30 100644 --- a/extensions/exa/package.json +++ b/extensions/exa/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/exa-plugin", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Exa plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/fal/package.json b/extensions/fal/package.json index 76da53804619..ee66eaea7c81 100644 --- a/extensions/fal/package.json +++ b/extensions/fal/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/fal-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw fal provider plugin", "type": "module", diff --git a/extensions/featherless/package.json b/extensions/featherless/package.json index eba3b030a8f4..4db4250dcfcd 100644 --- a/extensions/featherless/package.json +++ b/extensions/featherless/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/featherless-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Featherless AI provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.11" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/feishu/package.json b/extensions/feishu/package.json index d1e27e7142b9..0adfa82792a8 100644 --- a/extensions/feishu/package.json +++ b/extensions/feishu/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/feishu", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Feishu/Lark channel plugin for chats and workplace tools (community maintained by @m1heng).", "repository": { "type": "git", @@ -20,7 +20,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -66,11 +66,11 @@ "minHostVersion": ">=2026.5.29" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { "bundledDist": false, - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/file-transfer/package.json b/extensions/file-transfer/package.json index 7ff064b9a13d..32f9206c2335 100644 --- a/extensions/file-transfer/package.json +++ b/extensions/file-transfer/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/file-transfer", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw file transfer plugin (file_fetch, dir_list, dir_fetch, file_write)", "type": "module", "dependencies": { diff --git a/extensions/firecrawl/package.json b/extensions/firecrawl/package.json index a969db08297e..4de0b263a0be 100644 --- a/extensions/firecrawl/package.json +++ b/extensions/firecrawl/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/firecrawl-plugin", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Firecrawl plugin.", "repository": { "type": "git", @@ -25,10 +25,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/fireworks/package.json b/extensions/fireworks/package.json index 8e601dd60272..7f3de3290104 100644 --- a/extensions/fireworks/package.json +++ b/extensions/fireworks/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/fireworks-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Fireworks provider plugin", "type": "module", "devDependencies": { @@ -17,10 +17,10 @@ "minHostVersion": ">=2026.6.9" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/fish-audio-speech/package.json b/extensions/fish-audio-speech/package.json index 5323b924f0d2..412f4a56c7ed 100644 --- a/extensions/fish-audio-speech/package.json +++ b/extensions/fish-audio-speech/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/fish-audio-speech", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Fish Audio speech plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/geolocation/package.json b/extensions/geolocation/package.json index 15bcd78acd84..04d86fe21086 100644 --- a/extensions/geolocation/package.json +++ b/extensions/geolocation/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/geolocation-plugin", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw geolocation plugin resolving client IP addresses to a coarse city using a locally cached IP-geolocation database.", "repository": { "type": "git", @@ -18,10 +18,10 @@ "./index.ts" ], "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" } } } diff --git a/extensions/github-copilot/package.json b/extensions/github-copilot/package.json index 3c5db97aec70..c21471ffeab6 100644 --- a/extensions/github-copilot/package.json +++ b/extensions/github-copilot/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/github-copilot-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw GitHub Copilot provider plugin", "type": "module", diff --git a/extensions/gmi/package.json b/extensions/gmi/package.json index 7f29039d7e16..55b7dd31bc22 100644 --- a/extensions/gmi/package.json +++ b/extensions/gmi/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/gmi-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw GMI Cloud provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/google-meet/package.json b/extensions/google-meet/package.json index 01efe9f73541..00ff39acd1a7 100644 --- a/extensions/google-meet/package.json +++ b/extensions/google-meet/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/google-meet", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Google Meet participant plugin for joining calls through Chrome or Twilio transports.", "repository": { "type": "git", @@ -16,7 +16,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -33,10 +33,10 @@ "minHostVersion": ">=2026.4.20" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/google/package.json b/extensions/google/package.json index 3a59d19710a9..bb541d2a486c 100644 --- a/extensions/google/package.json +++ b/extensions/google/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/google-plugin", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw Google plugin", "type": "module", diff --git a/extensions/googlechat/package.json b/extensions/googlechat/package.json index d698c972c6c3..544cdcf916a3 100644 --- a/extensions/googlechat/package.json +++ b/extensions/googlechat/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/googlechat", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Google Chat channel plugin for spaces and direct messages.", "repository": { "type": "git", @@ -16,7 +16,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -123,7 +123,10 @@ "flags": "--use-env", "description": "Use Google Chat environment credentials" }, - "envVars": ["GOOGLE_CHAT_SERVICE_ACCOUNT", "GOOGLE_CHAT_SERVICE_ACCOUNT_FILE"], + "envVars": [ + "GOOGLE_CHAT_SERVICE_ACCOUNT", + "GOOGLE_CHAT_SERVICE_ACCOUNT_FILE" + ], "envVarMode": "any" } ] @@ -135,10 +138,10 @@ "minHostVersion": ">=2026.4.10" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/gradium/package.json b/extensions/gradium/package.json index 036ce14c04ae..a0dd3a530146 100644 --- a/extensions/gradium/package.json +++ b/extensions/gradium/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/gradium-speech", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Gradium speech plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/groq/package.json b/extensions/groq/package.json index 2fd9e1ef9464..24f52ddec505 100644 --- a/extensions/groq/package.json +++ b/extensions/groq/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/groq-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Groq media-understanding provider.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/huggingface/package.json b/extensions/huggingface/package.json index 670c3b584bcf..ac0c2979f8ba 100644 --- a/extensions/huggingface/package.json +++ b/extensions/huggingface/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/huggingface-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw Hugging Face provider plugin", "type": "module", diff --git a/extensions/image-generation-core/package.json b/extensions/image-generation-core/package.json index c13d147add1b..6aedbba8289f 100644 --- a/extensions/image-generation-core/package.json +++ b/extensions/image-generation-core/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/image-generation-core", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw image generation runtime package", "type": "module", diff --git a/extensions/imap/package.json b/extensions/imap/package.json index 242b25c5aabc..05452fe2ed62 100644 --- a/extensions/imap/package.json +++ b/extensions/imap/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/imap", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw inbound IMAP email trigger plugin", "type": "module", @@ -14,6 +14,8 @@ "@types/mailparser": "3.4.6" }, "openclaw": { - "extensions": ["./index.ts"] + "extensions": [ + "./index.ts" + ] } } diff --git a/extensions/imessage/package.json b/extensions/imessage/package.json index d738565e5e40..b87f84a1e5fe 100644 --- a/extensions/imessage/package.json +++ b/extensions/imessage/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/imessage", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw iMessage channel plugin using imsg on a signed-in Mac", "repository": { "type": "git", @@ -16,7 +16,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -96,10 +96,10 @@ "allowInvalidConfigRecovery": true }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/inworld/package.json b/extensions/inworld/package.json index a414ba78d391..4f708c84226a 100644 --- a/extensions/inworld/package.json +++ b/extensions/inworld/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/inworld-speech", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Inworld speech plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/irc/package.json b/extensions/irc/package.json index 8876159ab159..800d9ba5ef5e 100644 --- a/extensions/irc/package.json +++ b/extensions/irc/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/irc", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw IRC channel plugin", "type": "module", "devDependencies": { @@ -115,16 +115,19 @@ "flags": "--use-env", "description": "Use IRC environment configuration" }, - "envVars": ["IRC_HOST", "IRC_NICK"] + "envVars": [ + "IRC_HOST", + "IRC_NICK" + ] } ] } }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/kilocode/package.json b/extensions/kilocode/package.json index 507b3f73258a..d752202224c2 100644 --- a/extensions/kilocode/package.json +++ b/extensions/kilocode/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/kilocode-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Kilo Gateway provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/kimi-coding/package.json b/extensions/kimi-coding/package.json index 78ca61f444f4..f3eabbc02fd2 100644 --- a/extensions/kimi-coding/package.json +++ b/extensions/kimi-coding/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/kimi-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Kimi provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/line/package.json b/extensions/line/package.json index 4ff41ade9dfd..c6a79b4ee7f9 100644 --- a/extensions/line/package.json +++ b/extensions/line/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/line", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw LINE channel plugin for LINE Bot API chats.", "repository": { "type": "git", @@ -17,7 +17,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -102,7 +102,10 @@ "flags": "--use-env", "description": "Use LINE environment credentials" }, - "envVars": ["LINE_CHANNEL_ACCESS_TOKEN", "LINE_CHANNEL_SECRET"] + "envVars": [ + "LINE_CHANNEL_ACCESS_TOKEN", + "LINE_CHANNEL_SECRET" + ] } ] } @@ -113,10 +116,10 @@ "minHostVersion": ">=2026.4.10" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/linux-node/package.json b/extensions/linux-node/package.json index 392e16f7f7dd..3a6b0b61b6de 100644 --- a/extensions/linux-node/package.json +++ b/extensions/linux-node/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/linux-node", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Linux node device capabilities", "type": "module", "dependencies": { diff --git a/extensions/litellm/package.json b/extensions/litellm/package.json index bab42afb059a..56e6db14b43b 100644 --- a/extensions/litellm/package.json +++ b/extensions/litellm/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/litellm-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw LiteLLM provider plugin", "type": "module", diff --git a/extensions/llama-cpp/package.json b/extensions/llama-cpp/package.json index b47808e1d904..2e48090d1222 100644 --- a/extensions/llama-cpp/package.json +++ b/extensions/llama-cpp/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/llama-cpp-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw provider for managed and external llama.cpp servers", "repository": { "type": "git", @@ -20,10 +20,10 @@ "minHostVersion": ">=2026.6.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "bundleRuntimeDependencies": false, diff --git a/extensions/llm-task/package.json b/extensions/llm-task/package.json index f0045a56a490..22b123c31cec 100644 --- a/extensions/llm-task/package.json +++ b/extensions/llm-task/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/llm-task", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw JSON-only LLM task plugin", "type": "module", diff --git a/extensions/lmstudio/package.json b/extensions/lmstudio/package.json index 9e93c0c4c69b..c68540903087 100644 --- a/extensions/lmstudio/package.json +++ b/extensions/lmstudio/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/lmstudio-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw LM Studio provider plugin", "type": "module", diff --git a/extensions/lobster/package.json b/extensions/lobster/package.json index d93f22fb0fbe..e82e5924c90e 100644 --- a/extensions/lobster/package.json +++ b/extensions/lobster/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/lobster", - "version": "2026.8.1", + "version": "2026.9.1", "description": "Lobster workflow tool plugin for typed pipelines and resumable approvals.", "repository": { "type": "git", @@ -24,10 +24,10 @@ "minHostVersion": ">=2026.4.25" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/logbook/package.json b/extensions/logbook/package.json index 3da66c2dbd10..2ef5e0428f1e 100644 --- a/extensions/logbook/package.json +++ b/extensions/logbook/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/logbook", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw automatic work journal plugin", "type": "module", @@ -9,7 +9,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { diff --git a/extensions/longcat/package.json b/extensions/longcat/package.json index db3169bb21af..f2ef4c3e7432 100644 --- a/extensions/longcat/package.json +++ b/extensions/longcat/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/longcat-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw LongCat provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/matrix/CHANGELOG.md b/extensions/matrix/CHANGELOG.md index d0b142b11813..b26232ee7698 100644 --- a/extensions/matrix/CHANGELOG.md +++ b/extensions/matrix/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 2026.9.1 + +### Changes +- Version alignment with core OpenClaw release numbers. + ## 2026.8.1 ### Changes diff --git a/extensions/matrix/package.json b/extensions/matrix/package.json index ba17509c3e08..a84a5dfab6a8 100644 --- a/extensions/matrix/package.json +++ b/extensions/matrix/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/matrix", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Matrix channel plugin for rooms and direct messages.", "repository": { "type": "git", @@ -22,7 +22,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -171,11 +171,11 @@ "allowInvalidConfigRecovery": true }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { "bundledDist": false, - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/mattermost/package.json b/extensions/mattermost/package.json index c0bc55948b1e..cd0ee537c167 100644 --- a/extensions/mattermost/package.json +++ b/extensions/mattermost/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/mattermost", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Mattermost channel plugin", "repository": { "type": "git", @@ -16,7 +16,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -79,7 +79,10 @@ "flags": "--use-env", "description": "Use Mattermost environment credentials" }, - "envVars": ["MATTERMOST_BOT_TOKEN", "MATTERMOST_URL"] + "envVars": [ + "MATTERMOST_BOT_TOKEN", + "MATTERMOST_URL" + ] } ] } @@ -92,10 +95,10 @@ "allowInvalidConfigRecovery": true }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/memory-core/package.json b/extensions/memory-core/package.json index b7fc11eb861a..dc5f90d53bf2 100644 --- a/extensions/memory-core/package.json +++ b/extensions/memory-core/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/memory-core", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw core memory search plugin", "type": "module", @@ -18,7 +18,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { diff --git a/extensions/memory-lancedb/package.json b/extensions/memory-lancedb/package.json index 6f7f99f5964f..7c0038e35686 100644 --- a/extensions/memory-lancedb/package.json +++ b/extensions/memory-lancedb/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/memory-lancedb", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw LanceDB-backed long-term memory plugin with auto-recall, auto-capture, and vector search.", "repository": { "type": "git", @@ -35,10 +35,10 @@ "minHostVersion": ">=2026.5.31" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "bundleRuntimeDependencies": false, diff --git a/extensions/memory-wiki/package.json b/extensions/memory-wiki/package.json index f0a9a78f74df..5d393947bbc3 100644 --- a/extensions/memory-wiki/package.json +++ b/extensions/memory-wiki/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/memory-wiki", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw persistent wiki plugin", "type": "module", @@ -16,7 +16,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { diff --git a/extensions/meta/package.json b/extensions/meta/package.json index dd9e4e4ef40a..d4ba4922f3e2 100644 --- a/extensions/meta/package.json +++ b/extensions/meta/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/meta-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Meta provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.11" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/microsoft-foundry/package.json b/extensions/microsoft-foundry/package.json index 6b4f9116fe31..728edb8360a8 100644 --- a/extensions/microsoft-foundry/package.json +++ b/extensions/microsoft-foundry/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/microsoft-foundry", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw Microsoft Foundry provider plugin", "type": "module", diff --git a/extensions/microsoft/package.json b/extensions/microsoft/package.json index cd767649837b..360076d67f6d 100644 --- a/extensions/microsoft/package.json +++ b/extensions/microsoft/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/microsoft-speech", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw Microsoft speech plugin", "type": "module", diff --git a/extensions/migrate-claude/package.json b/extensions/migrate-claude/package.json index a91fb9c3fbd9..e744f08f473b 100644 --- a/extensions/migrate-claude/package.json +++ b/extensions/migrate-claude/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/migrate-claude", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "Claude to OpenClaw migration provider", "type": "module", @@ -9,7 +9,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { diff --git a/extensions/migrate-hermes/package.json b/extensions/migrate-hermes/package.json index f50742e17630..98735adeb52b 100644 --- a/extensions/migrate-hermes/package.json +++ b/extensions/migrate-hermes/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/migrate-hermes", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "Hermes to OpenClaw migration provider", "type": "module", @@ -13,7 +13,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { diff --git a/extensions/minimax/package.json b/extensions/minimax/package.json index 4b7cd79011ed..a3914b9e9490 100644 --- a/extensions/minimax/package.json +++ b/extensions/minimax/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/minimax-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw MiniMax provider and OAuth plugin", "type": "module", diff --git a/extensions/mistral/package.json b/extensions/mistral/package.json index c98a1eb0b639..e6fb44bf28e8 100644 --- a/extensions/mistral/package.json +++ b/extensions/mistral/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/mistral-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Mistral provider plugin", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/moonshot/package.json b/extensions/moonshot/package.json index 29b9feb7ad3a..0294258705a5 100644 --- a/extensions/moonshot/package.json +++ b/extensions/moonshot/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/moonshot-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Moonshot provider plugin", "type": "module", "devDependencies": { @@ -17,10 +17,10 @@ "minHostVersion": ">=2026.6.9" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/msteams/package.json b/extensions/msteams/package.json index 4e0dae138d59..76fdd346c8ce 100644 --- a/extensions/msteams/package.json +++ b/extensions/msteams/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/msteams", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Microsoft Teams channel plugin for bot conversations.", "repository": { "type": "git", @@ -22,7 +22,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -38,7 +38,11 @@ "id": "msteams", "configuredState": { "env": { - "anyOf": ["MSTEAMS_APP_ID", "MSTEAMS_APP_PASSWORD", "MSTEAMS_TENANT_ID"] + "anyOf": [ + "MSTEAMS_APP_ID", + "MSTEAMS_APP_PASSWORD", + "MSTEAMS_TENANT_ID" + ] }, "specifier": "./configured-state", "exportName": "hasConfiguredMSTeamsChannelState" @@ -68,10 +72,10 @@ "minHostVersion": ">=2026.4.10" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "runtimeFormat": "cjs" }, "release": { diff --git a/extensions/mxc/package.json b/extensions/mxc/package.json index c0feee4097d8..a2e70ba62dfd 100644 --- a/extensions/mxc/package.json +++ b/extensions/mxc/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/mxc-sandbox", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw MXC sandbox execution plugin for MXC-capable hosts", "repository": { "type": "git", @@ -24,10 +24,10 @@ "minHostVersion": ">=2026.6.11" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false, "staticAssets": [ { diff --git a/extensions/nextcloud-talk/package.json b/extensions/nextcloud-talk/package.json index d452c12089e8..d43aaaa8e0f4 100644 --- a/extensions/nextcloud-talk/package.json +++ b/extensions/nextcloud-talk/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/nextcloud-talk", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Nextcloud Talk channel plugin for conversations.", "repository": { "type": "git", @@ -12,7 +12,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -31,7 +31,10 @@ "id": "nextcloud-talk", "configuredState": { "env": { - "anyOf": ["NEXTCLOUD_TALK_BOT_SECRET", "NEXTCLOUD_TALK_API_PASSWORD"] + "anyOf": [ + "NEXTCLOUD_TALK_BOT_SECRET", + "NEXTCLOUD_TALK_API_PASSWORD" + ] }, "specifier": "./configured-state", "exportName": "hasConfiguredNextcloudTalkChannelState" @@ -117,7 +120,9 @@ "flags": "--use-env", "description": "Use Nextcloud Talk environment credentials" }, - "envVars": ["NEXTCLOUD_TALK_BOT_SECRET"] + "envVars": [ + "NEXTCLOUD_TALK_BOT_SECRET" + ] } ] } @@ -128,10 +133,10 @@ "minHostVersion": ">=2026.4.10" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/nostr/package.json b/extensions/nostr/package.json index d1c518c31f77..f8ebb41e6c97 100644 --- a/extensions/nostr/package.json +++ b/extensions/nostr/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/nostr", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Nostr channel plugin for NIP-04 encrypted direct messages.", "repository": { "type": "git", @@ -16,7 +16,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -70,7 +70,9 @@ "flags": "--use-env", "description": "Use NOSTR_PRIVATE_KEY" }, - "envVars": ["NOSTR_PRIVATE_KEY"] + "envVars": [ + "NOSTR_PRIVATE_KEY" + ] } ] } @@ -81,10 +83,10 @@ "minHostVersion": ">=2026.4.10" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/novita/package.json b/extensions/novita/package.json index 40f177970c52..116dc9aa37bc 100644 --- a/extensions/novita/package.json +++ b/extensions/novita/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/novita-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw NovitaAI provider plugin", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/nvidia/package.json b/extensions/nvidia/package.json index 1817bddb1824..fc34a7738c3b 100644 --- a/extensions/nvidia/package.json +++ b/extensions/nvidia/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/nvidia-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw NVIDIA provider plugin", "type": "module", diff --git a/extensions/oc-path/package.json b/extensions/oc-path/package.json index 6a069d4c8dd7..fad3acd2ac67 100644 --- a/extensions/oc-path/package.json +++ b/extensions/oc-path/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/oc-path", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw oc:// workspace path plugin", "type": "module", @@ -15,7 +15,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { diff --git a/extensions/ollama/package.json b/extensions/ollama/package.json index b0da0f8408cc..03a35465be56 100644 --- a/extensions/ollama/package.json +++ b/extensions/ollama/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/ollama-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw Ollama provider plugin", "type": "module", diff --git a/extensions/onepassword/package.json b/extensions/onepassword/package.json index cb4005ae25a2..9f05f894bb31 100644 --- a/extensions/onepassword/package.json +++ b/extensions/onepassword/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/onepassword", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "1Password SecretRef resolver and audited agent secrets broker for OpenClaw", "type": "module", diff --git a/extensions/openai/package.json b/extensions/openai/package.json index 111b8028f6ae..4712054c7911 100644 --- a/extensions/openai/package.json +++ b/extensions/openai/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/openai-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw OpenAI provider plugins", "type": "module", diff --git a/extensions/opencode-go/package.json b/extensions/opencode-go/package.json index e3ec044adf56..ab185efea37d 100644 --- a/extensions/opencode-go/package.json +++ b/extensions/opencode-go/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/opencode-go-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw OpenCode Go provider plugin", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": true }, "release": { diff --git a/extensions/opencode/package.json b/extensions/opencode/package.json index 8e3447383b93..0f694d76c122 100644 --- a/extensions/opencode/package.json +++ b/extensions/opencode/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/opencode-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw OpenCode Zen provider plugin", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/openrouter/package.json b/extensions/openrouter/package.json index b48931452b01..735c40c98c46 100644 --- a/extensions/openrouter/package.json +++ b/extensions/openrouter/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/openrouter-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw OpenRouter provider plugin", "type": "module", diff --git a/extensions/openshell/package.json b/extensions/openshell/package.json index f8366e35268e..858696cbf98d 100644 --- a/extensions/openshell/package.json +++ b/extensions/openshell/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/openshell-sandbox", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw sandbox backend for the NVIDIA OpenShell CLI with mirrored local workspaces and SSH command execution.", "repository": { "type": "git", @@ -24,10 +24,10 @@ "minHostVersion": ">=2026.5.12-beta.1" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/parallel/package.json b/extensions/parallel/package.json index 3f3434f2c8f7..b98d3620aebc 100644 --- a/extensions/parallel/package.json +++ b/extensions/parallel/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/parallel-plugin", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Parallel web search plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/perplexity/package.json b/extensions/perplexity/package.json index 9871b8b19a21..5f7e03a6e70d 100644 --- a/extensions/perplexity/package.json +++ b/extensions/perplexity/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/perplexity-plugin", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Perplexity plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/pixverse/package.json b/extensions/pixverse/package.json index 987e836a86ea..3d8ec1d6d491 100644 --- a/extensions/pixverse/package.json +++ b/extensions/pixverse/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/pixverse-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw PixVerse video generation provider plugin.", "repository": { "type": "git", @@ -12,7 +12,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -30,10 +30,10 @@ "minHostVersion": ">=2026.5.26" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/policy/package.json b/extensions/policy/package.json index 33ffd9550850..e4cea9a3b89a 100644 --- a/extensions/policy/package.json +++ b/extensions/policy/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/policy", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw policy doctor checks for workspace conformance", "type": "module", @@ -12,7 +12,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { diff --git a/extensions/qa-channel/package.json b/extensions/qa-channel/package.json index 7d0e72373286..e80d112bffc1 100644 --- a/extensions/qa-channel/package.json +++ b/extensions/qa-channel/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/qa-channel", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw QA synthetic channel plugin", "type": "module", @@ -19,7 +19,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { diff --git a/extensions/qa-lab/package.json b/extensions/qa-lab/package.json index 1dbfccf26d80..e5a383cecba1 100644 --- a/extensions/qa-lab/package.json +++ b/extensions/qa-lab/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/qa-lab", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw QA lab plugin with private debugger UI and scenario runner", "type": "module", @@ -24,7 +24,7 @@ "vite": "8.2.2" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -36,7 +36,7 @@ "./index.ts" ], "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" } } } diff --git a/extensions/qianfan/package.json b/extensions/qianfan/package.json index acd5f1e0d521..b348b8b81b34 100644 --- a/extensions/qianfan/package.json +++ b/extensions/qianfan/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/qianfan-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Qianfan provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/qwen/package.json b/extensions/qwen/package.json index db15134bd4d0..4eecabf1d528 100644 --- a/extensions/qwen/package.json +++ b/extensions/qwen/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/qwen-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Qwen Cloud provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/raft/package.json b/extensions/raft/package.json index ca3fb70104f2..e0fd354be0a5 100644 --- a/extensions/raft/package.json +++ b/extensions/raft/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/raft", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Raft channel plugin for Raft CLI wake bridges.", "repository": { "type": "git", @@ -15,7 +15,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -33,10 +33,10 @@ "minHostVersion": ">=2026.6.8" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "channel": { "id": "raft", diff --git a/extensions/reef/package.json b/extensions/reef/package.json index 570ca65c8daf..aa14415c57af 100644 --- a/extensions/reef/package.json +++ b/extensions/reef/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/reef", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Reef channel plugin — guarded end-to-end encrypted claw-to-claw messaging", "type": "module", "dependencies": { diff --git a/extensions/runway/package.json b/extensions/runway/package.json index 050f38856180..41fa6d599423 100644 --- a/extensions/runway/package.json +++ b/extensions/runway/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/runway-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw Runway video provider plugin", "type": "module", diff --git a/extensions/searxng/package.json b/extensions/searxng/package.json index 939059666bd9..977c2dbcea5a 100644 --- a/extensions/searxng/package.json +++ b/extensions/searxng/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/searxng-plugin", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw SearXNG plugin", "type": "module", "devDependencies": { @@ -18,10 +18,10 @@ "allowInvalidConfigRecovery": true }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/senseaudio/package.json b/extensions/senseaudio/package.json index f9073f0af1f6..417ed22a56c1 100644 --- a/extensions/senseaudio/package.json +++ b/extensions/senseaudio/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/senseaudio-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw SenseAudio media-understanding provider", "type": "module", diff --git a/extensions/sglang/package.json b/extensions/sglang/package.json index 9557650e2589..6e7f10606993 100644 --- a/extensions/sglang/package.json +++ b/extensions/sglang/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/sglang-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw SGLang provider plugin", "type": "module", diff --git a/extensions/signal/package.json b/extensions/signal/package.json index 0608b65a22fe..029ec1549698 100644 --- a/extensions/signal/package.json +++ b/extensions/signal/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/signal", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Signal channel plugin", "type": "module", "dependencies": { @@ -96,10 +96,10 @@ "allowInvalidConfigRecovery": true }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/slack/package.json b/extensions/slack/package.json index ad53f535e1dc..2767a529dbfb 100644 --- a/extensions/slack/package.json +++ b/extensions/slack/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/slack", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Slack channel plugin for channels, DMs, commands, and app events.", "repository": { "type": "git", @@ -23,7 +23,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -42,7 +42,11 @@ "id": "slack", "configuredState": { "env": { - "anyOf": ["SLACK_BOT_TOKEN", "SLACK_APP_TOKEN", "SLACK_USER_TOKEN"] + "anyOf": [ + "SLACK_BOT_TOKEN", + "SLACK_APP_TOKEN", + "SLACK_USER_TOKEN" + ] }, "specifier": "./configured-state", "exportName": "hasConfiguredSlackChannelState" @@ -137,7 +141,9 @@ "flags": "--use-env", "description": "Use Slack environment credentials" }, - "envVars": ["SLACK_BOT_TOKEN"] + "envVars": [ + "SLACK_BOT_TOKEN" + ] } ] } @@ -149,10 +155,10 @@ "allowInvalidConfigRecovery": true }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/sms/package.json b/extensions/sms/package.json index 686f34c3d910..dfcfb1a94a61 100644 --- a/extensions/sms/package.json +++ b/extensions/sms/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/sms", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw SMS/MMS channel plugin for Twilio messages.", "repository": { "type": "git", @@ -126,10 +126,10 @@ } }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "install": { diff --git a/extensions/stepfun/package.json b/extensions/stepfun/package.json index a1b610e90346..4ee13d074341 100644 --- a/extensions/stepfun/package.json +++ b/extensions/stepfun/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/stepfun-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw StepFun provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.6.9" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/synology-chat/package.json b/extensions/synology-chat/package.json index bcfeca7e6cfb..2d8a16ef5c96 100644 --- a/extensions/synology-chat/package.json +++ b/extensions/synology-chat/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/synology-chat", - "version": "2026.8.1", + "version": "2026.9.1", "description": "Synology Chat channel plugin for OpenClaw channels and direct messages.", "repository": { "type": "git", @@ -75,7 +75,9 @@ "flags": "--use-env", "description": "Use Synology Chat environment credentials" }, - "envVars": ["SYNOLOGY_CHAT_TOKEN"] + "envVars": [ + "SYNOLOGY_CHAT_TOKEN" + ] } ] } @@ -86,10 +88,10 @@ "minHostVersion": ">=2026.4.10" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/synthetic/package.json b/extensions/synthetic/package.json index 1c7672bcf53b..588ce03b7388 100644 --- a/extensions/synthetic/package.json +++ b/extensions/synthetic/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/synthetic-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Synthetic provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/tavily/package.json b/extensions/tavily/package.json index dd072bd21678..1fded857c82e 100644 --- a/extensions/tavily/package.json +++ b/extensions/tavily/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/tavily-plugin", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Tavily plugin", "type": "module", "dependencies": { @@ -21,10 +21,10 @@ "allowInvalidConfigRecovery": true }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/teams-meetings/package.json b/extensions/teams-meetings/package.json index 9a3c3ad824d8..d59f79424778 100644 --- a/extensions/teams-meetings/package.json +++ b/extensions/teams-meetings/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/teams-meetings", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Microsoft Teams browser meeting participant plugin.", "repository": { "type": "git", @@ -15,7 +15,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -33,10 +33,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/telegram/package.json b/extensions/telegram/package.json index fe3747d76a57..459508a1f658 100644 --- a/extensions/telegram/package.json +++ b/extensions/telegram/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/telegram", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw Telegram channel plugin", "type": "module", @@ -75,7 +75,9 @@ "flags": "--use-env", "description": "Use TELEGRAM_BOT_TOKEN" }, - "envVars": ["TELEGRAM_BOT_TOKEN"] + "envVars": [ + "TELEGRAM_BOT_TOKEN" + ] } ] }, diff --git a/extensions/tencent/package.json b/extensions/tencent/package.json index 483449c850f1..c408c7ba94c2 100644 --- a/extensions/tencent/package.json +++ b/extensions/tencent/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/tencent-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Tencent Cloud provider plugin (TokenHub + Token Plan)", "type": "module", "devDependencies": { @@ -18,10 +18,10 @@ "minHostVersion": ">=2026.6.9" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/tlon/package.json b/extensions/tlon/package.json index 4db4500a106b..e61f93f6ed4a 100644 --- a/extensions/tlon/package.json +++ b/extensions/tlon/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/tlon", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Tlon/Urbit channel plugin for chat workflows.", "repository": { "type": "git", @@ -19,7 +19,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -120,10 +120,10 @@ "minHostVersion": ">=2026.4.10" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "bundleRuntimeDependencies": false, diff --git a/extensions/together/package.json b/extensions/together/package.json index 86428149c5b9..7e1df25aee6f 100644 --- a/extensions/together/package.json +++ b/extensions/together/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/together-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw Together provider plugin", "type": "module", diff --git a/extensions/tokenjuice/package.json b/extensions/tokenjuice/package.json index 13c5671a2024..dc3284766dcd 100644 --- a/extensions/tokenjuice/package.json +++ b/extensions/tokenjuice/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/tokenjuice", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw tokenjuice exec output compaction plugin", "repository": { "type": "git", @@ -11,7 +11,7 @@ "tokenjuice": "0.8.1" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -33,10 +33,10 @@ "minHostVersion": ">=2026.5.28" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/tts-local-cli/package.json b/extensions/tts-local-cli/package.json index 0d7cb815af4f..1f761d2d8f34 100644 --- a/extensions/tts-local-cli/package.json +++ b/extensions/tts-local-cli/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/tts-local-cli", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw local CLI TTS plugin", "type": "module", diff --git a/extensions/twitch/package.json b/extensions/twitch/package.json index 92f4293bbfd7..fdf63c3abf45 100644 --- a/extensions/twitch/package.json +++ b/extensions/twitch/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/twitch", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Twitch channel plugin for chat and moderation workflows.", "repository": { "type": "git", @@ -30,10 +30,10 @@ "minHostVersion": ">=2026.4.10" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "channel": { "id": "twitch", diff --git a/extensions/vault/package.json b/extensions/vault/package.json index d17b3883e625..fead4c3ffb8f 100644 --- a/extensions/vault/package.json +++ b/extensions/vault/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/vault", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "HashiCorp Vault SecretRef provider integration for OpenClaw", "type": "module", diff --git a/extensions/venice/package.json b/extensions/venice/package.json index 2d7b17d5f709..b4d90cead7c1 100644 --- a/extensions/venice/package.json +++ b/extensions/venice/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/venice-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Venice provider plugin", "type": "module", "devDependencies": { @@ -17,10 +17,10 @@ "minHostVersion": ">=2026.6.9" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/vercel-ai-gateway/package.json b/extensions/vercel-ai-gateway/package.json index 5e83420fd399..fff150bc8b13 100644 --- a/extensions/vercel-ai-gateway/package.json +++ b/extensions/vercel-ai-gateway/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/vercel-ai-gateway-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Vercel AI Gateway provider plugin", "type": "module", "devDependencies": { @@ -17,10 +17,10 @@ "minHostVersion": ">=2026.6.9" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/visitor-access/package.json b/extensions/visitor-access/package.json index 16c5d9380c94..ef85d919d2d8 100644 --- a/extensions/visitor-access/package.json +++ b/extensions/visitor-access/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/visitor-access", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw internal Cloudflare Access visitor grants plugin", "type": "module", diff --git a/extensions/vllm/package.json b/extensions/vllm/package.json index f731bfe0fd6d..a77f7d45dd0b 100644 --- a/extensions/vllm/package.json +++ b/extensions/vllm/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/vllm-provider", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw vLLM provider plugin", "type": "module", diff --git a/extensions/voice-call/package.json b/extensions/voice-call/package.json index 6d8631e19047..c32b251cceb9 100644 --- a/extensions/voice-call/package.json +++ b/extensions/voice-call/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/voice-call", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw voice-call plugin for Twilio, Telnyx, and Plivo phone calls.", "repository": { "type": "git", @@ -17,7 +17,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -35,10 +35,10 @@ "minHostVersion": ">=2026.4.10" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/volcengine/package.json b/extensions/volcengine/package.json index c0f5ff588beb..44c16fa9bdb5 100644 --- a/extensions/volcengine/package.json +++ b/extensions/volcengine/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/volcengine-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Volcengine provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/voyage/package.json b/extensions/voyage/package.json index 9fe15dd21d49..c02dc68ac6cb 100644 --- a/extensions/voyage/package.json +++ b/extensions/voyage/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/voyage-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Voyage embedding provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/vydra/package.json b/extensions/vydra/package.json index 877c980dba62..de55862230b7 100644 --- a/extensions/vydra/package.json +++ b/extensions/vydra/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/vydra-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Vydra media provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/web-readability/package.json b/extensions/web-readability/package.json index b8a06c14ce80..c2b1cfd9c709 100644 --- a/extensions/web-readability/package.json +++ b/extensions/web-readability/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/web-readability-plugin", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw local Readability web extraction plugin", "type": "module", diff --git a/extensions/webhooks/package.json b/extensions/webhooks/package.json index 1843cef75373..2be96b6fe952 100644 --- a/extensions/webhooks/package.json +++ b/extensions/webhooks/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/webhooks", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw webhook bridge plugin", "type": "module", diff --git a/extensions/whatsapp/package.json b/extensions/whatsapp/package.json index b0eb887f845a..ccd220467fce 100644 --- a/extensions/whatsapp/package.json +++ b/extensions/whatsapp/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/whatsapp", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw WhatsApp channel plugin for WhatsApp Web chats.", "repository": { "type": "git", @@ -17,7 +17,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -69,11 +69,11 @@ "minHostVersion": ">=2026.4.25" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { "bundledDist": false, - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/workboard/package.json b/extensions/workboard/package.json index 5a73f2f364ac..89d330fa631d 100644 --- a/extensions/workboard/package.json +++ b/extensions/workboard/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/workboard", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw dashboard workboard plugin", "type": "module", @@ -18,7 +18,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { diff --git a/extensions/xai/package.json b/extensions/xai/package.json index 58352ab03938..f80ca739d025 100644 --- a/extensions/xai/package.json +++ b/extensions/xai/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/xai-plugin", - "version": "2026.8.1", + "version": "2026.9.1", "private": true, "description": "OpenClaw xAI plugin", "type": "module", diff --git a/extensions/xiaomi/package.json b/extensions/xiaomi/package.json index 8d622a4bfe7b..a0aeb67b4462 100644 --- a/extensions/xiaomi/package.json +++ b/extensions/xiaomi/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/xiaomi-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Xiaomi provider plugin.", "repository": { "type": "git", @@ -21,10 +21,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/zai/package.json b/extensions/zai/package.json index 9bdf28cd50a6..b1862ef36748 100644 --- a/extensions/zai/package.json +++ b/extensions/zai/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/zai-provider", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Z.AI provider plugin", "type": "module", "devDependencies": { @@ -17,10 +17,10 @@ "minHostVersion": ">=2026.6.9" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/extensions/zalo/package.json b/extensions/zalo/package.json index f0c73efed1bb..e8c83d1c715c 100644 --- a/extensions/zalo/package.json +++ b/extensions/zalo/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/zalo", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Zalo channel plugin for bot and webhook chats.", "repository": { "type": "git", @@ -12,7 +12,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -73,7 +73,9 @@ "flags": "--use-env", "description": "Use ZALO_BOT_TOKEN" }, - "envVars": ["ZALO_BOT_TOKEN"] + "envVars": [ + "ZALO_BOT_TOKEN" + ] } ] } @@ -84,10 +86,10 @@ "minHostVersion": ">=2026.4.10" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/zalouser/package.json b/extensions/zalouser/package.json index 7994f9806720..734880833e37 100644 --- a/extensions/zalouser/package.json +++ b/extensions/zalouser/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/zalouser", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Zalo Personal Account plugin via native zca-js integration.", "repository": { "type": "git", @@ -17,7 +17,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -65,10 +65,10 @@ "minHostVersion": ">=2026.4.10" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1" + "openclawVersion": "2026.9.1" }, "release": { "publishToClawHub": true, diff --git a/extensions/zoom-meetings/package.json b/extensions/zoom-meetings/package.json index 1af8c8e640cc..9c03ddeb6663 100644 --- a/extensions/zoom-meetings/package.json +++ b/extensions/zoom-meetings/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/zoom-meetings", - "version": "2026.8.1", + "version": "2026.9.1", "description": "OpenClaw Zoom browser meeting participant plugin.", "repository": { "type": "git", @@ -15,7 +15,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.8.1" + "openclaw": ">=2026.9.1" }, "peerDependenciesMeta": { "openclaw": { @@ -33,10 +33,10 @@ "minHostVersion": ">=2026.7.2" }, "compat": { - "pluginApi": ">=2026.8.1" + "pluginApi": ">=2026.9.1" }, "build": { - "openclawVersion": "2026.8.1", + "openclawVersion": "2026.9.1", "bundledDist": false }, "release": { diff --git a/package.json b/package.json index 1236bae56cbe..2fc622434266 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openclaw", - "version": "2026.8.1", + "version": "2026.9.1", "openclaw": { "schemaVersions": { "state": 15, diff --git a/packages/ai/package.json b/packages/ai/package.json index 20deafc24cb5..f1dc9ff06d7c 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/ai", - "version": "2026.8.1", + "version": "2026.9.1", "description": "Reusable model provider adapters and streaming runtime from OpenClaw", "keywords": [ "ai", diff --git a/packages/gateway-client/package.json b/packages/gateway-client/package.json index 8be225bad606..c16428314ce8 100644 --- a/packages/gateway-client/package.json +++ b/packages/gateway-client/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/gateway-client", - "version": "2026.8.1", + "version": "2026.9.1", "description": "Reference WebSocket client for the OpenClaw Gateway protocol", "keywords": [ "client", diff --git a/packages/gateway-protocol/package.json b/packages/gateway-protocol/package.json index 68d7814fdcd3..4f9137fbe057 100644 --- a/packages/gateway-protocol/package.json +++ b/packages/gateway-protocol/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/gateway-protocol", - "version": "2026.8.1", + "version": "2026.9.1", "description": "Typed schemas and runtime validators for the OpenClaw Gateway WebSocket protocol", "keywords": [ "gateway", diff --git a/scripts/lib/official-external-channel-catalog.json b/scripts/lib/official-external-channel-catalog.json index 4222eaf60acf..e4916490da91 100644 --- a/scripts/lib/official-external-channel-catalog.json +++ b/scripts/lib/official-external-channel-catalog.json @@ -1,32 +1,32 @@ { "entries": [ - {"name":"@openclaw/buzz","version":"2026.8.1","description":"Connect OpenClaw agents to Buzz rooms","source":"official","kind":"channel","openclaw":{"channelConfigs":{"buzz":{"label":"Buzz","description":"Connect OpenClaw agents to Buzz team rooms."}},"channel":{"id":"buzz","configuredState":{"env":{"allOf":["BUZZ_RELAY_URL","BUZZ_PRIVATE_KEY"]}},"label":"Buzz","selectionLabel":"Buzz","docsPath":"/channels/buzz","docsLabel":"buzz","blurb":"Connect OpenClaw agents to Buzz team rooms.","markdownCapable":true,"order":56,"setup":{"fields":[{"key":"relayUrl","kind":"string","cli":{"flags":"--relay-url ","description":"Buzz relay WebSocket URL"}},{"key":"privateKey","kind":"string","sensitive":true,"cli":{"flags":"--private-key ","description":"Buzz bot Nostr private key"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use BUZZ_PRIVATE_KEY with the supplied relay URL"},"envVars":["BUZZ_PRIVATE_KEY"]}]}},"install":{"clawhubSpec":"clawhub:@openclaw/buzz","npmSpec":"@openclaw/buzz","defaultChoice":"npm","minHostVersion":">=2026.7.2"}}}, - {"name":"@openclaw/clickclack","version":"2026.8.1","description":"OpenClaw ClickClack channel plugin","source":"official","kind":"channel","openclaw":{"contracts":{"tools":["discussion"]},"channelConfigs":{"clickclack":{"label":"ClickClack","description":"ClickClack channel accounts and group activation policy."}},"channel":{"id":"clickclack","configuredState":{"env":{"anyOf":["CLICKCLACK_BOT_TOKEN"]}},"label":"ClickClack","selectionLabel":"ClickClack","detailLabel":"ClickClack Bot","docsPath":"/channels/clickclack","docsLabel":"clickclack","blurb":"self-hosted chat via first-class ClickClack bot tokens.","systemImage":"bubble.left.and.bubble.right","markdownCapable":true,"preferSessionLookupForAnnounceTarget":true,"order":85,"commands":{"nativeCommandsAutoEnabled":false,"nativeSkillsAutoEnabled":false},"setup":{"fields":[{"key":"code","kind":"string","sensitive":true,"cli":{"flags":"--code ","description":"ClickClack one-time setup code or setup URL"}},{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"ClickClack bot token"}},{"key":"tokenFile","kind":"string","sensitive":true,"cli":{"flags":"--token-file ","description":"ClickClack bot token file"}},{"key":"baseUrl","kind":"string","cli":{"flags":"--base-url ","description":"ClickClack API base URL"}},{"key":"workspace","kind":"string","cli":{"flags":"--workspace ","description":"ClickClack workspace id, slug, or name"}},{"key":"defaultTo","kind":"string","cli":{"flags":"--default-to ","description":"Default ClickClack target"}},{"key":"allowFrom","kind":"string-list","cli":{"flags":"--allow-from ","description":"Allowed ClickClack senders"}},{"key":"agentActivity","kind":"boolean","cli":{"flags":"--agent-activity","description":"Enable ClickClack agent activity"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use CLICKCLACK_BOT_TOKEN"},"envVars":["CLICKCLACK_BOT_TOKEN"]}]}},"install":{"clawhubSpec":"clawhub:@openclaw/clickclack","npmSpec":"@openclaw/clickclack","defaultChoice":"npm","minHostVersion":">=2026.6.9","allowInvalidConfigRecovery":true}}}, - {"name":"@openclaw/discord","version":"2026.8.1","description":"OpenClaw Discord channel plugin for channels, DMs, commands, and app events.","source":"official","kind":"channel","openclaw":{"contracts":{"transcriptSourceProviders":["discord-voice"]},"channel":{"id":"discord","configuredState":{"env":{"anyOf":["DISCORD_BOT_TOKEN"]}},"approvalFlags":["native"],"label":"Discord","selectionLabel":"Discord (Bot API)","detailLabel":"Discord Bot","docsPath":"/channels/discord","docsLabel":"discord","blurb":"very well supported right now.","systemImage":"bubble.left.and.bubble.right","markdownCapable":true,"preferSessionLookupForAnnounceTarget":true,"setup":{"fields":[{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"Discord bot token"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use DISCORD_BOT_TOKEN"},"envVars":["DISCORD_BOT_TOKEN"]}]},"commands":{"nativeCommandsAutoEnabled":true,"nativeSkillsAutoEnabled":true},"doctorCapabilities":{"dmAllowFromMode":"topOnly","groupModel":"route","groupAllowFromFallbackToAllowFrom":false,"warnOnEmptyGroupSenderAllowlist":false}},"install":{"npmSpec":"@openclaw/discord","defaultChoice":"npm","minHostVersion":">=2026.5.26","allowInvalidConfigRecovery":true}}}, - {"name":"@openclaw/feishu","version":"2026.8.1","description":"OpenClaw Feishu/Lark channel plugin for chats and workplace tools (community maintained by @m1heng).","source":"official","kind":"channel","openclaw":{"contracts":{"tools":["feishu_app_scopes","feishu_bitable_create_app","feishu_bitable_create_field","feishu_bitable_create_record","feishu_bitable_get_meta","feishu_bitable_get_record","feishu_bitable_list_fields","feishu_bitable_list_records","feishu_bitable_update_record","feishu_chat","feishu_doc","feishu_drive","feishu_perm","feishu_wiki"]},"channel":{"id":"feishu","configuredState":{"env":{"anyOf":["FEISHU_APP_ID","FEISHU_APP_SECRET","FEISHU_VERIFICATION_TOKEN","FEISHU_ENCRYPT_KEY"]},"specifier":"./configured-state","exportName":"hasConfiguredFeishuChannelState"},"label":"Feishu","selectionLabel":"Feishu/Lark (飞书)","docsPath":"/channels/feishu","docsLabel":"feishu","blurb":"飞书/Lark enterprise messaging with doc/wiki/drive tools.","aliases":["lark"],"order":35,"quickstartAllowFrom":true,"setup":{"fields":[]}},"install":{"npmSpec":"@openclaw/feishu","defaultChoice":"npm","minHostVersion":">=2026.5.29"}}}, - {"name":"@openclaw/googlechat","version":"2026.8.1","description":"OpenClaw Google Chat channel plugin for spaces and direct messages.","source":"official","kind":"channel","openclaw":{"channel":{"id":"googlechat","configuredState":{"env":{"anyOf":["GOOGLE_CHAT_SERVICE_ACCOUNT","GOOGLE_CHAT_SERVICE_ACCOUNT_FILE"]}},"approvalFlags":["native"],"label":"Google Chat","selectionLabel":"Google Chat (Chat API)","detailLabel":"Google Chat","docsPath":"/channels/googlechat","docsLabel":"googlechat","blurb":"Google Workspace Chat app with HTTP webhook.","aliases":["gchat","google-chat"],"order":55,"systemImage":"message.badge","markdownCapable":true,"doctorCapabilities":{"dmAllowFromMode":"topOnly","groupModel":"route","groupAllowFromFallbackToAllowFrom":false,"warnOnEmptyGroupSenderAllowlist":false},"setup":{"fields":[{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"Google Chat service account JSON"}},{"key":"tokenFile","kind":"string","sensitive":true,"cli":{"flags":"--token-file ","description":"Google Chat service account file"}},{"key":"audienceType","kind":"choice","choices":["app-url","project-number"],"cli":{"flags":"--audience-type ","description":"Google Chat audience type"}},{"key":"audience","kind":"string","cli":{"flags":"--audience ","description":"Google Chat audience value"}},{"key":"webhookPath","kind":"string","cli":{"flags":"--webhook-path ","description":"Google Chat webhook path"}},{"key":"webhookUrl","kind":"string","cli":{"flags":"--webhook-url ","description":"Google Chat webhook URL"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use Google Chat environment credentials"},"envVars":["GOOGLE_CHAT_SERVICE_ACCOUNT","GOOGLE_CHAT_SERVICE_ACCOUNT_FILE"],"envVarMode":"any"}]}},"install":{"npmSpec":"@openclaw/googlechat","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, - {"name":"@openclaw/imessage","version":"2026.8.1","description":"OpenClaw iMessage channel plugin using imsg on a signed-in Mac","source":"official","kind":"channel","openclaw":{"channel":{"id":"imessage","approvalFlags":["native"],"label":"iMessage","selectionLabel":"iMessage (imsg)","detailLabel":"iMessage","docsPath":"/channels/imessage","docsLabel":"imessage","blurb":"Local iMessage/SMS through the imsg bridge, including private API message actions when enabled.","aliases":["imsg"],"systemImage":"message.fill","setup":{"fields":[{"key":"cliPath","kind":"string","cli":{"flags":"--cli-path ","description":"iMessage CLI path"}},{"key":"dbPath","kind":"string","cli":{"flags":"--db-path ","description":"iMessage database path"}},{"key":"service","kind":"choice","choices":["imessage","sms","auto"],"cli":{"flags":"--service ","description":"iMessage service"}},{"key":"region","kind":"string","cli":{"flags":"--region ","description":"SMS region"}}]}},"install":{"clawhubSpec":"clawhub:@openclaw/imessage","npmSpec":"@openclaw/imessage","defaultChoice":"npm","minHostVersion":">=2026.7.2","allowInvalidConfigRecovery":true}}}, - {"name":"@openclaw/irc","version":"2026.8.1","description":"OpenClaw IRC channel plugin","source":"official","kind":"channel","openclaw":{"channel":{"id":"irc","configuredState":{"env":{"allOf":["IRC_HOST","IRC_NICK"]}},"label":"IRC","selectionLabel":"IRC (Server + Nick)","detailLabel":"IRC","docsPath":"/channels/irc","docsLabel":"irc","blurb":"classic IRC networks with DM/channel routing and pairing controls.","aliases":["internet-relay-chat"],"systemImage":"network","setup":{"fields":[{"key":"host","kind":"string","cli":{"flags":"--host ","description":"IRC server host"}},{"key":"port","kind":"string","cli":{"flags":"--port ","description":"IRC server port"}},{"key":"tls","kind":"boolean","cli":{"flags":"--tls","description":"Use TLS for IRC"}},{"key":"nick","kind":"string","cli":{"flags":"--nick ","description":"IRC nickname"}},{"key":"username","kind":"string","cli":{"flags":"--username ","description":"IRC username"}},{"key":"realname","kind":"string","cli":{"flags":"--realname ","description":"IRC real name"}},{"key":"channels","kind":"string-list","cli":{"flags":"--channels ","description":"IRC channels"}},{"key":"password","kind":"string","sensitive":true,"cli":{"flags":"--password ","description":"IRC server password"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use IRC environment configuration"},"envVars":["IRC_HOST","IRC_NICK"]}]}},"install":{"clawhubSpec":"clawhub:@openclaw/irc","npmSpec":"@openclaw/irc","defaultChoice":"npm","minHostVersion":">=2026.6.9","allowInvalidConfigRecovery":true}}}, - {"name":"@openclaw/line","version":"2026.8.1","description":"OpenClaw LINE channel plugin for LINE Bot API chats.","source":"official","kind":"channel","openclaw":{"channel":{"id":"line","configuredState":{"env":{"allOf":["LINE_CHANNEL_ACCESS_TOKEN","LINE_CHANNEL_SECRET"]}},"label":"LINE","selectionLabel":"LINE (Messaging API)","detailLabel":"LINE Bot","docsPath":"/channels/line","docsLabel":"line","blurb":"LINE Messaging API webhook bot.","systemImage":"message","order":75,"quickstartAllowFrom":true,"setup":{"fields":[{"key":"channelAccessToken","kind":"string","sensitive":true,"cli":{"flags":"--channel-access-token ","description":"LINE channel access token"}},{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"LINE channel access token (alias)"}},{"key":"channelSecret","kind":"string","sensitive":true,"cli":{"flags":"--channel-secret ","description":"LINE channel secret"}},{"key":"tokenFile","kind":"string","sensitive":true,"cli":{"flags":"--token-file ","description":"LINE access token file"}},{"key":"secretFile","kind":"string","sensitive":true,"cli":{"flags":"--secret-file ","description":"LINE channel secret file"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use LINE environment credentials"},"envVars":["LINE_CHANNEL_ACCESS_TOKEN","LINE_CHANNEL_SECRET"]}]}},"install":{"npmSpec":"@openclaw/line","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, - {"name":"@openclaw/matrix","version":"2026.8.1","description":"OpenClaw Matrix channel plugin for rooms and direct messages.","source":"official","kind":"channel","openclaw":{"channel":{"id":"matrix","configuredState":{"env":{"anyOf":["MATRIX_HOMESERVER","MATRIX_USER_ID","MATRIX_ACCESS_TOKEN","MATRIX_PASSWORD","MATRIX_DEVICE_ID","MATRIX_DEVICE_NAME","MATRIX_OPS_HOMESERVER","MATRIX_OPS_ACCESS_TOKEN","MATRIX_OPS_DEVICE_ID","MATRIX_OPS_DEVICE_NAME"]}},"approvalFlags":["native"],"label":"Matrix","selectionLabel":"Matrix (plugin)","docsPath":"/channels/matrix","docsLabel":"matrix","blurb":"open protocol; install the plugin to enable.","order":70,"markdownCapable":true,"quickstartAllowFrom":true,"doctorCapabilities":{"dmAllowFromMode":"nestedOnly","groupModel":"sender","groupAllowFromFallbackToAllowFrom":false,"warnOnEmptyGroupSenderAllowlist":true},"setup":{"fields":[{"key":"homeserver","kind":"string","cli":{"flags":"--homeserver ","description":"Matrix homeserver URL"}},{"key":"userId","kind":"string","cli":{"flags":"--user-id ","description":"Matrix user id"}},{"key":"accessToken","kind":"string","sensitive":true,"cli":{"flags":"--access-token ","description":"Matrix access token"}},{"key":"password","kind":"string","sensitive":true,"cli":{"flags":"--password ","description":"Matrix password"}},{"key":"deviceName","kind":"string","cli":{"flags":"--device-name ","description":"Matrix device name"}},{"key":"avatarUrl","kind":"string","cli":{"flags":"--avatar-url ","description":"Matrix avatar URL"}},{"key":"initialSyncLimit","kind":"integer","cli":{"flags":"--initial-sync-limit ","description":"Matrix initial sync room limit"}},{"key":"proxy","kind":"string","cli":{"flags":"--proxy ","description":"Matrix proxy URL"}},{"key":"dangerouslyAllowPrivateNetwork","kind":"boolean","cli":{"flags":"--dangerously-allow-private-network","description":"Allow private-network Matrix homeservers"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use Matrix environment credentials"}}]},"persistedAuthState":{"specifier":"./auth-presence","exportName":"hasAnyMatrixAuth"}},"install":{"clawhubSpec":"clawhub:@openclaw/matrix","npmSpec":"@openclaw/matrix","defaultChoice":"npm","minHostVersion":">=2026.4.10","allowInvalidConfigRecovery":true}}}, - {"name":"@openclaw/mattermost","version":"2026.8.1","description":"OpenClaw Mattermost channel plugin","source":"official","kind":"channel","openclaw":{"channel":{"id":"mattermost","configuredState":{"env":{"allOf":["MATTERMOST_BOT_TOKEN","MATTERMOST_URL"]}},"label":"Mattermost","selectionLabel":"Mattermost (plugin)","docsPath":"/channels/mattermost","docsLabel":"mattermost","blurb":"self-hosted Slack-style chat; install the plugin to enable.","order":65,"setup":{"fields":[{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"Mattermost bot token"}},{"key":"botToken","kind":"string","sensitive":true,"cli":{"flags":"--bot-token ","description":"Mattermost bot token"}},{"key":"httpUrl","kind":"string","cli":{"flags":"--http-url ","description":"Mattermost server URL"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use Mattermost environment credentials"},"envVars":["MATTERMOST_BOT_TOKEN","MATTERMOST_URL"]}]}},"install":{"clawhubSpec":"clawhub:@openclaw/mattermost","npmSpec":"@openclaw/mattermost","defaultChoice":"npm","minHostVersion":">=2026.6.9","allowInvalidConfigRecovery":true}}}, - {"name":"@openclaw/msteams","version":"2026.8.1","description":"OpenClaw Microsoft Teams channel plugin for bot conversations.","source":"official","kind":"channel","openclaw":{"channel":{"id":"msteams","configuredState":{"env":{"anyOf":["MSTEAMS_APP_ID","MSTEAMS_APP_PASSWORD","MSTEAMS_TENANT_ID"]},"specifier":"./configured-state","exportName":"hasConfiguredMSTeamsChannelState"},"label":"Microsoft Teams","selectionLabel":"Microsoft Teams (Teams SDK)","docsPath":"/channels/msteams","docsLabel":"msteams","blurb":"Teams SDK; enterprise support.","aliases":["teams"],"order":60,"doctorCapabilities":{"dmAllowFromMode":"topOnly","groupModel":"hybrid","groupAllowFromFallbackToAllowFrom":true,"warnOnEmptyGroupSenderAllowlist":true},"setup":{"fields":[]}},"install":{"npmSpec":"@openclaw/msteams","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, - {"name":"@openclaw/nextcloud-talk","version":"2026.8.1","description":"OpenClaw Nextcloud Talk channel plugin for conversations.","source":"official","kind":"channel","openclaw":{"channel":{"id":"nextcloud-talk","configuredState":{"env":{"anyOf":["NEXTCLOUD_TALK_BOT_SECRET","NEXTCLOUD_TALK_API_PASSWORD"]},"specifier":"./configured-state","exportName":"hasConfiguredNextcloudTalkChannelState"},"label":"Nextcloud Talk","selectionLabel":"Nextcloud Talk (self-hosted)","docsPath":"/channels/nextcloud-talk","docsLabel":"nextcloud-talk","blurb":"Self-hosted chat via Nextcloud Talk webhook bots.","aliases":["nc-talk","nc"],"order":65,"quickstartAllowFrom":true,"setup":{"fields":[{"key":"baseUrl","kind":"string","cli":{"flags":"--base-url ","description":"Nextcloud base URL"}},{"key":"url","kind":"string","cli":{"flags":"--url ","description":"Legacy Nextcloud base URL alias"}},{"key":"secret","kind":"string","sensitive":true,"cli":{"flags":"--secret ","description":"Nextcloud Talk bot secret"}},{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"Legacy Nextcloud bot secret alias"}},{"key":"password","kind":"string","sensitive":true,"cli":{"flags":"--password ","description":"Legacy Nextcloud bot secret alias"}},{"key":"secretFile","kind":"string","sensitive":true,"cli":{"flags":"--secret-file ","description":"Nextcloud Talk bot secret file"}},{"key":"tokenFile","kind":"string","sensitive":true,"cli":{"flags":"--token-file ","description":"Legacy Nextcloud bot secret file alias"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use Nextcloud Talk environment credentials"},"envVars":["NEXTCLOUD_TALK_BOT_SECRET"]}]}},"install":{"npmSpec":"@openclaw/nextcloud-talk","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, - {"name":"@openclaw/nostr","version":"2026.8.1","description":"OpenClaw Nostr channel plugin for NIP-04 encrypted direct messages.","source":"official","kind":"channel","openclaw":{"channel":{"id":"nostr","configuredState":{"env":{"anyOf":["NOSTR_PRIVATE_KEY"]}},"label":"Nostr","selectionLabel":"Nostr (NIP-04 DMs)","docsPath":"/channels/nostr","docsLabel":"nostr","blurb":"Decentralized protocol; encrypted DMs via NIP-04.","order":55,"quickstartAllowFrom":true,"setup":{"fields":[{"key":"privateKey","kind":"string","sensitive":true,"cli":{"flags":"--private-key ","description":"Nostr private key"}},{"key":"relayUrls","kind":"string","cli":{"flags":"--relay-urls ","description":"Nostr relay URLs"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use NOSTR_PRIVATE_KEY"},"envVars":["NOSTR_PRIVATE_KEY"]}]}},"install":{"npmSpec":"@openclaw/nostr","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, + {"name":"@openclaw/buzz","version":"2026.9.1","description":"Connect OpenClaw agents to Buzz rooms","source":"official","kind":"channel","openclaw":{"channelConfigs":{"buzz":{"label":"Buzz","description":"Connect OpenClaw agents to Buzz team rooms."}},"channel":{"id":"buzz","configuredState":{"env":{"allOf":["BUZZ_RELAY_URL","BUZZ_PRIVATE_KEY"]}},"label":"Buzz","selectionLabel":"Buzz","docsPath":"/channels/buzz","docsLabel":"buzz","blurb":"Connect OpenClaw agents to Buzz team rooms.","markdownCapable":true,"order":56,"setup":{"fields":[{"key":"relayUrl","kind":"string","cli":{"flags":"--relay-url ","description":"Buzz relay WebSocket URL"}},{"key":"privateKey","kind":"string","sensitive":true,"cli":{"flags":"--private-key ","description":"Buzz bot Nostr private key"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use BUZZ_PRIVATE_KEY with the supplied relay URL"},"envVars":["BUZZ_PRIVATE_KEY"]}]}},"install":{"clawhubSpec":"clawhub:@openclaw/buzz","npmSpec":"@openclaw/buzz","defaultChoice":"npm","minHostVersion":">=2026.7.2"}}}, + {"name":"@openclaw/clickclack","version":"2026.9.1","description":"OpenClaw ClickClack channel plugin","source":"official","kind":"channel","openclaw":{"contracts":{"tools":["discussion"]},"channelConfigs":{"clickclack":{"label":"ClickClack","description":"ClickClack channel accounts and group activation policy."}},"channel":{"id":"clickclack","configuredState":{"env":{"anyOf":["CLICKCLACK_BOT_TOKEN"]}},"label":"ClickClack","selectionLabel":"ClickClack","detailLabel":"ClickClack Bot","docsPath":"/channels/clickclack","docsLabel":"clickclack","blurb":"self-hosted chat via first-class ClickClack bot tokens.","systemImage":"bubble.left.and.bubble.right","markdownCapable":true,"preferSessionLookupForAnnounceTarget":true,"order":85,"commands":{"nativeCommandsAutoEnabled":false,"nativeSkillsAutoEnabled":false},"setup":{"fields":[{"key":"code","kind":"string","sensitive":true,"cli":{"flags":"--code ","description":"ClickClack one-time setup code or setup URL"}},{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"ClickClack bot token"}},{"key":"tokenFile","kind":"string","sensitive":true,"cli":{"flags":"--token-file ","description":"ClickClack bot token file"}},{"key":"baseUrl","kind":"string","cli":{"flags":"--base-url ","description":"ClickClack API base URL"}},{"key":"workspace","kind":"string","cli":{"flags":"--workspace ","description":"ClickClack workspace id, slug, or name"}},{"key":"defaultTo","kind":"string","cli":{"flags":"--default-to ","description":"Default ClickClack target"}},{"key":"allowFrom","kind":"string-list","cli":{"flags":"--allow-from ","description":"Allowed ClickClack senders"}},{"key":"agentActivity","kind":"boolean","cli":{"flags":"--agent-activity","description":"Enable ClickClack agent activity"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use CLICKCLACK_BOT_TOKEN"},"envVars":["CLICKCLACK_BOT_TOKEN"]}]}},"install":{"clawhubSpec":"clawhub:@openclaw/clickclack","npmSpec":"@openclaw/clickclack","defaultChoice":"npm","minHostVersion":">=2026.6.9","allowInvalidConfigRecovery":true}}}, + {"name":"@openclaw/discord","version":"2026.9.1","description":"OpenClaw Discord channel plugin for channels, DMs, commands, and app events.","source":"official","kind":"channel","openclaw":{"contracts":{"transcriptSourceProviders":["discord-voice"]},"channel":{"id":"discord","configuredState":{"env":{"anyOf":["DISCORD_BOT_TOKEN"]}},"approvalFlags":["native"],"label":"Discord","selectionLabel":"Discord (Bot API)","detailLabel":"Discord Bot","docsPath":"/channels/discord","docsLabel":"discord","blurb":"very well supported right now.","systemImage":"bubble.left.and.bubble.right","markdownCapable":true,"preferSessionLookupForAnnounceTarget":true,"setup":{"fields":[{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"Discord bot token"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use DISCORD_BOT_TOKEN"},"envVars":["DISCORD_BOT_TOKEN"]}]},"commands":{"nativeCommandsAutoEnabled":true,"nativeSkillsAutoEnabled":true},"doctorCapabilities":{"dmAllowFromMode":"topOnly","groupModel":"route","groupAllowFromFallbackToAllowFrom":false,"warnOnEmptyGroupSenderAllowlist":false}},"install":{"npmSpec":"@openclaw/discord","defaultChoice":"npm","minHostVersion":">=2026.5.26","allowInvalidConfigRecovery":true}}}, + {"name":"@openclaw/feishu","version":"2026.9.1","description":"OpenClaw Feishu/Lark channel plugin for chats and workplace tools (community maintained by @m1heng).","source":"official","kind":"channel","openclaw":{"contracts":{"tools":["feishu_app_scopes","feishu_bitable_create_app","feishu_bitable_create_field","feishu_bitable_create_record","feishu_bitable_get_meta","feishu_bitable_get_record","feishu_bitable_list_fields","feishu_bitable_list_records","feishu_bitable_update_record","feishu_chat","feishu_doc","feishu_drive","feishu_perm","feishu_wiki"]},"channel":{"id":"feishu","configuredState":{"env":{"anyOf":["FEISHU_APP_ID","FEISHU_APP_SECRET","FEISHU_VERIFICATION_TOKEN","FEISHU_ENCRYPT_KEY"]},"specifier":"./configured-state","exportName":"hasConfiguredFeishuChannelState"},"label":"Feishu","selectionLabel":"Feishu/Lark (飞书)","docsPath":"/channels/feishu","docsLabel":"feishu","blurb":"飞书/Lark enterprise messaging with doc/wiki/drive tools.","aliases":["lark"],"order":35,"quickstartAllowFrom":true,"setup":{"fields":[]}},"install":{"npmSpec":"@openclaw/feishu","defaultChoice":"npm","minHostVersion":">=2026.5.29"}}}, + {"name":"@openclaw/googlechat","version":"2026.9.1","description":"OpenClaw Google Chat channel plugin for spaces and direct messages.","source":"official","kind":"channel","openclaw":{"channel":{"id":"googlechat","configuredState":{"env":{"anyOf":["GOOGLE_CHAT_SERVICE_ACCOUNT","GOOGLE_CHAT_SERVICE_ACCOUNT_FILE"]}},"approvalFlags":["native"],"label":"Google Chat","selectionLabel":"Google Chat (Chat API)","detailLabel":"Google Chat","docsPath":"/channels/googlechat","docsLabel":"googlechat","blurb":"Google Workspace Chat app with HTTP webhook.","aliases":["gchat","google-chat"],"order":55,"systemImage":"message.badge","markdownCapable":true,"doctorCapabilities":{"dmAllowFromMode":"topOnly","groupModel":"route","groupAllowFromFallbackToAllowFrom":false,"warnOnEmptyGroupSenderAllowlist":false},"setup":{"fields":[{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"Google Chat service account JSON"}},{"key":"tokenFile","kind":"string","sensitive":true,"cli":{"flags":"--token-file ","description":"Google Chat service account file"}},{"key":"audienceType","kind":"choice","choices":["app-url","project-number"],"cli":{"flags":"--audience-type ","description":"Google Chat audience type"}},{"key":"audience","kind":"string","cli":{"flags":"--audience ","description":"Google Chat audience value"}},{"key":"webhookPath","kind":"string","cli":{"flags":"--webhook-path ","description":"Google Chat webhook path"}},{"key":"webhookUrl","kind":"string","cli":{"flags":"--webhook-url ","description":"Google Chat webhook URL"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use Google Chat environment credentials"},"envVars":["GOOGLE_CHAT_SERVICE_ACCOUNT","GOOGLE_CHAT_SERVICE_ACCOUNT_FILE"],"envVarMode":"any"}]}},"install":{"npmSpec":"@openclaw/googlechat","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, + {"name":"@openclaw/imessage","version":"2026.9.1","description":"OpenClaw iMessage channel plugin using imsg on a signed-in Mac","source":"official","kind":"channel","openclaw":{"channel":{"id":"imessage","approvalFlags":["native"],"label":"iMessage","selectionLabel":"iMessage (imsg)","detailLabel":"iMessage","docsPath":"/channels/imessage","docsLabel":"imessage","blurb":"Local iMessage/SMS through the imsg bridge, including private API message actions when enabled.","aliases":["imsg"],"systemImage":"message.fill","setup":{"fields":[{"key":"cliPath","kind":"string","cli":{"flags":"--cli-path ","description":"iMessage CLI path"}},{"key":"dbPath","kind":"string","cli":{"flags":"--db-path ","description":"iMessage database path"}},{"key":"service","kind":"choice","choices":["imessage","sms","auto"],"cli":{"flags":"--service ","description":"iMessage service"}},{"key":"region","kind":"string","cli":{"flags":"--region ","description":"SMS region"}}]}},"install":{"clawhubSpec":"clawhub:@openclaw/imessage","npmSpec":"@openclaw/imessage","defaultChoice":"npm","minHostVersion":">=2026.7.2","allowInvalidConfigRecovery":true}}}, + {"name":"@openclaw/irc","version":"2026.9.1","description":"OpenClaw IRC channel plugin","source":"official","kind":"channel","openclaw":{"channel":{"id":"irc","configuredState":{"env":{"allOf":["IRC_HOST","IRC_NICK"]}},"label":"IRC","selectionLabel":"IRC (Server + Nick)","detailLabel":"IRC","docsPath":"/channels/irc","docsLabel":"irc","blurb":"classic IRC networks with DM/channel routing and pairing controls.","aliases":["internet-relay-chat"],"systemImage":"network","setup":{"fields":[{"key":"host","kind":"string","cli":{"flags":"--host ","description":"IRC server host"}},{"key":"port","kind":"string","cli":{"flags":"--port ","description":"IRC server port"}},{"key":"tls","kind":"boolean","cli":{"flags":"--tls","description":"Use TLS for IRC"}},{"key":"nick","kind":"string","cli":{"flags":"--nick ","description":"IRC nickname"}},{"key":"username","kind":"string","cli":{"flags":"--username ","description":"IRC username"}},{"key":"realname","kind":"string","cli":{"flags":"--realname ","description":"IRC real name"}},{"key":"channels","kind":"string-list","cli":{"flags":"--channels ","description":"IRC channels"}},{"key":"password","kind":"string","sensitive":true,"cli":{"flags":"--password ","description":"IRC server password"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use IRC environment configuration"},"envVars":["IRC_HOST","IRC_NICK"]}]}},"install":{"clawhubSpec":"clawhub:@openclaw/irc","npmSpec":"@openclaw/irc","defaultChoice":"npm","minHostVersion":">=2026.6.9","allowInvalidConfigRecovery":true}}}, + {"name":"@openclaw/line","version":"2026.9.1","description":"OpenClaw LINE channel plugin for LINE Bot API chats.","source":"official","kind":"channel","openclaw":{"channel":{"id":"line","configuredState":{"env":{"allOf":["LINE_CHANNEL_ACCESS_TOKEN","LINE_CHANNEL_SECRET"]}},"label":"LINE","selectionLabel":"LINE (Messaging API)","detailLabel":"LINE Bot","docsPath":"/channels/line","docsLabel":"line","blurb":"LINE Messaging API webhook bot.","systemImage":"message","order":75,"quickstartAllowFrom":true,"setup":{"fields":[{"key":"channelAccessToken","kind":"string","sensitive":true,"cli":{"flags":"--channel-access-token ","description":"LINE channel access token"}},{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"LINE channel access token (alias)"}},{"key":"channelSecret","kind":"string","sensitive":true,"cli":{"flags":"--channel-secret ","description":"LINE channel secret"}},{"key":"tokenFile","kind":"string","sensitive":true,"cli":{"flags":"--token-file ","description":"LINE access token file"}},{"key":"secretFile","kind":"string","sensitive":true,"cli":{"flags":"--secret-file ","description":"LINE channel secret file"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use LINE environment credentials"},"envVars":["LINE_CHANNEL_ACCESS_TOKEN","LINE_CHANNEL_SECRET"]}]}},"install":{"npmSpec":"@openclaw/line","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, + {"name":"@openclaw/matrix","version":"2026.9.1","description":"OpenClaw Matrix channel plugin for rooms and direct messages.","source":"official","kind":"channel","openclaw":{"channel":{"id":"matrix","configuredState":{"env":{"anyOf":["MATRIX_HOMESERVER","MATRIX_USER_ID","MATRIX_ACCESS_TOKEN","MATRIX_PASSWORD","MATRIX_DEVICE_ID","MATRIX_DEVICE_NAME","MATRIX_OPS_HOMESERVER","MATRIX_OPS_ACCESS_TOKEN","MATRIX_OPS_DEVICE_ID","MATRIX_OPS_DEVICE_NAME"]}},"approvalFlags":["native"],"label":"Matrix","selectionLabel":"Matrix (plugin)","docsPath":"/channels/matrix","docsLabel":"matrix","blurb":"open protocol; install the plugin to enable.","order":70,"markdownCapable":true,"quickstartAllowFrom":true,"doctorCapabilities":{"dmAllowFromMode":"nestedOnly","groupModel":"sender","groupAllowFromFallbackToAllowFrom":false,"warnOnEmptyGroupSenderAllowlist":true},"setup":{"fields":[{"key":"homeserver","kind":"string","cli":{"flags":"--homeserver ","description":"Matrix homeserver URL"}},{"key":"userId","kind":"string","cli":{"flags":"--user-id ","description":"Matrix user id"}},{"key":"accessToken","kind":"string","sensitive":true,"cli":{"flags":"--access-token ","description":"Matrix access token"}},{"key":"password","kind":"string","sensitive":true,"cli":{"flags":"--password ","description":"Matrix password"}},{"key":"deviceName","kind":"string","cli":{"flags":"--device-name ","description":"Matrix device name"}},{"key":"avatarUrl","kind":"string","cli":{"flags":"--avatar-url ","description":"Matrix avatar URL"}},{"key":"initialSyncLimit","kind":"integer","cli":{"flags":"--initial-sync-limit ","description":"Matrix initial sync room limit"}},{"key":"proxy","kind":"string","cli":{"flags":"--proxy ","description":"Matrix proxy URL"}},{"key":"dangerouslyAllowPrivateNetwork","kind":"boolean","cli":{"flags":"--dangerously-allow-private-network","description":"Allow private-network Matrix homeservers"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use Matrix environment credentials"}}]},"persistedAuthState":{"specifier":"./auth-presence","exportName":"hasAnyMatrixAuth"}},"install":{"clawhubSpec":"clawhub:@openclaw/matrix","npmSpec":"@openclaw/matrix","defaultChoice":"npm","minHostVersion":">=2026.4.10","allowInvalidConfigRecovery":true}}}, + {"name":"@openclaw/mattermost","version":"2026.9.1","description":"OpenClaw Mattermost channel plugin","source":"official","kind":"channel","openclaw":{"channel":{"id":"mattermost","configuredState":{"env":{"allOf":["MATTERMOST_BOT_TOKEN","MATTERMOST_URL"]}},"label":"Mattermost","selectionLabel":"Mattermost (plugin)","docsPath":"/channels/mattermost","docsLabel":"mattermost","blurb":"self-hosted Slack-style chat; install the plugin to enable.","order":65,"setup":{"fields":[{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"Mattermost bot token"}},{"key":"botToken","kind":"string","sensitive":true,"cli":{"flags":"--bot-token ","description":"Mattermost bot token"}},{"key":"httpUrl","kind":"string","cli":{"flags":"--http-url ","description":"Mattermost server URL"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use Mattermost environment credentials"},"envVars":["MATTERMOST_BOT_TOKEN","MATTERMOST_URL"]}]}},"install":{"clawhubSpec":"clawhub:@openclaw/mattermost","npmSpec":"@openclaw/mattermost","defaultChoice":"npm","minHostVersion":">=2026.6.9","allowInvalidConfigRecovery":true}}}, + {"name":"@openclaw/msteams","version":"2026.9.1","description":"OpenClaw Microsoft Teams channel plugin for bot conversations.","source":"official","kind":"channel","openclaw":{"channel":{"id":"msteams","configuredState":{"env":{"anyOf":["MSTEAMS_APP_ID","MSTEAMS_APP_PASSWORD","MSTEAMS_TENANT_ID"]},"specifier":"./configured-state","exportName":"hasConfiguredMSTeamsChannelState"},"label":"Microsoft Teams","selectionLabel":"Microsoft Teams (Teams SDK)","docsPath":"/channels/msteams","docsLabel":"msteams","blurb":"Teams SDK; enterprise support.","aliases":["teams"],"order":60,"doctorCapabilities":{"dmAllowFromMode":"topOnly","groupModel":"hybrid","groupAllowFromFallbackToAllowFrom":true,"warnOnEmptyGroupSenderAllowlist":true},"setup":{"fields":[]}},"install":{"npmSpec":"@openclaw/msteams","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, + {"name":"@openclaw/nextcloud-talk","version":"2026.9.1","description":"OpenClaw Nextcloud Talk channel plugin for conversations.","source":"official","kind":"channel","openclaw":{"channel":{"id":"nextcloud-talk","configuredState":{"env":{"anyOf":["NEXTCLOUD_TALK_BOT_SECRET","NEXTCLOUD_TALK_API_PASSWORD"]},"specifier":"./configured-state","exportName":"hasConfiguredNextcloudTalkChannelState"},"label":"Nextcloud Talk","selectionLabel":"Nextcloud Talk (self-hosted)","docsPath":"/channels/nextcloud-talk","docsLabel":"nextcloud-talk","blurb":"Self-hosted chat via Nextcloud Talk webhook bots.","aliases":["nc-talk","nc"],"order":65,"quickstartAllowFrom":true,"setup":{"fields":[{"key":"baseUrl","kind":"string","cli":{"flags":"--base-url ","description":"Nextcloud base URL"}},{"key":"url","kind":"string","cli":{"flags":"--url ","description":"Legacy Nextcloud base URL alias"}},{"key":"secret","kind":"string","sensitive":true,"cli":{"flags":"--secret ","description":"Nextcloud Talk bot secret"}},{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"Legacy Nextcloud bot secret alias"}},{"key":"password","kind":"string","sensitive":true,"cli":{"flags":"--password ","description":"Legacy Nextcloud bot secret alias"}},{"key":"secretFile","kind":"string","sensitive":true,"cli":{"flags":"--secret-file ","description":"Nextcloud Talk bot secret file"}},{"key":"tokenFile","kind":"string","sensitive":true,"cli":{"flags":"--token-file ","description":"Legacy Nextcloud bot secret file alias"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use Nextcloud Talk environment credentials"},"envVars":["NEXTCLOUD_TALK_BOT_SECRET"]}]}},"install":{"npmSpec":"@openclaw/nextcloud-talk","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, + {"name":"@openclaw/nostr","version":"2026.9.1","description":"OpenClaw Nostr channel plugin for NIP-04 encrypted direct messages.","source":"official","kind":"channel","openclaw":{"channel":{"id":"nostr","configuredState":{"env":{"anyOf":["NOSTR_PRIVATE_KEY"]}},"label":"Nostr","selectionLabel":"Nostr (NIP-04 DMs)","docsPath":"/channels/nostr","docsLabel":"nostr","blurb":"Decentralized protocol; encrypted DMs via NIP-04.","order":55,"quickstartAllowFrom":true,"setup":{"fields":[{"key":"privateKey","kind":"string","sensitive":true,"cli":{"flags":"--private-key ","description":"Nostr private key"}},{"key":"relayUrls","kind":"string","cli":{"flags":"--relay-urls ","description":"Nostr relay URLs"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use NOSTR_PRIVATE_KEY"},"envVars":["NOSTR_PRIVATE_KEY"]}]}},"install":{"npmSpec":"@openclaw/nostr","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, {"name":"@tencent-weixin/openclaw-weixin","description":"OpenClaw Weixin channel plugin by the Tencent Weixin team.","source":"external","kind":"channel","openclaw":{"plugin":{"id":"openclaw-weixin","label":"Weixin"},"channel":{"id":"openclaw-weixin","label":"Weixin","selectionLabel":"Weixin(微信)","detailLabel":"Weixin","docsPath":"/channels/wechat","docsLabel":"weixin","blurb":"Personal WeChat messaging via QR-code login.","aliases":["weixin","wechat","微信"],"order":75},"channelConfigs":{"openclaw-weixin":{"label":"Weixin","description":"Personal WeChat conversation channel.","schema":{"type":"object","additionalProperties":true}}},"install":{"npmSpec":"@tencent-weixin/openclaw-weixin@2.4.8","defaultChoice":"npm","expectedIntegrity":"sha512-hhO9prUQwzfSpIL6XGWazRsxNs89K+Mis3iQW6a8eum4AIDxOUiTFMg4nlNVD/au0SjAx5CcJjo3KYWZqGpgQA==","minHostVersion":">=2026.5.12"}}}, {"name":"@zalo-platforms/openclaw-zaloclawbot","description":"OpenClaw Zalo ClawBot channel plugin by the Zalo Platforms team.","source":"external","kind":"channel","openclaw":{"plugin":{"id":"openclaw-zaloclawbot","label":"Zalo ClawBot"},"channel":{"id":"openclaw-zaloclawbot","label":"Zalo ClawBot","selectionLabel":"Zalo ClawBot (QR)","detailLabel":"Zalo ClawBot","docsPath":"/channels/zaloclawbot","docsLabel":"zaloclawbot","blurb":"Personal Zalo assistant bot via QR-code login — owner-bound, no setup.","aliases":["zaloclawbot","zalo-clawbot"],"order":82},"channelConfigs":{"openclaw-zaloclawbot":{"label":"Zalo ClawBot","description":"Personal Zalo assistant — QR-onboarded, owner-bound.","schema":{"type":"object","additionalProperties":true}}},"install":{"npmSpec":"@zalo-platforms/openclaw-zaloclawbot@0.1.4","defaultChoice":"npm","expectedIntegrity":"sha512-5IxZriHJYACLLGqkCPPsTP9tas62kXEOFqTFAFMdunAM3SPhIJwVFRp0WvoP/m7L2PX85weD0g8LOtxM93VDYg==","minHostVersion":">=2026.4.10"}}}, {"name":"@tencent-connect/openclaw-qqbot","description":"OpenClaw QQ Bot channel plugin by the Tencent Connect team.","source":"external","kind":"channel","openclaw":{"plugin":{"id":"openclaw-qqbot","label":"QQ Bot"},"setupFeatures":{"configPromotion":"preserve-root"},"legacyNpmPackageNames":["@openclaw/qqbot"],"contracts":{"tools":["qqbot_platform_api","qqbot_remind"]},"channel":{"id":"qqbot","label":"QQ Bot","selectionLabel":"QQ Bot (Official API)","detailLabel":"QQ Bot","docsPath":"/channels/qqbot","docsLabel":"qqbot","blurb":"connect to QQ via official QQ Bot API with group chat and direct message support.","envVars":["QQBOT_APP_ID","QQBOT_CLIENT_SECRET"],"approvalFlags":["native"],"doctorCapabilities":{"openDmRequiresAllowFromWildcard":false},"systemImage":"bubble.left.and.bubble.right"},"channelSecrets":{"fields":[{"field":"clientSecret","activationField":"appId","activationEnv":"QQBOT_APP_ID"}]},"channelHostConfig":{"docsSource":"official","compatibilityMigration":"qqbot.tencent-2.0-compatibility","schemaAllOf":[{"not":{"required":["defaultAccount"]},"properties":{"allowFrom":{"type":"array","minItems":1,"items":{"allOf":[{"not":{"const":"*"}},{"anyOf":[{"const":"openclaw:approval-disabled"},{"type":"string","pattern":"^[^a-z]*$"}]}]}},"accounts":{"type":"object","not":{"required":["default"]},"additionalProperties":{"type":"object","properties":{"allowFrom":{"type":"array","minItems":1,"items":{"allOf":[{"not":{"const":"*"}},{"anyOf":[{"const":"openclaw:approval-disabled"},{"type":"string","pattern":"^[^a-z]*$"}]}]}}},"required":["allowFrom"]}}},"required":["allowFrom"]}]},"channelConfigs":{"qqbot":{"label":"QQ Bot","description":"QQ Bot API conversation channel.","preferOver":["qqbot"],"schema":{"type":"object","additionalProperties":true,"properties":{"appId":{"type":"string"},"clientSecret":{"type":"string"}}}}},"install":{"npmSpec":"@tencent-connect/openclaw-qqbot@2.0.3","defaultChoice":"npm","expectedIntegrity":"sha512-yngu/2cPeZjJfIfHWCXWB2/6KlDHrb9vpOUjKLdQxePLSp6wCn3CFOALcBIVq/9o6jlYz9WTU9idW6nfX1xpFA=="}}}, - {"name":"@openclaw/raft","version":"2026.8.1","description":"OpenClaw Raft channel plugin for Raft CLI wake bridges.","source":"official","kind":"channel","openclaw":{"channelConfigs":{"raft":{"label":"Raft","description":"Raft External Agent CLI wake bridge."}},"channel":{"id":"raft","configuredState":{"env":{"anyOf":["RAFT_PROFILE"]}},"label":"Raft","selectionLabel":"Raft (CLI wake bridge)","docsPath":"/channels/raft","docsLabel":"raft","blurb":"Raft CLI wake bridge for human and agent collaboration.","order":72,"setup":{"fields":[{"key":"profile","kind":"string","cli":{"flags":"--profile ","description":"Raft CLI profile"}}]}},"install":{"npmSpec":"@openclaw/raft","defaultChoice":"npm","minHostVersion":">=2026.6.8"}}}, - {"name":"@openclaw/signal","version":"2026.8.1","description":"OpenClaw Signal channel plugin","source":"official","kind":"channel","openclaw":{"channel":{"id":"signal","approvalFlags":["native"],"label":"Signal","selectionLabel":"Signal (signal-cli)","detailLabel":"Signal REST","docsPath":"/channels/signal","docsLabel":"signal","blurb":"signal-cli linked device with additional setup for the local REST bridge.","systemImage":"antenna.radiowaves.left.and.right","markdownCapable":true,"setup":{"fields":[{"key":"signalNumber","kind":"string","cli":{"flags":"--signal-number ","description":"Signal account number (E.164)"}},{"key":"signalTransport","kind":"choice","choices":["external-native","container"],"cli":{"flags":"--signal-transport ","description":"Signal HTTP transport (external-native or container)"}},{"key":"cliPath","kind":"string","cli":{"flags":"--cli-path ","description":"signal-cli executable path"}},{"key":"httpUrl","kind":"string","cli":{"flags":"--http-url ","description":"Signal HTTP service URL"}},{"key":"httpHost","kind":"string","cli":{"flags":"--http-host ","description":"Signal HTTP daemon host"}},{"key":"httpPort","kind":"string","cli":{"flags":"--http-port ","description":"Signal HTTP daemon port"}}]}},"install":{"clawhubSpec":"clawhub:@openclaw/signal","npmSpec":"@openclaw/signal","defaultChoice":"npm","minHostVersion":">=2026.6.9","allowInvalidConfigRecovery":true}}}, - {"name":"@openclaw/slack","version":"2026.8.1","description":"OpenClaw Slack channel plugin for channels, DMs, commands, and app events.","source":"official","kind":"channel","openclaw":{"channelConfigs":{"slack":{"label":"Slack","description":"Slack channel, DM, command, and app event integration."}},"channel":{"id":"slack","configuredState":{"env":{"anyOf":["SLACK_BOT_TOKEN","SLACK_APP_TOKEN","SLACK_USER_TOKEN"]},"specifier":"./configured-state","exportName":"hasConfiguredSlackChannelState"},"approvalFlags":["native"],"label":"Slack","selectionLabel":"Slack (Socket Mode)","detailLabel":"Slack Bot","docsPath":"/channels/slack","docsLabel":"slack","blurb":"supported (Socket Mode).","systemImage":"number","markdownCapable":true,"doctorCapabilities":{"dmAllowFromMode":"topOnly","groupModel":"route","groupAllowFromFallbackToAllowFrom":false,"warnOnEmptyGroupSenderAllowlist":false},"commands":{"nativeCommandsAutoEnabled":false,"nativeSkillsAutoEnabled":false},"setup":{"fields":[{"key":"botToken","kind":"string","sensitive":true,"cli":{"flags":"--bot-token ","description":"Slack bot token"}},{"key":"appToken","kind":"string","sensitive":true,"cli":{"flags":"--app-token ","description":"Slack app token"}},{"key":"userToken","kind":"string","sensitive":true,"cli":{"flags":"--user-token ","description":"Slack user token"}},{"key":"signingSecret","kind":"string","sensitive":true,"cli":{"flags":"--signing-secret ","description":"Slack signing secret"}},{"key":"identity","kind":"choice","choices":["bot","user"],"cli":{"flags":"--identity ","description":"Slack identity"}},{"key":"mode","kind":"choice","choices":["socket","http"],"cli":{"flags":"--mode ","description":"Slack connection mode"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use Slack environment credentials"},"envVars":["SLACK_BOT_TOKEN"]}]}},"install":{"npmSpec":"@openclaw/slack","defaultChoice":"npm","minHostVersion":">=2026.5.28","allowInvalidConfigRecovery":true}}}, - {"name":"@openclaw/sms","version":"2026.8.1","description":"OpenClaw SMS/MMS channel plugin for Twilio messages.","source":"official","kind":"channel","openclaw":{"channel":{"id":"sms","configuredState":{"env":{"anyOf":["TWILIO_ACCOUNT_SID","TWILIO_AUTH_TOKEN","TWILIO_PHONE_NUMBER","TWILIO_SMS_FROM","TWILIO_MESSAGING_SERVICE_SID"]},"specifier":"./configured-state","exportName":"hasConfiguredSmsChannelState"},"label":"SMS","selectionLabel":"SMS (Twilio)","detailLabel":"Twilio SMS/MMS","docsPath":"/channels/sms","docsLabel":"sms","blurb":"Twilio-backed SMS/MMS with inbound webhooks and outbound replies.","order":88,"quickstartAllowFrom":true,"setup":{"fields":[{"key":"accountSid","kind":"string","sensitive":true,"cli":{"flags":"--account-sid ","description":"Twilio account SID"}},{"key":"authToken","kind":"string","sensitive":true,"cli":{"flags":"--auth-token ","description":"Twilio auth token"}},{"key":"fromNumber","kind":"string","cli":{"flags":"--from-number ","description":"Twilio sender phone number"}},{"key":"messagingServiceSid","kind":"string","cli":{"flags":"--messaging-service-sid ","description":"Twilio Messaging Service SID"}},{"key":"defaultTo","kind":"string","cli":{"flags":"--default-to ","description":"Default SMS recipient"}},{"key":"webhookPath","kind":"string","cli":{"flags":"--webhook-path ","description":"SMS webhook path"}},{"key":"publicWebhookUrl","kind":"string","cli":{"flags":"--public-webhook-url ","description":"Public SMS webhook URL"}},{"key":"dmPolicy","kind":"choice","choices":["pairing","allowlist","open","disabled"],"cli":{"flags":"--dm-policy ","description":"SMS DM policy"}},{"key":"allowFrom","kind":"string-list","cli":{"flags":"--allow-from ","description":"Allowed SMS senders"}}]}},"install":{"clawhubSpec":"clawhub:@openclaw/sms","npmSpec":"@openclaw/sms","defaultChoice":"npm","minHostVersion":">=2026.6.9","allowInvalidConfigRecovery":true}}}, - {"name":"@openclaw/synology-chat","version":"2026.8.1","description":"Synology Chat channel plugin for OpenClaw channels and direct messages.","source":"official","kind":"channel","openclaw":{"channel":{"id":"synology-chat","configuredState":{"env":{"allOf":["SYNOLOGY_CHAT_TOKEN","SYNOLOGY_CHAT_INCOMING_URL"]}},"label":"Synology Chat","selectionLabel":"Synology Chat (Webhook)","docsPath":"/channels/synology-chat","docsLabel":"synology-chat","blurb":"Connect your Synology NAS Chat to OpenClaw with full agent capabilities.","order":90,"setup":{"fields":[{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"Synology Chat token"}},{"key":"url","kind":"string","sensitive":true,"cli":{"flags":"--url ","description":"Synology Chat webhook URL"}},{"key":"webhookUrl","kind":"string","sensitive":true,"cli":{"flags":"--webhook-url ","description":"Public HTTPS Synology Chat callback URL used for attachments"}},{"key":"webhookPath","kind":"string","cli":{"flags":"--webhook-path ","description":"Synology Chat webhook path"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use Synology Chat environment credentials"},"envVars":["SYNOLOGY_CHAT_TOKEN"]}]}},"install":{"npmSpec":"@openclaw/synology-chat","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, - {"name":"@openclaw/tlon","version":"2026.8.1","description":"OpenClaw Tlon/Urbit channel plugin for chat workflows.","source":"official","kind":"channel","openclaw":{"channel":{"id":"tlon","label":"Tlon","selectionLabel":"Tlon (Urbit)","docsPath":"/channels/tlon","docsLabel":"tlon","blurb":"decentralized messaging on Urbit; install the plugin to enable.","order":90,"quickstartAllowFrom":true,"setup":{"fields":[{"key":"ship","kind":"string","cli":{"flags":"--ship ","description":"Tlon ship"}},{"key":"url","kind":"string","cli":{"flags":"--url ","description":"Tlon URL"}},{"key":"code","kind":"string","sensitive":true,"cli":{"flags":"--code ","description":"Tlon login code"}},{"key":"dangerouslyAllowPrivateNetwork","kind":"boolean","cli":{"flags":"--dangerously-allow-private-network","description":"Allow private-network Tlon URLs"}},{"key":"groupChannels","kind":"string-list","cli":{"flags":"--group-channels ","description":"Tlon group channels"}},{"key":"dmAllowlist","kind":"string-list","cli":{"flags":"--dm-allowlist ","description":"Tlon DM allowlist"}},{"key":"autoDiscoverChannels","kind":"boolean","cli":{"flags":"--auto-discover-channels","negatedFlags":"--no-auto-discover-channels","description":"Auto-discover Tlon group channels"}},{"key":"ownerShip","kind":"string","cli":{"flags":"--owner-ship ","description":"Tlon owner ship"}}]}},"install":{"npmSpec":"@openclaw/tlon","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, - {"name":"@openclaw/twitch","version":"2026.8.1","description":"OpenClaw Twitch channel plugin for chat and moderation workflows.","source":"official","kind":"channel","openclaw":{"channel":{"id":"twitch","configuredState":{"env":{"anyOf":["OPENCLAW_TWITCH_ACCESS_TOKEN"]}},"label":"Twitch","selectionLabel":"Twitch (Chat)","docsPath":"/channels/twitch","blurb":"Twitch chat integration","aliases":["twitch-chat"],"setup":{"fields":[]}},"install":{"npmSpec":"@openclaw/twitch","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, + {"name":"@openclaw/raft","version":"2026.9.1","description":"OpenClaw Raft channel plugin for Raft CLI wake bridges.","source":"official","kind":"channel","openclaw":{"channelConfigs":{"raft":{"label":"Raft","description":"Raft External Agent CLI wake bridge."}},"channel":{"id":"raft","configuredState":{"env":{"anyOf":["RAFT_PROFILE"]}},"label":"Raft","selectionLabel":"Raft (CLI wake bridge)","docsPath":"/channels/raft","docsLabel":"raft","blurb":"Raft CLI wake bridge for human and agent collaboration.","order":72,"setup":{"fields":[{"key":"profile","kind":"string","cli":{"flags":"--profile ","description":"Raft CLI profile"}}]}},"install":{"npmSpec":"@openclaw/raft","defaultChoice":"npm","minHostVersion":">=2026.6.8"}}}, + {"name":"@openclaw/signal","version":"2026.9.1","description":"OpenClaw Signal channel plugin","source":"official","kind":"channel","openclaw":{"channel":{"id":"signal","approvalFlags":["native"],"label":"Signal","selectionLabel":"Signal (signal-cli)","detailLabel":"Signal REST","docsPath":"/channels/signal","docsLabel":"signal","blurb":"signal-cli linked device with additional setup for the local REST bridge.","systemImage":"antenna.radiowaves.left.and.right","markdownCapable":true,"setup":{"fields":[{"key":"signalNumber","kind":"string","cli":{"flags":"--signal-number ","description":"Signal account number (E.164)"}},{"key":"signalTransport","kind":"choice","choices":["external-native","container"],"cli":{"flags":"--signal-transport ","description":"Signal HTTP transport (external-native or container)"}},{"key":"cliPath","kind":"string","cli":{"flags":"--cli-path ","description":"signal-cli executable path"}},{"key":"httpUrl","kind":"string","cli":{"flags":"--http-url ","description":"Signal HTTP service URL"}},{"key":"httpHost","kind":"string","cli":{"flags":"--http-host ","description":"Signal HTTP daemon host"}},{"key":"httpPort","kind":"string","cli":{"flags":"--http-port ","description":"Signal HTTP daemon port"}}]}},"install":{"clawhubSpec":"clawhub:@openclaw/signal","npmSpec":"@openclaw/signal","defaultChoice":"npm","minHostVersion":">=2026.6.9","allowInvalidConfigRecovery":true}}}, + {"name":"@openclaw/slack","version":"2026.9.1","description":"OpenClaw Slack channel plugin for channels, DMs, commands, and app events.","source":"official","kind":"channel","openclaw":{"channelConfigs":{"slack":{"label":"Slack","description":"Slack channel, DM, command, and app event integration."}},"channel":{"id":"slack","configuredState":{"env":{"anyOf":["SLACK_BOT_TOKEN","SLACK_APP_TOKEN","SLACK_USER_TOKEN"]},"specifier":"./configured-state","exportName":"hasConfiguredSlackChannelState"},"approvalFlags":["native"],"label":"Slack","selectionLabel":"Slack (Socket Mode)","detailLabel":"Slack Bot","docsPath":"/channels/slack","docsLabel":"slack","blurb":"supported (Socket Mode).","systemImage":"number","markdownCapable":true,"doctorCapabilities":{"dmAllowFromMode":"topOnly","groupModel":"route","groupAllowFromFallbackToAllowFrom":false,"warnOnEmptyGroupSenderAllowlist":false},"commands":{"nativeCommandsAutoEnabled":false,"nativeSkillsAutoEnabled":false},"setup":{"fields":[{"key":"botToken","kind":"string","sensitive":true,"cli":{"flags":"--bot-token ","description":"Slack bot token"}},{"key":"appToken","kind":"string","sensitive":true,"cli":{"flags":"--app-token ","description":"Slack app token"}},{"key":"userToken","kind":"string","sensitive":true,"cli":{"flags":"--user-token ","description":"Slack user token"}},{"key":"signingSecret","kind":"string","sensitive":true,"cli":{"flags":"--signing-secret ","description":"Slack signing secret"}},{"key":"identity","kind":"choice","choices":["bot","user"],"cli":{"flags":"--identity ","description":"Slack identity"}},{"key":"mode","kind":"choice","choices":["socket","http"],"cli":{"flags":"--mode ","description":"Slack connection mode"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use Slack environment credentials"},"envVars":["SLACK_BOT_TOKEN"]}]}},"install":{"npmSpec":"@openclaw/slack","defaultChoice":"npm","minHostVersion":">=2026.5.28","allowInvalidConfigRecovery":true}}}, + {"name":"@openclaw/sms","version":"2026.9.1","description":"OpenClaw SMS/MMS channel plugin for Twilio messages.","source":"official","kind":"channel","openclaw":{"channel":{"id":"sms","configuredState":{"env":{"anyOf":["TWILIO_ACCOUNT_SID","TWILIO_AUTH_TOKEN","TWILIO_PHONE_NUMBER","TWILIO_SMS_FROM","TWILIO_MESSAGING_SERVICE_SID"]},"specifier":"./configured-state","exportName":"hasConfiguredSmsChannelState"},"label":"SMS","selectionLabel":"SMS (Twilio)","detailLabel":"Twilio SMS/MMS","docsPath":"/channels/sms","docsLabel":"sms","blurb":"Twilio-backed SMS/MMS with inbound webhooks and outbound replies.","order":88,"quickstartAllowFrom":true,"setup":{"fields":[{"key":"accountSid","kind":"string","sensitive":true,"cli":{"flags":"--account-sid ","description":"Twilio account SID"}},{"key":"authToken","kind":"string","sensitive":true,"cli":{"flags":"--auth-token ","description":"Twilio auth token"}},{"key":"fromNumber","kind":"string","cli":{"flags":"--from-number ","description":"Twilio sender phone number"}},{"key":"messagingServiceSid","kind":"string","cli":{"flags":"--messaging-service-sid ","description":"Twilio Messaging Service SID"}},{"key":"defaultTo","kind":"string","cli":{"flags":"--default-to ","description":"Default SMS recipient"}},{"key":"webhookPath","kind":"string","cli":{"flags":"--webhook-path ","description":"SMS webhook path"}},{"key":"publicWebhookUrl","kind":"string","cli":{"flags":"--public-webhook-url ","description":"Public SMS webhook URL"}},{"key":"dmPolicy","kind":"choice","choices":["pairing","allowlist","open","disabled"],"cli":{"flags":"--dm-policy ","description":"SMS DM policy"}},{"key":"allowFrom","kind":"string-list","cli":{"flags":"--allow-from ","description":"Allowed SMS senders"}}]}},"install":{"clawhubSpec":"clawhub:@openclaw/sms","npmSpec":"@openclaw/sms","defaultChoice":"npm","minHostVersion":">=2026.6.9","allowInvalidConfigRecovery":true}}}, + {"name":"@openclaw/synology-chat","version":"2026.9.1","description":"Synology Chat channel plugin for OpenClaw channels and direct messages.","source":"official","kind":"channel","openclaw":{"channel":{"id":"synology-chat","configuredState":{"env":{"allOf":["SYNOLOGY_CHAT_TOKEN","SYNOLOGY_CHAT_INCOMING_URL"]}},"label":"Synology Chat","selectionLabel":"Synology Chat (Webhook)","docsPath":"/channels/synology-chat","docsLabel":"synology-chat","blurb":"Connect your Synology NAS Chat to OpenClaw with full agent capabilities.","order":90,"setup":{"fields":[{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"Synology Chat token"}},{"key":"url","kind":"string","sensitive":true,"cli":{"flags":"--url ","description":"Synology Chat webhook URL"}},{"key":"webhookUrl","kind":"string","sensitive":true,"cli":{"flags":"--webhook-url ","description":"Public HTTPS Synology Chat callback URL used for attachments"}},{"key":"webhookPath","kind":"string","cli":{"flags":"--webhook-path ","description":"Synology Chat webhook path"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use Synology Chat environment credentials"},"envVars":["SYNOLOGY_CHAT_TOKEN"]}]}},"install":{"npmSpec":"@openclaw/synology-chat","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, + {"name":"@openclaw/tlon","version":"2026.9.1","description":"OpenClaw Tlon/Urbit channel plugin for chat workflows.","source":"official","kind":"channel","openclaw":{"channel":{"id":"tlon","label":"Tlon","selectionLabel":"Tlon (Urbit)","docsPath":"/channels/tlon","docsLabel":"tlon","blurb":"decentralized messaging on Urbit; install the plugin to enable.","order":90,"quickstartAllowFrom":true,"setup":{"fields":[{"key":"ship","kind":"string","cli":{"flags":"--ship ","description":"Tlon ship"}},{"key":"url","kind":"string","cli":{"flags":"--url ","description":"Tlon URL"}},{"key":"code","kind":"string","sensitive":true,"cli":{"flags":"--code ","description":"Tlon login code"}},{"key":"dangerouslyAllowPrivateNetwork","kind":"boolean","cli":{"flags":"--dangerously-allow-private-network","description":"Allow private-network Tlon URLs"}},{"key":"groupChannels","kind":"string-list","cli":{"flags":"--group-channels ","description":"Tlon group channels"}},{"key":"dmAllowlist","kind":"string-list","cli":{"flags":"--dm-allowlist ","description":"Tlon DM allowlist"}},{"key":"autoDiscoverChannels","kind":"boolean","cli":{"flags":"--auto-discover-channels","negatedFlags":"--no-auto-discover-channels","description":"Auto-discover Tlon group channels"}},{"key":"ownerShip","kind":"string","cli":{"flags":"--owner-ship ","description":"Tlon owner ship"}}]}},"install":{"npmSpec":"@openclaw/tlon","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, + {"name":"@openclaw/twitch","version":"2026.9.1","description":"OpenClaw Twitch channel plugin for chat and moderation workflows.","source":"official","kind":"channel","openclaw":{"channel":{"id":"twitch","configuredState":{"env":{"anyOf":["OPENCLAW_TWITCH_ACCESS_TOKEN"]}},"label":"Twitch","selectionLabel":"Twitch (Chat)","docsPath":"/channels/twitch","blurb":"Twitch chat integration","aliases":["twitch-chat"],"setup":{"fields":[]}},"install":{"npmSpec":"@openclaw/twitch","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, {"name":"@wecom/wecom-openclaw-plugin","description":"OpenClaw WeCom channel plugin by the Tencent WeCom team.","source":"external","kind":"channel","openclaw":{"plugin":{"id":"wecom-openclaw-plugin","label":"WeCom"},"contracts":{"tools":["wecom_mcp"]},"channel":{"id":"wecom","label":"WeCom","selectionLabel":"WeCom(企业微信)","detailLabel":"WeCom","docsPath":"/channels/wecom","docsLabel":"wecom","blurb":"Enterprise messaging and documents, scheduling, task tools.","aliases":["qywx","wework","enterprise-wechat"],"order":45},"channelConfigs":{"wecom":{"label":"WeCom","description":"Enterprise WeChat conversation channel.","schema":{"type":"object","additionalProperties":true}}},"install":{"npmSpec":"@wecom/wecom-openclaw-plugin@2026.7.2","defaultChoice":"npm","expectedIntegrity":"sha512-7kqdBIOF3SgDDoBoFtO6jxnxofbYSgbKdxZDNabD0y0jg2xKcVqlXZOOJ9+XQho/QOtIFrnRH2IRnPukFEYwJg=="}}}, - {"name":"@openclaw/whatsapp","version":"2026.8.1","description":"OpenClaw WhatsApp channel plugin for WhatsApp Web chats.","source":"official","kind":"channel","openclaw":{"contracts":{"tools":["whatsapp_call","whatsapp_login"]},"channel":{"id":"whatsapp","approvalFlags":["native"],"label":"WhatsApp","selectionLabel":"WhatsApp (QR link)","detailLabel":"WhatsApp Web","docsPath":"/channels/whatsapp","docsLabel":"whatsapp","blurb":"works with your own number; recommend a separate phone + eSIM.","systemImage":"message","persistedAuthState":{"specifier":"./auth-presence","exportName":"hasAnyWhatsAppAuth"},"setup":{"fields":[{"key":"authDir","kind":"string","cli":{"flags":"--auth-dir ","description":"WhatsApp auth directory override"}}]}},"install":{"clawhubSpec":"clawhub:@openclaw/whatsapp","npmSpec":"@openclaw/whatsapp","defaultChoice":"npm","minHostVersion":">=2026.4.25"}}}, + {"name":"@openclaw/whatsapp","version":"2026.9.1","description":"OpenClaw WhatsApp channel plugin for WhatsApp Web chats.","source":"official","kind":"channel","openclaw":{"contracts":{"tools":["whatsapp_call","whatsapp_login"]},"channel":{"id":"whatsapp","approvalFlags":["native"],"label":"WhatsApp","selectionLabel":"WhatsApp (QR link)","detailLabel":"WhatsApp Web","docsPath":"/channels/whatsapp","docsLabel":"whatsapp","blurb":"works with your own number; recommend a separate phone + eSIM.","systemImage":"message","persistedAuthState":{"specifier":"./auth-presence","exportName":"hasAnyWhatsAppAuth"},"setup":{"fields":[{"key":"authDir","kind":"string","cli":{"flags":"--auth-dir ","description":"WhatsApp auth directory override"}}]}},"install":{"clawhubSpec":"clawhub:@openclaw/whatsapp","npmSpec":"@openclaw/whatsapp","defaultChoice":"npm","minHostVersion":">=2026.4.25"}}}, {"name":"openclaw-plugin-yuanbao","description":"OpenClaw Yuanbao channel plugin by the Tencent Yuanbao team.","source":"external","kind":"channel","openclaw":{"plugin":{"id":"openclaw-plugin-yuanbao","label":"Yuanbao"},"contracts":{"tools":["query_group_info","query_session_members","yuanbao_remind"]},"channel":{"id":"yuanbao","label":"Yuanbao","selectionLabel":"Yuanbao (元宝)","detailLabel":"Yuanbao","docsPath":"/channels/yuanbao","docsLabel":"yuanbao","blurb":"Tencent Yuanbao AI assistant conversation channel.","aliases":["yuanbao","yb","tencent-yuanbao","元宝"],"order":85},"channelConfigs":{"yuanbao":{"label":"Yuanbao","description":"Tencent Yuanbao AI assistant channel.","schema":{"type":"object","additionalProperties":true}}},"install":{"npmSpec":"openclaw-plugin-yuanbao@2.18.2","defaultChoice":"npm","expectedIntegrity":"sha512-cL85zWLePhi/GWRsXL8ogS4tejNuCE/J0V/OYhDFJzElF2TmndVCUAXaJdssgv/ULJ9sBaic88wAzRllIgZIwA=="}}}, - {"name":"@openclaw/zalo","version":"2026.8.1","description":"OpenClaw Zalo channel plugin for bot and webhook chats.","source":"official","kind":"channel","openclaw":{"channel":{"id":"zalo","configuredState":{"env":{"anyOf":["ZALO_BOT_TOKEN"]}},"label":"Zalo","selectionLabel":"Zalo (Bot API)","docsPath":"/channels/zalo","docsLabel":"zalo","blurb":"Vietnam-focused messaging platform with Bot API.","aliases":["zl"],"order":80,"quickstartAllowFrom":true,"setup":{"fields":[{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"Zalo bot token"}},{"key":"tokenFile","kind":"string","sensitive":true,"cli":{"flags":"--token-file ","description":"Zalo bot token file"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use ZALO_BOT_TOKEN"},"envVars":["ZALO_BOT_TOKEN"]}]}},"install":{"npmSpec":"@openclaw/zalo","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, - {"name":"@openclaw/zalouser","version":"2026.8.1","description":"OpenClaw Zalo Personal Account plugin via native zca-js integration.","source":"official","kind":"channel","openclaw":{"contracts":{"tools":["zalouser"]},"channel":{"id":"zalouser","configuredState":{"env":{"anyOf":["ZALOUSER_PROFILE","ZCA_PROFILE"]}},"label":"Zalo Personal","selectionLabel":"Zalo (Personal Account)","docsPath":"/channels/zalouser","docsLabel":"zalouser","blurb":"Zalo personal account via QR code login.","aliases":["zlu"],"order":85,"quickstartAllowFrom":false,"doctorCapabilities":{"dmAllowFromMode":"topOnly","groupModel":"hybrid","groupAllowFromFallbackToAllowFrom":false,"warnOnEmptyGroupSenderAllowlist":false},"setup":{"fields":[]}},"install":{"npmSpec":"@openclaw/zalouser","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}} + {"name":"@openclaw/zalo","version":"2026.9.1","description":"OpenClaw Zalo channel plugin for bot and webhook chats.","source":"official","kind":"channel","openclaw":{"channel":{"id":"zalo","configuredState":{"env":{"anyOf":["ZALO_BOT_TOKEN"]}},"label":"Zalo","selectionLabel":"Zalo (Bot API)","docsPath":"/channels/zalo","docsLabel":"zalo","blurb":"Vietnam-focused messaging platform with Bot API.","aliases":["zl"],"order":80,"quickstartAllowFrom":true,"setup":{"fields":[{"key":"token","kind":"string","sensitive":true,"cli":{"flags":"--token ","description":"Zalo bot token"}},{"key":"tokenFile","kind":"string","sensitive":true,"cli":{"flags":"--token-file ","description":"Zalo bot token file"}},{"key":"useEnv","kind":"boolean","cli":{"flags":"--use-env","description":"Use ZALO_BOT_TOKEN"},"envVars":["ZALO_BOT_TOKEN"]}]}},"install":{"npmSpec":"@openclaw/zalo","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}}, + {"name":"@openclaw/zalouser","version":"2026.9.1","description":"OpenClaw Zalo Personal Account plugin via native zca-js integration.","source":"official","kind":"channel","openclaw":{"contracts":{"tools":["zalouser"]},"channel":{"id":"zalouser","configuredState":{"env":{"anyOf":["ZALOUSER_PROFILE","ZCA_PROFILE"]}},"label":"Zalo Personal","selectionLabel":"Zalo (Personal Account)","docsPath":"/channels/zalouser","docsLabel":"zalouser","blurb":"Zalo personal account via QR code login.","aliases":["zlu"],"order":85,"quickstartAllowFrom":false,"doctorCapabilities":{"dmAllowFromMode":"topOnly","groupModel":"hybrid","groupAllowFromFallbackToAllowFrom":false,"warnOnEmptyGroupSenderAllowlist":false},"setup":{"fields":[]}},"install":{"npmSpec":"@openclaw/zalouser","defaultChoice":"npm","minHostVersion":">=2026.4.10"}}} ] }