diff --git a/apps/android/app/build.gradle.kts b/apps/android/app/build.gradle.kts
index 9cd972b02921..1b6504988e53 100644
--- a/apps/android/app/build.gradle.kts
+++ b/apps/android/app/build.gradle.kts
@@ -65,8 +65,8 @@ android {
applicationId = "ai.openclaw.app"
minSdk = 31
targetSdk = 36
- versionCode = 2026052000
- versionName = "2026.5.20"
+ versionCode = 2026052100
+ versionName = "2026.5.21"
ndk {
// Support all major ABIs — native libs are tiny (~47 KB per ABI)
abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
diff --git a/apps/ios/CHANGELOG.md b/apps/ios/CHANGELOG.md
index bca2270e39af..2caa56ea3151 100644
--- a/apps/ios/CHANGELOG.md
+++ b/apps/ios/CHANGELOG.md
@@ -1,5 +1,9 @@
# OpenClaw iOS Changelog
+## 2026.5.21 - 2026-05-21
+
+Maintenance update for the current OpenClaw release.
+
## 2026.5.20 - 2026-05-20
Maintenance update for the current OpenClaw release.
diff --git a/apps/ios/Config/Version.xcconfig b/apps/ios/Config/Version.xcconfig
index fec9ef554dc4..2ff2532c7b7c 100644
--- a/apps/ios/Config/Version.xcconfig
+++ b/apps/ios/Config/Version.xcconfig
@@ -2,8 +2,8 @@
// Source of truth: apps/ios/version.json
// Generated by scripts/ios-sync-versioning.ts.
-OPENCLAW_IOS_VERSION = 2026.5.20
-OPENCLAW_MARKETING_VERSION = 2026.5.20
+OPENCLAW_IOS_VERSION = 2026.5.21
+OPENCLAW_MARKETING_VERSION = 2026.5.21
OPENCLAW_BUILD_VERSION = 1
#include? "../build/Version.xcconfig"
diff --git a/apps/ios/version.json b/apps/ios/version.json
index 4c1800593ceb..313ae672fdfc 100644
--- a/apps/ios/version.json
+++ b/apps/ios/version.json
@@ -1,3 +1,3 @@
{
- "version": "2026.5.20"
+ "version": "2026.5.21"
}
diff --git a/apps/macos/Sources/OpenClaw/Resources/Info.plist b/apps/macos/Sources/OpenClaw/Resources/Info.plist
index 4de4af2f1729..419b2d26d024 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.5.20
+ 2026.5.21
CFBundleVersion
- 2026052000
+ 2026052100
CFBundleIconFile
OpenClaw
CFBundleURLTypes
diff --git a/docs/.generated/config-baseline.sha256 b/docs/.generated/config-baseline.sha256
index d29586e367a5..092ed15c8a92 100644
--- a/docs/.generated/config-baseline.sha256
+++ b/docs/.generated/config-baseline.sha256
@@ -1,4 +1,4 @@
-352c794e55d080e2f3649e90cc982c3944e4d289c6e04bfe628ec7066624e444 config-baseline.json
+4f9946cf7d5afea985c8b9be185c7d8b420e038d915ce91be7476dd6541e0f08 config-baseline.json
35d17c60d2858a9cbc875807cdfc7f2fc8ba4745aa4e140a3cdf7ecf38b8a034 config-baseline.core.json
-6ca65e5c46c4e219c371ec660b1766f0a23092daff6bdeb64fc0574f001c7f81 config-baseline.channel.json
-d455f53b424976f99990330503692728121cbbeff04014fb50b5eed23aae59d4 config-baseline.plugin.json
+11839c7a1b858c66075156f0e203aa8367cd8321047684679a18e18b7c8fe1f7 config-baseline.channel.json
+a0a88df97080adf50c2c2bccd2ca076ad43e81b24dd25f3c3cace41f09a7c8f0 config-baseline.plugin.json
diff --git a/docs/plugins/plugin-inventory.md b/docs/plugins/plugin-inventory.md
index 5b06cd025419..b2867ae385b2 100644
--- a/docs/plugins/plugin-inventory.md
+++ b/docs/plugins/plugin-inventory.md
@@ -140,38 +140,38 @@ commands.
## Official external packages
-| Plugin | Description | Distribution | Surface |
-| ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- |
-| [acpx](/plugins/reference/acpx) | Embedded ACP runtime backend with plugin-owned session and transport management. | `@openclaw/acpx`
npm; ClawHub | skills |
-| [amazon-bedrock](/plugins/reference/amazon-bedrock) | Adds Amazon Bedrock model provider support to OpenClaw. | `@openclaw/amazon-bedrock-provider`
npm; ClawHub | providers: amazon-bedrock; contracts: memoryEmbeddingProviders |
-| [amazon-bedrock-mantle](/plugins/reference/amazon-bedrock-mantle) | Adds Amazon Bedrock Mantle model provider support to OpenClaw. | `@openclaw/amazon-bedrock-mantle-provider`
npm; ClawHub | providers: amazon-bedrock-mantle |
-| [anthropic-vertex](/plugins/reference/anthropic-vertex) | Adds Anthropic Vertex model provider support to OpenClaw. | `@openclaw/anthropic-vertex-provider`
npm; ClawHub | providers: anthropic-vertex |
-| [brave](/plugins/reference/brave) | Adds web search provider support. | `@openclaw/brave-plugin`
npm; ClawHub | contracts: webSearchProviders |
-| [codex](/plugins/reference/codex) | Codex app-server harness and Codex-managed GPT model catalog. | `@openclaw/codex`
npm; ClawHub | providers: codex; contracts: mediaUnderstandingProviders, migrationProviders |
-| [diagnostics-otel](/plugins/reference/diagnostics-otel) | OpenClaw diagnostics OpenTelemetry exporter. | `@openclaw/diagnostics-otel`
npm; ClawHub: `clawhub:@openclaw/diagnostics-otel` | plugin |
-| [diagnostics-prometheus](/plugins/reference/diagnostics-prometheus) | OpenClaw diagnostics Prometheus exporter. | `@openclaw/diagnostics-prometheus`
npm; ClawHub: `clawhub:@openclaw/diagnostics-prometheus` | plugin |
-| [diffs](/plugins/reference/diffs) | Read-only diff viewer and file renderer for agents. | `@openclaw/diffs`
npm; ClawHub | contracts: tools; skills |
-| [discord](/plugins/reference/discord) | Adds the Discord channel surface for sending and receiving OpenClaw messages. | `@openclaw/discord`
npm; ClawHub | channels: discord |
-| [feishu](/plugins/reference/feishu) | Adds the Feishu channel surface for sending and receiving OpenClaw messages. | `@openclaw/feishu`
npm; ClawHub | channels: feishu; contracts: tools; skills |
-| [google-meet](/plugins/reference/google-meet) | Join Google Meet calls through Chrome or Twilio transports. | `@openclaw/google-meet`
npm; ClawHub | contracts: tools |
-| [googlechat](/plugins/reference/googlechat) | Adds the Google Chat channel surface for sending and receiving OpenClaw messages. | `@openclaw/googlechat`
npm; ClawHub | channels: googlechat |
-| [line](/plugins/reference/line) | Adds the LINE channel surface for sending and receiving OpenClaw messages. | `@openclaw/line`
npm; ClawHub | channels: line |
-| [lobster](/plugins/reference/lobster) | Typed workflow tool with resumable approvals. | `@openclaw/lobster`
npm; ClawHub | contracts: tools |
-| [matrix](/plugins/reference/matrix) | Adds the Matrix channel surface for sending and receiving OpenClaw messages. | `@openclaw/matrix`
ClawHub: `clawhub:@openclaw/matrix`; npm | channels: matrix |
-| [memory-lancedb](/plugins/reference/memory-lancedb) | Adds agent-callable tools. | `@openclaw/memory-lancedb`
npm; ClawHub | contracts: tools |
-| [msteams](/plugins/reference/msteams) | Adds the Microsoft Teams channel surface for sending and receiving OpenClaw messages. | `@openclaw/msteams`
npm; ClawHub | channels: msteams |
-| [nextcloud-talk](/plugins/reference/nextcloud-talk) | Adds the Nextcloud Talk channel surface for sending and receiving OpenClaw messages. | `@openclaw/nextcloud-talk`
npm; ClawHub | channels: nextcloud-talk |
-| [nostr](/plugins/reference/nostr) | Adds the Nostr channel surface for sending and receiving OpenClaw messages. | `@openclaw/nostr`
npm; ClawHub | channels: nostr |
-| [openshell](/plugins/reference/openshell) | Sandbox backend powered by OpenShell with mirrored local workspaces and SSH-based command execution. | `@openclaw/openshell-sandbox`
npm; ClawHub | plugin |
-| [qqbot](/plugins/reference/qqbot) | Adds the QQ Bot channel surface for sending and receiving OpenClaw messages. | `@openclaw/qqbot`
npm; ClawHub | channels: qqbot; contracts: tools; skills |
-| [slack](/plugins/reference/slack) | Adds the Slack channel surface for sending and receiving OpenClaw messages. | `@openclaw/slack`
npm; ClawHub | channels: slack |
-| [synology-chat](/plugins/reference/synology-chat) | Adds the Synology Chat channel surface for sending and receiving OpenClaw messages. | `@openclaw/synology-chat`
npm; ClawHub | channels: synology-chat |
-| [tlon](/plugins/reference/tlon) | Adds the Tlon channel surface for sending and receiving OpenClaw messages. | `@openclaw/tlon`
npm; ClawHub | channels: tlon; contracts: tools; skills |
-| [twitch](/plugins/reference/twitch) | Adds the Twitch channel surface for sending and receiving OpenClaw messages. | `@openclaw/twitch`
npm; ClawHub | channels: twitch |
-| [voice-call](/plugins/reference/voice-call) | Adds agent-callable tools. | `@openclaw/voice-call`
npm; ClawHub | contracts: tools |
-| [whatsapp](/plugins/reference/whatsapp) | Adds the WhatsApp channel surface for sending and receiving OpenClaw messages. | `@openclaw/whatsapp`
ClawHub: `clawhub:@openclaw/whatsapp`; npm | channels: whatsapp |
-| [zalo](/plugins/reference/zalo) | Adds the Zalo channel surface for sending and receiving OpenClaw messages. | `@openclaw/zalo`
npm; ClawHub | channels: zalo |
-| [zalouser](/plugins/reference/zalouser) | Adds the Zalo Personal channel surface for sending and receiving OpenClaw messages. | `@openclaw/zalouser`
npm; ClawHub | channels: zalouser; contracts: tools |
+| Plugin | Description | Distribution | Surface |
+| ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- |
+| [acpx](/plugins/reference/acpx) | Embedded ACP runtime backend with plugin-owned session and transport management. | `@openclaw/acpx`
npm; ClawHub | skills |
+| [amazon-bedrock](/plugins/reference/amazon-bedrock) | Adds Amazon Bedrock model provider support to OpenClaw. | `@openclaw/amazon-bedrock-provider`
npm; ClawHub | providers: amazon-bedrock; contracts: memoryEmbeddingProviders |
+| [amazon-bedrock-mantle](/plugins/reference/amazon-bedrock-mantle) | Adds Amazon Bedrock Mantle model provider support to OpenClaw. | `@openclaw/amazon-bedrock-mantle-provider`
npm; ClawHub | providers: amazon-bedrock-mantle |
+| [anthropic-vertex](/plugins/reference/anthropic-vertex) | Adds Anthropic Vertex model provider support to OpenClaw. | `@openclaw/anthropic-vertex-provider`
npm; ClawHub | providers: anthropic-vertex |
+| [brave](/plugins/reference/brave) | Adds web search provider support. | `@openclaw/brave-plugin`
npm; ClawHub | contracts: webSearchProviders |
+| [codex](/plugins/reference/codex) | Codex app-server harness and Codex-managed GPT model catalog. | `@openclaw/codex`
npm; ClawHub | providers: codex; contracts: mediaUnderstandingProviders, migrationProviders |
+| [diagnostics-otel](/plugins/reference/diagnostics-otel) | OpenClaw diagnostics OpenTelemetry exporter. | `@openclaw/diagnostics-otel`
npm; ClawHub: `clawhub:@openclaw/diagnostics-otel` | plugin |
+| [diagnostics-prometheus](/plugins/reference/diagnostics-prometheus) | OpenClaw diagnostics Prometheus exporter. | `@openclaw/diagnostics-prometheus`
npm; ClawHub: `clawhub:@openclaw/diagnostics-prometheus` | plugin |
+| [diffs](/plugins/reference/diffs) | Read-only diff viewer and file renderer for agents. | `@openclaw/diffs`
npm; ClawHub | contracts: tools; skills |
+| [discord](/plugins/reference/discord) | Adds the Discord channel surface for sending and receiving OpenClaw messages. | `@openclaw/discord`
npm; ClawHub | channels: discord |
+| [feishu](/plugins/reference/feishu) | Adds the Feishu channel surface for sending and receiving OpenClaw messages. | `@openclaw/feishu`
npm; ClawHub | channels: feishu; contracts: tools; skills |
+| [google-meet](/plugins/reference/google-meet) | Join Google Meet calls through Chrome or Twilio transports. | `@openclaw/google-meet`
npm; ClawHub | contracts: tools |
+| [googlechat](/plugins/reference/googlechat) | Adds the Google Chat channel surface for sending and receiving OpenClaw messages. | `@openclaw/googlechat`
npm; ClawHub | channels: googlechat |
+| [line](/plugins/reference/line) | Adds the LINE channel surface for sending and receiving OpenClaw messages. | `@openclaw/line`
npm; ClawHub | channels: line |
+| [lobster](/plugins/reference/lobster) | Typed workflow tool with resumable approvals. | `@openclaw/lobster`
npm; ClawHub | contracts: tools |
+| [matrix](/plugins/reference/matrix) | Adds the Matrix channel surface for sending and receiving OpenClaw messages. | `@openclaw/matrix`
ClawHub: `clawhub:@openclaw/matrix`; npm | channels: matrix |
+| [memory-lancedb](/plugins/reference/memory-lancedb) | Adds agent-callable tools. | `@openclaw/memory-lancedb`
npm; ClawHub | contracts: tools |
+| [msteams](/plugins/reference/msteams) | Adds the Microsoft Teams channel surface for sending and receiving OpenClaw messages. | `@openclaw/msteams`
npm; ClawHub | channels: msteams |
+| [nextcloud-talk](/plugins/reference/nextcloud-talk) | Adds the Nextcloud Talk channel surface for sending and receiving OpenClaw messages. | `@openclaw/nextcloud-talk`
npm; ClawHub | channels: nextcloud-talk |
+| [nostr](/plugins/reference/nostr) | Adds the Nostr channel surface for sending and receiving OpenClaw messages. | `@openclaw/nostr`
npm; ClawHub | channels: nostr |
+| [openshell](/plugins/reference/openshell) | Sandbox backend powered by the NVIDIA OpenShell CLI with mirrored local workspaces and SSH-based command execution. | `@openclaw/openshell-sandbox`
npm; ClawHub | plugin |
+| [qqbot](/plugins/reference/qqbot) | Adds the QQ Bot channel surface for sending and receiving OpenClaw messages. | `@openclaw/qqbot`
npm; ClawHub | channels: qqbot; contracts: tools; skills |
+| [slack](/plugins/reference/slack) | Adds the Slack channel surface for sending and receiving OpenClaw messages. | `@openclaw/slack`
npm; ClawHub | channels: slack |
+| [synology-chat](/plugins/reference/synology-chat) | Adds the Synology Chat channel surface for sending and receiving OpenClaw messages. | `@openclaw/synology-chat`
npm; ClawHub | channels: synology-chat |
+| [tlon](/plugins/reference/tlon) | Adds the Tlon channel surface for sending and receiving OpenClaw messages. | `@openclaw/tlon`
npm; ClawHub | channels: tlon; contracts: tools; skills |
+| [twitch](/plugins/reference/twitch) | Adds the Twitch channel surface for sending and receiving OpenClaw messages. | `@openclaw/twitch`
npm; ClawHub | channels: twitch |
+| [voice-call](/plugins/reference/voice-call) | Adds agent-callable tools. | `@openclaw/voice-call`
npm; ClawHub | contracts: tools |
+| [whatsapp](/plugins/reference/whatsapp) | Adds the WhatsApp channel surface for sending and receiving OpenClaw messages. | `@openclaw/whatsapp`
ClawHub: `clawhub:@openclaw/whatsapp`; npm | channels: whatsapp |
+| [zalo](/plugins/reference/zalo) | Adds the Zalo channel surface for sending and receiving OpenClaw messages. | `@openclaw/zalo`
npm; ClawHub | channels: zalo |
+| [zalouser](/plugins/reference/zalouser) | Adds the Zalo Personal channel surface for sending and receiving OpenClaw messages. | `@openclaw/zalouser`
npm; ClawHub | channels: zalouser; contracts: tools |
## Source checkout only
diff --git a/docs/plugins/reference.md b/docs/plugins/reference.md
index b7f238796d6f..250d681e2dc6 100644
--- a/docs/plugins/reference.md
+++ b/docs/plugins/reference.md
@@ -94,7 +94,7 @@ pnpm plugins:inventory:gen
| [opencode](/plugins/reference/opencode) | Adds OpenCode model provider support to OpenClaw. | `@openclaw/opencode-provider`
included in OpenClaw | providers: opencode; contracts: mediaUnderstandingProviders |
| [opencode-go](/plugins/reference/opencode-go) | Adds OpenCode Go model provider support to OpenClaw. | `@openclaw/opencode-go-provider`
included in OpenClaw | providers: opencode-go; contracts: mediaUnderstandingProviders |
| [openrouter](/plugins/reference/openrouter) | Adds OpenRouter model provider support to OpenClaw. | `@openclaw/openrouter-provider`
included in OpenClaw | providers: openrouter; contracts: imageGenerationProviders, mediaUnderstandingProviders, musicGenerationProviders, speechProviders, videoGenerationProviders |
-| [openshell](/plugins/reference/openshell) | Sandbox backend powered by OpenShell with mirrored local workspaces and SSH-based command execution. | `@openclaw/openshell-sandbox`
npm; ClawHub | plugin |
+| [openshell](/plugins/reference/openshell) | Sandbox backend powered by the NVIDIA OpenShell CLI with mirrored local workspaces and SSH-based command execution. | `@openclaw/openshell-sandbox`
npm; ClawHub | plugin |
| [perplexity](/plugins/reference/perplexity) | Adds web search provider support. | `@openclaw/perplexity-plugin`
included in OpenClaw | contracts: webSearchProviders |
| [policy](/plugins/reference/policy) | Adds policy-backed doctor checks for workspace conformance. | `@openclaw/policy`
included in OpenClaw | plugin |
| [qa-channel](/plugins/reference/qa-channel) | Adds the QA Channel surface for sending and receiving OpenClaw messages. | `@openclaw/qa-channel`
source checkout only | channels: qa-channel |
diff --git a/docs/plugins/reference/openshell.md b/docs/plugins/reference/openshell.md
index 5f8ff3a947af..0ce589baf279 100644
--- a/docs/plugins/reference/openshell.md
+++ b/docs/plugins/reference/openshell.md
@@ -1,5 +1,5 @@
---
-summary: "Sandbox backend powered by OpenShell with mirrored local workspaces and SSH-based command execution."
+summary: "Sandbox backend powered by the NVIDIA OpenShell CLI with mirrored local workspaces and SSH-based command execution."
read_when:
- You are installing, configuring, or auditing the openshell plugin
title: "Openshell plugin"
@@ -7,7 +7,7 @@ title: "Openshell plugin"
# Openshell plugin
-Sandbox backend powered by OpenShell with mirrored local workspaces and SSH-based command execution.
+Sandbox backend powered by the NVIDIA OpenShell CLI with mirrored local workspaces and SSH-based command execution.
## Distribution
diff --git a/extensions/acpx/package.json b/extensions/acpx/package.json
index 7753e9326b21..ff7f48fa0957 100644
--- a/extensions/acpx/package.json
+++ b/extensions/acpx/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/acpx",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw ACP runtime backend",
"repository": {
"type": "git",
@@ -26,10 +26,10 @@
"minHostVersion": ">=2026.4.25"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20",
+ "openclawVersion": "2026.5.21",
"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 1b3f86b168cd..b2ee0332741a 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.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw admin HTTP RPC endpoint",
"type": "module",
diff --git a/extensions/alibaba/package.json b/extensions/alibaba/package.json
index 6d6403165694..758c8468742c 100644
--- a/extensions/alibaba/package.json
+++ b/extensions/alibaba/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/alibaba-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"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 fdb7b450cd21..282a06be69d1 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.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Amazon Bedrock Mantle (OpenAI-compatible) provider plugin",
"repository": {
"type": "git",
@@ -25,10 +25,10 @@
"minHostVersion": ">=2026.5.12-beta.1"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20",
+ "openclawVersion": "2026.5.21",
"bundledDist": false
},
"release": {
diff --git a/extensions/amazon-bedrock/package.json b/extensions/amazon-bedrock/package.json
index d95e0f23391f..e37cd699bb57 100644
--- a/extensions/amazon-bedrock/package.json
+++ b/extensions/amazon-bedrock/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/amazon-bedrock-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Amazon Bedrock provider plugin",
"repository": {
"type": "git",
@@ -27,10 +27,10 @@
"minHostVersion": ">=2026.5.12-beta.1"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20",
+ "openclawVersion": "2026.5.21",
"bundledDist": false
},
"release": {
diff --git a/extensions/anthropic-vertex/package.json b/extensions/anthropic-vertex/package.json
index f5b19697f260..3eff45b0f4a7 100644
--- a/extensions/anthropic-vertex/package.json
+++ b/extensions/anthropic-vertex/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/anthropic-vertex-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Anthropic Vertex provider plugin",
"repository": {
"type": "git",
@@ -25,10 +25,10 @@
"minHostVersion": ">=2026.5.12-beta.1"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20",
+ "openclawVersion": "2026.5.21",
"bundledDist": false
},
"release": {
diff --git a/extensions/anthropic/package.json b/extensions/anthropic/package.json
index 65c65e89e80c..fdcc87b20d65 100644
--- a/extensions/anthropic/package.json
+++ b/extensions/anthropic/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/anthropic-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Anthropic provider plugin",
"type": "module",
diff --git a/extensions/arcee/package.json b/extensions/arcee/package.json
index 793ac89331d7..127aa06b2f93 100644
--- a/extensions/arcee/package.json
+++ b/extensions/arcee/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/arcee-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Arcee provider plugin",
"type": "module",
diff --git a/extensions/azure-speech/package.json b/extensions/azure-speech/package.json
index 806b6c46a0ec..042fb64f0ef4 100644
--- a/extensions/azure-speech/package.json
+++ b/extensions/azure-speech/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/azure-speech",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Azure Speech plugin",
"type": "module",
diff --git a/extensions/bonjour/package.json b/extensions/bonjour/package.json
index efda49c5240c..4c43c9442645 100644
--- a/extensions/bonjour/package.json
+++ b/extensions/bonjour/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/bonjour",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Bonjour/mDNS gateway discovery",
"type": "module",
"dependencies": {
diff --git a/extensions/brave/package.json b/extensions/brave/package.json
index 27ada0a460a3..0d1deb8cde7c 100644
--- a/extensions/brave/package.json
+++ b/extensions/brave/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/brave-plugin",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Brave plugin",
"repository": {
"type": "git",
@@ -21,10 +21,10 @@
"allowInvalidConfigRecovery": true
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/browser/package.json b/extensions/browser/package.json
index 30fba021ba47..f9086f80aa8a 100644
--- a/extensions/browser/package.json
+++ b/extensions/browser/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/browser-plugin",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw browser tool plugin",
"type": "module",
diff --git a/extensions/byteplus/package.json b/extensions/byteplus/package.json
index 21a6d35e058a..a86a1b8b172d 100644
--- a/extensions/byteplus/package.json
+++ b/extensions/byteplus/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/byteplus-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw BytePlus provider plugin",
"type": "module",
diff --git a/extensions/canvas/package.json b/extensions/canvas/package.json
index 3f2c9138a5aa..cf2e4a9a00ef 100644
--- a/extensions/canvas/package.json
+++ b/extensions/canvas/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/canvas-plugin",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Canvas plugin",
"type": "module",
diff --git a/extensions/cerebras/package.json b/extensions/cerebras/package.json
index bf1bc1ebd407..1552e3f9845b 100644
--- a/extensions/cerebras/package.json
+++ b/extensions/cerebras/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/cerebras-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Cerebras provider plugin",
"type": "module",
diff --git a/extensions/chutes/package.json b/extensions/chutes/package.json
index b98d7dc5762a..bcefab025665 100644
--- a/extensions/chutes/package.json
+++ b/extensions/chutes/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/chutes-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Chutes.ai provider plugin",
"type": "module",
diff --git a/extensions/clickclack/package.json b/extensions/clickclack/package.json
index cd36fce6dba5..ff312de5a7d8 100644
--- a/extensions/clickclack/package.json
+++ b/extensions/clickclack/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/clickclack",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw ClickClack channel plugin",
"type": "module",
@@ -18,7 +18,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
diff --git a/extensions/cloudflare-ai-gateway/package.json b/extensions/cloudflare-ai-gateway/package.json
index 39953b78dc16..61e3ef1ee830 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.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Cloudflare AI Gateway provider plugin",
"type": "module",
diff --git a/extensions/codex/package.json b/extensions/codex/package.json
index c24b8e85b61a..f59bfb9eda18 100644
--- a/extensions/codex/package.json
+++ b/extensions/codex/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/codex",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Codex harness and model provider plugin",
"repository": {
"type": "git",
@@ -27,10 +27,10 @@
"minHostVersion": ">=2026.5.1-beta.1"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/comfy/package.json b/extensions/comfy/package.json
index 4c7a67853c15..03a9cf36e962 100644
--- a/extensions/comfy/package.json
+++ b/extensions/comfy/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/comfy-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw ComfyUI provider plugin",
"type": "module",
diff --git a/extensions/copilot-proxy/package.json b/extensions/copilot-proxy/package.json
index 88f6b00f1b68..8d1aed7448ab 100644
--- a/extensions/copilot-proxy/package.json
+++ b/extensions/copilot-proxy/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/copilot-proxy",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Copilot Proxy provider plugin",
"type": "module",
diff --git a/extensions/deepgram/package.json b/extensions/deepgram/package.json
index 1466b2c57df1..e5dc32a48431 100644
--- a/extensions/deepgram/package.json
+++ b/extensions/deepgram/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/deepgram-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Deepgram media-understanding provider",
"type": "module",
diff --git a/extensions/deepinfra/package.json b/extensions/deepinfra/package.json
index f51265724b9e..241d70dabcb1 100644
--- a/extensions/deepinfra/package.json
+++ b/extensions/deepinfra/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/deepinfra-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw DeepInfra provider plugin",
"type": "module",
diff --git a/extensions/deepseek/package.json b/extensions/deepseek/package.json
index b9b39e0ebbc6..eb6945a828eb 100644
--- a/extensions/deepseek/package.json
+++ b/extensions/deepseek/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/deepseek-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw DeepSeek provider plugin",
"type": "module",
diff --git a/extensions/diagnostics-otel/package.json b/extensions/diagnostics-otel/package.json
index d20e2583be2c..678c31a527ab 100644
--- a/extensions/diagnostics-otel/package.json
+++ b/extensions/diagnostics-otel/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/diagnostics-otel",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw diagnostics OpenTelemetry exporter",
"repository": {
"type": "git",
@@ -34,10 +34,10 @@
"minHostVersion": ">=2026.4.25"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/diagnostics-prometheus/package.json b/extensions/diagnostics-prometheus/package.json
index 8d2805715c4a..a9e8089c2947 100644
--- a/extensions/diagnostics-prometheus/package.json
+++ b/extensions/diagnostics-prometheus/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/diagnostics-prometheus",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw diagnostics Prometheus exporter",
"repository": {
"type": "git",
@@ -21,10 +21,10 @@
"minHostVersion": ">=2026.4.25"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/diffs/package.json b/extensions/diffs/package.json
index 1f0c1fb2c936..875e89c07daa 100644
--- a/extensions/diffs/package.json
+++ b/extensions/diffs/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/diffs",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw diff viewer plugin",
"repository": {
"type": "git",
@@ -31,10 +31,10 @@
"minHostVersion": ">=2026.4.30"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20",
+ "openclawVersion": "2026.5.21",
"staticAssets": [
{
"source": "./assets/viewer-runtime.js",
diff --git a/extensions/discord/package.json b/extensions/discord/package.json
index a1fee59f6196..81b1fc2cb00b 100644
--- a/extensions/discord/package.json
+++ b/extensions/discord/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/discord",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Discord channel plugin",
"repository": {
"type": "git",
@@ -21,7 +21,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -65,10 +65,10 @@
"allowInvalidConfigRecovery": true
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/document-extract/package.json b/extensions/document-extract/package.json
index 563e52aff239..3dbb384d22e9 100644
--- a/extensions/document-extract/package.json
+++ b/extensions/document-extract/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/document-extract-plugin",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw local document extraction plugin",
"type": "module",
diff --git a/extensions/duckduckgo/package.json b/extensions/duckduckgo/package.json
index 8a5303bd3ecb..03b1002495b1 100644
--- a/extensions/duckduckgo/package.json
+++ b/extensions/duckduckgo/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/duckduckgo-plugin",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw DuckDuckGo plugin",
"type": "module",
diff --git a/extensions/elevenlabs/package.json b/extensions/elevenlabs/package.json
index d6f9aa97f011..1f3a1a261088 100644
--- a/extensions/elevenlabs/package.json
+++ b/extensions/elevenlabs/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/elevenlabs-speech",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw ElevenLabs speech plugin",
"type": "module",
diff --git a/extensions/exa/package.json b/extensions/exa/package.json
index a0ac306c4a40..1d69640fe837 100644
--- a/extensions/exa/package.json
+++ b/extensions/exa/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/exa-plugin",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Exa plugin",
"type": "module",
diff --git a/extensions/fal/package.json b/extensions/fal/package.json
index a1cc06ec2f95..80fff1857484 100644
--- a/extensions/fal/package.json
+++ b/extensions/fal/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/fal-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw fal provider plugin",
"type": "module",
diff --git a/extensions/feishu/package.json b/extensions/feishu/package.json
index d70a99aecc27..fef90e83d610 100644
--- a/extensions/feishu/package.json
+++ b/extensions/feishu/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/feishu",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Feishu/Lark channel plugin (community maintained by @m1heng)",
"repository": {
"type": "git",
@@ -17,7 +17,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -48,10 +48,10 @@
"minHostVersion": ">=2026.4.25"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/file-transfer/package.json b/extensions/file-transfer/package.json
index bcab9f2079e1..d46837fd4a2b 100644
--- a/extensions/file-transfer/package.json
+++ b/extensions/file-transfer/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/file-transfer",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"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 f84186af0b2f..6db94b51a3d7 100644
--- a/extensions/firecrawl/package.json
+++ b/extensions/firecrawl/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/firecrawl-plugin",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Firecrawl plugin",
"type": "module",
diff --git a/extensions/fireworks/package.json b/extensions/fireworks/package.json
index 1f73e07d1d8a..0cc9267aefe0 100644
--- a/extensions/fireworks/package.json
+++ b/extensions/fireworks/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/fireworks-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Fireworks provider plugin",
"type": "module",
diff --git a/extensions/github-copilot/package.json b/extensions/github-copilot/package.json
index 9bd9abd782c5..61eb601d1b8d 100644
--- a/extensions/github-copilot/package.json
+++ b/extensions/github-copilot/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/github-copilot-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw GitHub Copilot provider plugin",
"type": "module",
diff --git a/extensions/google-meet/package.json b/extensions/google-meet/package.json
index 285b0ff445df..037462179925 100644
--- a/extensions/google-meet/package.json
+++ b/extensions/google-meet/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/google-meet",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Google Meet participant plugin",
"repository": {
"type": "git",
@@ -16,7 +16,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -33,10 +33,10 @@
"minHostVersion": ">=2026.4.20"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/google/package.json b/extensions/google/package.json
index a9516792cef8..0c01fc19c178 100644
--- a/extensions/google/package.json
+++ b/extensions/google/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/google-plugin",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Google plugin",
"type": "module",
diff --git a/extensions/googlechat/package.json b/extensions/googlechat/package.json
index 75ab9f7effc8..c6e8a98cd272 100644
--- a/extensions/googlechat/package.json
+++ b/extensions/googlechat/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/googlechat",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Google Chat channel plugin",
"repository": {
"type": "git",
@@ -17,7 +17,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -75,10 +75,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/gradium/package.json b/extensions/gradium/package.json
index b945a4708f3c..803c80b62240 100644
--- a/extensions/gradium/package.json
+++ b/extensions/gradium/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/gradium-speech",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Gradium speech plugin",
"type": "module",
diff --git a/extensions/groq/package.json b/extensions/groq/package.json
index 0853761711f4..42a12f4e21c5 100644
--- a/extensions/groq/package.json
+++ b/extensions/groq/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/groq-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Groq media-understanding provider",
"type": "module",
diff --git a/extensions/huggingface/package.json b/extensions/huggingface/package.json
index 0556894c4dc6..f33517ed5429 100644
--- a/extensions/huggingface/package.json
+++ b/extensions/huggingface/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/huggingface-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"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 c012f55bd6c9..19562f213f29 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.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw image generation runtime package",
"type": "module",
diff --git a/extensions/imessage/package.json b/extensions/imessage/package.json
index b9214d41cdae..4585465bbee3 100644
--- a/extensions/imessage/package.json
+++ b/extensions/imessage/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/imessage",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw iMessage channel plugin using imsg on a signed-in Mac",
"type": "module",
@@ -40,10 +40,10 @@
]
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
}
},
"pluginInspector": {
diff --git a/extensions/inworld/package.json b/extensions/inworld/package.json
index 066d9f6eddb4..3b9a1282315b 100644
--- a/extensions/inworld/package.json
+++ b/extensions/inworld/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/inworld-speech",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Inworld speech plugin",
"type": "module",
diff --git a/extensions/irc/package.json b/extensions/irc/package.json
index 3fb9e7cdf7bc..e1c0f6a8956c 100644
--- a/extensions/irc/package.json
+++ b/extensions/irc/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/irc",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw IRC channel plugin",
"type": "module",
"devDependencies": {
diff --git a/extensions/kilocode/package.json b/extensions/kilocode/package.json
index cd4c6447f39b..2a6249ee8fec 100644
--- a/extensions/kilocode/package.json
+++ b/extensions/kilocode/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/kilocode-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Kilo Gateway provider plugin",
"type": "module",
diff --git a/extensions/kimi-coding/package.json b/extensions/kimi-coding/package.json
index 06a24bdb5ad8..cc4822ea2270 100644
--- a/extensions/kimi-coding/package.json
+++ b/extensions/kimi-coding/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/kimi-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Kimi provider plugin",
"type": "module",
diff --git a/extensions/line/package.json b/extensions/line/package.json
index 38fbb96d1337..76c781ec150c 100644
--- a/extensions/line/package.json
+++ b/extensions/line/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/line",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw LINE channel plugin",
"repository": {
"type": "git",
@@ -16,7 +16,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -46,10 +46,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/litellm/package.json b/extensions/litellm/package.json
index 5716df357b5b..65c4fddcfa1b 100644
--- a/extensions/litellm/package.json
+++ b/extensions/litellm/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/litellm-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw LiteLLM provider plugin",
"type": "module",
diff --git a/extensions/llm-task/openclaw.plugin.json b/extensions/llm-task/openclaw.plugin.json
index 922d6ae7c905..f25a16dee18c 100644
--- a/extensions/llm-task/openclaw.plugin.json
+++ b/extensions/llm-task/openclaw.plugin.json
@@ -33,7 +33,7 @@
},
"additionalProperties": false
},
- "version": "2026.5.20",
+ "version": "2026.5.21",
"contracts": {
"tools": [
"llm-task"
diff --git a/extensions/llm-task/package.json b/extensions/llm-task/package.json
index b16fdb3325b4..231f0cce9781 100644
--- a/extensions/llm-task/package.json
+++ b/extensions/llm-task/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/llm-task",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw JSON-only LLM task plugin",
"type": "module",
diff --git a/extensions/lmstudio/package.json b/extensions/lmstudio/package.json
index 84fd191c2fd6..27e938295de6 100644
--- a/extensions/lmstudio/package.json
+++ b/extensions/lmstudio/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/lmstudio-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw LM Studio provider plugin",
"type": "module",
diff --git a/extensions/lobster/package.json b/extensions/lobster/package.json
index fc89cbb8edcf..b7bc580ffc4a 100644
--- a/extensions/lobster/package.json
+++ b/extensions/lobster/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/lobster",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "Lobster workflow tool plugin (typed pipelines + resumable approvals)",
"repository": {
"type": "git",
@@ -25,10 +25,10 @@
"minHostVersion": ">=2026.4.25"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/matrix/CHANGELOG.md b/extensions/matrix/CHANGELOG.md
index 2cddbcc5d52c..f266ea8f6c68 100644
--- a/extensions/matrix/CHANGELOG.md
+++ b/extensions/matrix/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## 2026.5.21
+
+### Changes
+
+- Version alignment with core OpenClaw release numbers.
+
## 2026.5.20
### Changes
diff --git a/extensions/matrix/package.json b/extensions/matrix/package.json
index 0dd694bb9676..8ce368b976ce 100644
--- a/extensions/matrix/package.json
+++ b/extensions/matrix/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/matrix",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Matrix channel plugin",
"repository": {
"type": "git",
@@ -22,7 +22,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -87,10 +87,10 @@
"allowInvalidConfigRecovery": true
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/mattermost/package.json b/extensions/mattermost/package.json
index d8be0b4f9bbe..4ba6bdd62faf 100644
--- a/extensions/mattermost/package.json
+++ b/extensions/mattermost/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/mattermost",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Mattermost channel plugin",
"repository": {
"type": "git",
@@ -16,7 +16,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
diff --git a/extensions/media-understanding-core/package.json b/extensions/media-understanding-core/package.json
index 9aac7ce46c4f..9805a90118be 100644
--- a/extensions/media-understanding-core/package.json
+++ b/extensions/media-understanding-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/media-understanding-core",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw media understanding runtime package",
"type": "module",
diff --git a/extensions/memory-core/package.json b/extensions/memory-core/package.json
index d79984161d6b..c51951e448e7 100644
--- a/extensions/memory-core/package.json
+++ b/extensions/memory-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/memory-core",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw core memory search plugin",
"type": "module",
@@ -14,7 +14,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
diff --git a/extensions/memory-lancedb/package.json b/extensions/memory-lancedb/package.json
index 4a272bb85143..3de92736d020 100644
--- a/extensions/memory-lancedb/package.json
+++ b/extensions/memory-lancedb/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/memory-lancedb",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw LanceDB-backed long-term memory plugin with auto-recall/capture",
"repository": {
"type": "git",
@@ -26,10 +26,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/memory-wiki/package.json b/extensions/memory-wiki/package.json
index 59d4a65ba3c6..c0b0deee0745 100644
--- a/extensions/memory-wiki/package.json
+++ b/extensions/memory-wiki/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/memory-wiki",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw persistent wiki plugin",
"type": "module",
@@ -14,7 +14,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
diff --git a/extensions/microsoft-foundry/package.json b/extensions/microsoft-foundry/package.json
index b4ad815f3ad6..ce7740e75be2 100644
--- a/extensions/microsoft-foundry/package.json
+++ b/extensions/microsoft-foundry/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/microsoft-foundry",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Microsoft Foundry provider plugin",
"type": "module",
diff --git a/extensions/microsoft/package.json b/extensions/microsoft/package.json
index 3de0dbecbee1..2d4a12587a72 100644
--- a/extensions/microsoft/package.json
+++ b/extensions/microsoft/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/microsoft-speech",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Microsoft speech plugin",
"type": "module",
diff --git a/extensions/migrate-claude/package.json b/extensions/migrate-claude/package.json
index 7f8c848eecc7..f72970b04893 100644
--- a/extensions/migrate-claude/package.json
+++ b/extensions/migrate-claude/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/migrate-claude",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "Claude to OpenClaw migration provider",
"type": "module",
@@ -9,7 +9,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
diff --git a/extensions/migrate-hermes/package.json b/extensions/migrate-hermes/package.json
index d710eafd048b..84aeda59df2a 100644
--- a/extensions/migrate-hermes/package.json
+++ b/extensions/migrate-hermes/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/migrate-hermes",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "Hermes to OpenClaw migration provider",
"type": "module",
@@ -12,7 +12,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
diff --git a/extensions/minimax/package.json b/extensions/minimax/package.json
index 74461135f6bd..0befc225d71c 100644
--- a/extensions/minimax/package.json
+++ b/extensions/minimax/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/minimax-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw MiniMax provider and OAuth plugin",
"type": "module",
diff --git a/extensions/mistral/package.json b/extensions/mistral/package.json
index ca8216155cb2..03dbbaa38aa8 100644
--- a/extensions/mistral/package.json
+++ b/extensions/mistral/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/mistral-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Mistral provider plugin",
"type": "module",
diff --git a/extensions/moonshot/package.json b/extensions/moonshot/package.json
index f6d285af426c..3fe21aac121b 100644
--- a/extensions/moonshot/package.json
+++ b/extensions/moonshot/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/moonshot-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Moonshot provider plugin",
"type": "module",
diff --git a/extensions/msteams/package.json b/extensions/msteams/package.json
index 56d1d11bea1a..4ceb207b61a0 100644
--- a/extensions/msteams/package.json
+++ b/extensions/msteams/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/msteams",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Microsoft Teams channel plugin",
"repository": {
"type": "git",
@@ -22,7 +22,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -58,10 +58,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/nextcloud-talk/package.json b/extensions/nextcloud-talk/package.json
index 4b3237d52076..1370c7625bee 100644
--- a/extensions/nextcloud-talk/package.json
+++ b/extensions/nextcloud-talk/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/nextcloud-talk",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Nextcloud Talk channel plugin",
"repository": {
"type": "git",
@@ -12,7 +12,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -44,10 +44,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/nostr/package.json b/extensions/nostr/package.json
index 433194a3e8dc..9bbbcb2ac944 100644
--- a/extensions/nostr/package.json
+++ b/extensions/nostr/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/nostr",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Nostr channel plugin for NIP-04 encrypted DMs",
"repository": {
"type": "git",
@@ -16,7 +16,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -54,10 +54,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/nvidia/package.json b/extensions/nvidia/package.json
index 0758e8affab3..5385b16c7e71 100644
--- a/extensions/nvidia/package.json
+++ b/extensions/nvidia/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/nvidia-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw NVIDIA provider plugin",
"type": "module",
diff --git a/extensions/oc-path/package.json b/extensions/oc-path/package.json
index 0ef8b0e1433b..297852d10fa1 100644
--- a/extensions/oc-path/package.json
+++ b/extensions/oc-path/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/oc-path",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw oc:// workspace path plugin",
"type": "module",
@@ -15,7 +15,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
diff --git a/extensions/ollama/package.json b/extensions/ollama/package.json
index 0653a23b07e4..c8b6d4695b33 100644
--- a/extensions/ollama/package.json
+++ b/extensions/ollama/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/ollama-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Ollama provider plugin",
"type": "module",
diff --git a/extensions/open-prose/package.json b/extensions/open-prose/package.json
index be6ae496e729..d49480e16bea 100644
--- a/extensions/open-prose/package.json
+++ b/extensions/open-prose/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/open-prose",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenProse VM skill pack plugin (slash command + telemetry).",
"type": "module",
diff --git a/extensions/openai/package.json b/extensions/openai/package.json
index d29701651b52..4da9738ef7fc 100644
--- a/extensions/openai/package.json
+++ b/extensions/openai/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/openai-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw OpenAI provider plugins",
"type": "module",
diff --git a/extensions/opencode-go/package.json b/extensions/opencode-go/package.json
index 50970e3cf072..31bc323b2b32 100644
--- a/extensions/opencode-go/package.json
+++ b/extensions/opencode-go/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/opencode-go-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw OpenCode Go provider plugin",
"type": "module",
diff --git a/extensions/opencode/package.json b/extensions/opencode/package.json
index 1e7134ddd062..f59128d810ce 100644
--- a/extensions/opencode/package.json
+++ b/extensions/opencode/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/opencode-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw OpenCode Zen provider plugin",
"type": "module",
diff --git a/extensions/openrouter/package.json b/extensions/openrouter/package.json
index 679c5b951a42..70ad87ef6501 100644
--- a/extensions/openrouter/package.json
+++ b/extensions/openrouter/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/openrouter-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw OpenRouter provider plugin",
"type": "module",
diff --git a/extensions/openshell/package.json b/extensions/openshell/package.json
index 2cf3478090b6..dfcd42c5479e 100644
--- a/extensions/openshell/package.json
+++ b/extensions/openshell/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/openshell-sandbox",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw sandbox backend for the NVIDIA OpenShell CLI",
"repository": {
"type": "git",
@@ -23,10 +23,10 @@
"minHostVersion": ">=2026.5.12-beta.1"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20",
+ "openclawVersion": "2026.5.21",
"bundledDist": false
},
"release": {
diff --git a/extensions/perplexity/package.json b/extensions/perplexity/package.json
index 3ffe7a80a37d..72ec8837bb3a 100644
--- a/extensions/perplexity/package.json
+++ b/extensions/perplexity/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/perplexity-plugin",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Perplexity plugin",
"type": "module",
diff --git a/extensions/policy/package.json b/extensions/policy/package.json
index 1deceea2a53a..3dc5f583af4d 100644
--- a/extensions/policy/package.json
+++ b/extensions/policy/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/policy",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw policy doctor checks for workspace conformance",
"type": "module",
@@ -12,7 +12,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
diff --git a/extensions/qa-channel/package.json b/extensions/qa-channel/package.json
index 284fa303df14..26c13b765c76 100644
--- a/extensions/qa-channel/package.json
+++ b/extensions/qa-channel/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/qa-channel",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw QA synthetic channel plugin",
"type": "module",
@@ -19,7 +19,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
diff --git a/extensions/qa-lab/package.json b/extensions/qa-lab/package.json
index b3af21e5c7d1..f7b035f254b8 100644
--- a/extensions/qa-lab/package.json
+++ b/extensions/qa-lab/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/qa-lab",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw QA lab plugin with private debugger UI and scenario runner",
"type": "module",
@@ -19,7 +19,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -31,7 +31,7 @@
"./index.ts"
],
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
}
}
}
diff --git a/extensions/qa-lab/src/codex-plugin-lifecycle.test.ts b/extensions/qa-lab/src/codex-plugin-lifecycle.test.ts
index 63a9addbdac6..ab6bfdb0d48d 100644
--- a/extensions/qa-lab/src/codex-plugin-lifecycle.test.ts
+++ b/extensions/qa-lab/src/codex-plugin-lifecycle.test.ts
@@ -88,12 +88,12 @@ describe("codex plugin lifecycle: pinned-old codex plugin with new OpenClaw", ()
const result = evaluateCodexPluginLifecycle({
plugin: await snapshotCodexPluginState(agentDir),
auth: await snapshotAuthProfiles(agentDir),
- hostVersion: "2026.5.20",
+ hostVersion: "2026.5.21",
});
expect(result.status).toBe("blocked");
expect(result.remediation).toBe(
- 'Codex plugin version 2026.5.19 is older than OpenClaw 2026.5.20. Run "openclaw plugins update codex" or unpin codex, then rerun "openclaw doctor --fix".',
+ 'Codex plugin version 2026.5.19 is older than OpenClaw 2026.5.21. Run "openclaw plugins update codex" or unpin codex, then rerun "openclaw doctor --fix".',
);
});
});
@@ -101,18 +101,18 @@ describe("codex plugin lifecycle: pinned-old codex plugin with new OpenClaw", ()
describe("codex plugin lifecycle: pinned-new codex plugin with old OpenClaw", () => {
it("blocks with a precise host-upgrade remediation when the plugin is newer than the host", async () => {
const agentDir = await createAgentDir("qa-codex-plugin-new-");
- await seedCodexPluginAt("2026.5.21", agentDir);
+ await seedCodexPluginAt("2026.5.22", agentDir);
await seedAuthProfiles("oauth-only", agentDir);
const result = evaluateCodexPluginLifecycle({
plugin: await snapshotCodexPluginState(agentDir),
auth: await snapshotAuthProfiles(agentDir),
- hostVersion: "2026.5.20",
+ hostVersion: "2026.5.21",
});
expect(result.status).toBe("blocked");
expect(result.remediation).toBe(
- "Codex plugin version 2026.5.21 requires a newer OpenClaw host than 2026.5.20. Upgrade OpenClaw or install a codex plugin version pinned to 2026.5.20.",
+ "Codex plugin version 2026.5.22 requires a newer OpenClaw host than 2026.5.21. Upgrade OpenClaw or install a codex plugin version pinned to 2026.5.21.",
);
});
});
diff --git a/extensions/qa-lab/src/codex-plugin.fixture.ts b/extensions/qa-lab/src/codex-plugin.fixture.ts
index f6e072f6550f..8c78d9810ce6 100644
--- a/extensions/qa-lab/src/codex-plugin.fixture.ts
+++ b/extensions/qa-lab/src/codex-plugin.fixture.ts
@@ -2,7 +2,7 @@ import fs from "node:fs/promises";
import path from "node:path";
import { resolveCodexAuthProfile, type QaAuthProfileSnapshot } from "./auth-profile.fixture.js";
-export const CODEX_PLUGIN_CURRENT_VERSION = "2026.5.20";
+export const CODEX_PLUGIN_CURRENT_VERSION = "2026.5.21";
export const CODEX_PLUGIN_HEAD_VERSION = "head";
export const CODEX_PLUGIN_ID = "codex";
diff --git a/extensions/qa-lab/src/scenario-catalog.test.ts b/extensions/qa-lab/src/scenario-catalog.test.ts
index a7f06df1e2a3..2b16dcf9bcf2 100644
--- a/extensions/qa-lab/src/scenario-catalog.test.ts
+++ b/extensions/qa-lab/src/scenario-catalog.test.ts
@@ -231,7 +231,7 @@ describe("qa scenario catalog", () => {
}
expect(readQaScenarioExecutionConfig("codex-plugin-pinned-old")).toMatchObject({
pluginVersion: "2026.5.19",
- hostVersion: "2026.5.20",
+ hostVersion: "2026.5.21",
pluginRelation: "older",
});
expect(readQaScenarioExecutionConfig("auth-profile-doctor-migration-safety")).toMatchObject({
diff --git a/extensions/qa-matrix/package.json b/extensions/qa-matrix/package.json
index f01567817f20..3a8cdf29a9ec 100644
--- a/extensions/qa-matrix/package.json
+++ b/extensions/qa-matrix/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/qa-matrix",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Matrix QA runner plugin",
"type": "module",
@@ -13,7 +13,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -25,7 +25,7 @@
"./index.ts"
],
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
}
}
}
diff --git a/extensions/qianfan/package.json b/extensions/qianfan/package.json
index f4130e3032a4..3b4f0869d5a6 100644
--- a/extensions/qianfan/package.json
+++ b/extensions/qianfan/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/qianfan-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Qianfan provider plugin",
"type": "module",
diff --git a/extensions/qqbot/package.json b/extensions/qqbot/package.json
index 2cf31ecc4715..23cad78381fe 100644
--- a/extensions/qqbot/package.json
+++ b/extensions/qqbot/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/qqbot",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": false,
"description": "OpenClaw QQ Bot channel plugin",
"repository": {
@@ -21,7 +21,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -50,10 +50,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/qwen/package.json b/extensions/qwen/package.json
index 345678539880..155dbc317f1c 100644
--- a/extensions/qwen/package.json
+++ b/extensions/qwen/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/qwen-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Qwen Cloud provider plugin",
"type": "module",
diff --git a/extensions/runway/package.json b/extensions/runway/package.json
index 7b6348537ffe..85a1a3426d39 100644
--- a/extensions/runway/package.json
+++ b/extensions/runway/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/runway-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Runway video provider plugin",
"type": "module",
diff --git a/extensions/searxng/package.json b/extensions/searxng/package.json
index 77e5e131c8b3..d5ccc8d5f601 100644
--- a/extensions/searxng/package.json
+++ b/extensions/searxng/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/searxng-plugin",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw SearXNG plugin",
"type": "module",
diff --git a/extensions/senseaudio/package.json b/extensions/senseaudio/package.json
index 44844462e387..f4045bf82688 100644
--- a/extensions/senseaudio/package.json
+++ b/extensions/senseaudio/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/senseaudio-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw SenseAudio media-understanding provider",
"type": "module",
diff --git a/extensions/sglang/package.json b/extensions/sglang/package.json
index 7a366db1ceda..73a3edb68f1c 100644
--- a/extensions/sglang/package.json
+++ b/extensions/sglang/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/sglang-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw SGLang provider plugin",
"type": "module",
diff --git a/extensions/signal/package.json b/extensions/signal/package.json
index 154060157e2a..cbc68e1da54d 100644
--- a/extensions/signal/package.json
+++ b/extensions/signal/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/signal",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Signal channel plugin",
"type": "module",
diff --git a/extensions/skill-workshop/package.json b/extensions/skill-workshop/package.json
index de87b7de6011..906b9680a57e 100644
--- a/extensions/skill-workshop/package.json
+++ b/extensions/skill-workshop/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/skill-workshop",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw skill workshop plugin",
"type": "module",
diff --git a/extensions/slack/package.json b/extensions/slack/package.json
index a2986482ce27..fe0387ba137a 100644
--- a/extensions/slack/package.json
+++ b/extensions/slack/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/slack",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Slack channel plugin",
"repository": {
"type": "git",
@@ -20,7 +20,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -65,10 +65,10 @@
"allowInvalidConfigRecovery": true
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20",
+ "openclawVersion": "2026.5.21",
"bundledDist": false
},
"release": {
diff --git a/extensions/speech-core/package.json b/extensions/speech-core/package.json
index b7c04119f515..280fcab892e9 100644
--- a/extensions/speech-core/package.json
+++ b/extensions/speech-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/speech-core",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw speech runtime package",
"type": "module",
diff --git a/extensions/stepfun/package.json b/extensions/stepfun/package.json
index 3886cbd89f60..26ff37f7d187 100644
--- a/extensions/stepfun/package.json
+++ b/extensions/stepfun/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/stepfun-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw StepFun provider plugin",
"type": "module",
diff --git a/extensions/synology-chat/package.json b/extensions/synology-chat/package.json
index 12f8e6f4662b..f92e0cf42fc0 100644
--- a/extensions/synology-chat/package.json
+++ b/extensions/synology-chat/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/synology-chat",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "Synology Chat channel plugin for OpenClaw",
"repository": {
"type": "git",
@@ -30,10 +30,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/synthetic/package.json b/extensions/synthetic/package.json
index d904a0736b5a..c8b07e1f7386 100644
--- a/extensions/synthetic/package.json
+++ b/extensions/synthetic/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/synthetic-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Synthetic provider plugin",
"type": "module",
diff --git a/extensions/tavily/package.json b/extensions/tavily/package.json
index 2c1cb61296a7..9bff86177c96 100644
--- a/extensions/tavily/package.json
+++ b/extensions/tavily/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/tavily-plugin",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Tavily plugin",
"type": "module",
diff --git a/extensions/telegram/package.json b/extensions/telegram/package.json
index dfafe5beb977..ba17314dc9d9 100644
--- a/extensions/telegram/package.json
+++ b/extensions/telegram/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/telegram",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Telegram channel plugin",
"type": "module",
diff --git a/extensions/tencent/package.json b/extensions/tencent/package.json
index 7a3ef0a3e593..74d65c126f41 100644
--- a/extensions/tencent/package.json
+++ b/extensions/tencent/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/tencent-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Tencent Cloud provider plugin (TokenHub + Token Plan)",
"type": "module",
diff --git a/extensions/tlon/package.json b/extensions/tlon/package.json
index 981c2af6016d..51e7d57a525b 100644
--- a/extensions/tlon/package.json
+++ b/extensions/tlon/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/tlon",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Tlon/Urbit channel plugin",
"repository": {
"type": "git",
@@ -19,7 +19,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -73,10 +73,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/together/package.json b/extensions/together/package.json
index f9ed3624d020..a3a0af68d494 100644
--- a/extensions/together/package.json
+++ b/extensions/together/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/together-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Together provider plugin",
"type": "module",
diff --git a/extensions/tokenjuice/package.json b/extensions/tokenjuice/package.json
index b44f762a6da4..8a3b49c4130c 100644
--- a/extensions/tokenjuice/package.json
+++ b/extensions/tokenjuice/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/tokenjuice",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "Bundled tokenjuice exec output compaction plugin",
"type": "module",
"dependencies": {
diff --git a/extensions/tts-local-cli/package.json b/extensions/tts-local-cli/package.json
index 8e78d9a6fc0a..5de9087618ec 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.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw local CLI TTS plugin",
"type": "module",
diff --git a/extensions/twitch/package.json b/extensions/twitch/package.json
index ea6ca78fe6f7..c13180ae1201 100644
--- a/extensions/twitch/package.json
+++ b/extensions/twitch/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/twitch",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Twitch channel plugin",
"repository": {
"type": "git",
@@ -27,10 +27,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"channel": {
"id": "twitch",
diff --git a/extensions/venice/package.json b/extensions/venice/package.json
index a18e314bcce0..21abc8ec9790 100644
--- a/extensions/venice/package.json
+++ b/extensions/venice/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/venice-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Venice provider plugin",
"type": "module",
diff --git a/extensions/vercel-ai-gateway/package.json b/extensions/vercel-ai-gateway/package.json
index 41cf6777a6c7..51aa714f0e54 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.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Vercel AI Gateway provider plugin",
"type": "module",
diff --git a/extensions/video-generation-core/package.json b/extensions/video-generation-core/package.json
index 4c54477f8fa7..8378021f423f 100644
--- a/extensions/video-generation-core/package.json
+++ b/extensions/video-generation-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/video-generation-core",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw video generation runtime package",
"type": "module",
diff --git a/extensions/vllm/package.json b/extensions/vllm/package.json
index 97c704497839..13931334fa6f 100644
--- a/extensions/vllm/package.json
+++ b/extensions/vllm/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/vllm-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw vLLM provider plugin",
"type": "module",
diff --git a/extensions/voice-call/package.json b/extensions/voice-call/package.json
index 53d6f7f0c0c7..c16b2d389678 100644
--- a/extensions/voice-call/package.json
+++ b/extensions/voice-call/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/voice-call",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw voice-call plugin",
"repository": {
"type": "git",
@@ -18,7 +18,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -35,10 +35,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/volcengine/package.json b/extensions/volcengine/package.json
index d610b3ffffd8..d1e4a0f4ceb5 100644
--- a/extensions/volcengine/package.json
+++ b/extensions/volcengine/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/volcengine-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Volcengine provider plugin",
"type": "module",
diff --git a/extensions/voyage/package.json b/extensions/voyage/package.json
index a9162d24b4e5..9bbca07e5f9e 100644
--- a/extensions/voyage/package.json
+++ b/extensions/voyage/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/voyage-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Voyage embedding provider plugin",
"type": "module",
diff --git a/extensions/vydra/package.json b/extensions/vydra/package.json
index 4a46a2acd68e..e94adc0f1c5a 100644
--- a/extensions/vydra/package.json
+++ b/extensions/vydra/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/vydra-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Vydra media provider plugin",
"type": "module",
diff --git a/extensions/web-readability/package.json b/extensions/web-readability/package.json
index e1e08d2ed575..9520f88a3835 100644
--- a/extensions/web-readability/package.json
+++ b/extensions/web-readability/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/web-readability-plugin",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw local Readability web extraction plugin",
"type": "module",
diff --git a/extensions/webhooks/package.json b/extensions/webhooks/package.json
index 6735739467d7..6613c805269f 100644
--- a/extensions/webhooks/package.json
+++ b/extensions/webhooks/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/webhooks",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw webhook bridge plugin",
"type": "module",
diff --git a/extensions/whatsapp/package.json b/extensions/whatsapp/package.json
index a0f3166f7d31..c7d7abe2bf6b 100644
--- a/extensions/whatsapp/package.json
+++ b/extensions/whatsapp/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/whatsapp",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw WhatsApp channel plugin",
"repository": {
"type": "git",
@@ -19,7 +19,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -62,10 +62,10 @@
"minHostVersion": ">=2026.4.25"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/xai/package.json b/extensions/xai/package.json
index d02ef0a7addd..9ad6d804b824 100644
--- a/extensions/xai/package.json
+++ b/extensions/xai/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/xai-plugin",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw xAI plugin",
"type": "module",
diff --git a/extensions/xiaomi/package.json b/extensions/xiaomi/package.json
index 10ccdf6e5ae9..efb750af54da 100644
--- a/extensions/xiaomi/package.json
+++ b/extensions/xiaomi/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/xiaomi-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Xiaomi provider plugin",
"type": "module",
diff --git a/extensions/zai/package.json b/extensions/zai/package.json
index 8c4aaed721fa..b61e04f4f8c7 100644
--- a/extensions/zai/package.json
+++ b/extensions/zai/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/zai-provider",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"private": true,
"description": "OpenClaw Z.AI provider plugin",
"type": "module",
diff --git a/extensions/zalo/package.json b/extensions/zalo/package.json
index 673f6bf635f7..4a07b65b7aa0 100644
--- a/extensions/zalo/package.json
+++ b/extensions/zalo/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/zalo",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Zalo channel plugin",
"repository": {
"type": "git",
@@ -12,7 +12,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -43,10 +43,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/extensions/zalouser/package.json b/extensions/zalouser/package.json
index 61c77e137c23..e2f48f17ed1f 100644
--- a/extensions/zalouser/package.json
+++ b/extensions/zalouser/package.json
@@ -1,6 +1,6 @@
{
"name": "@openclaw/zalouser",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "OpenClaw Zalo Personal Account plugin via native zca-js integration",
"repository": {
"type": "git",
@@ -17,7 +17,7 @@
"openclaw": "workspace:*"
},
"peerDependencies": {
- "openclaw": ">=2026.5.20"
+ "openclaw": ">=2026.5.21"
},
"peerDependenciesMeta": {
"openclaw": {
@@ -54,10 +54,10 @@
"minHostVersion": ">=2026.4.10"
},
"compat": {
- "pluginApi": ">=2026.5.20"
+ "pluginApi": ">=2026.5.21"
},
"build": {
- "openclawVersion": "2026.5.20"
+ "openclawVersion": "2026.5.21"
},
"release": {
"publishToClawHub": true,
diff --git a/package.json b/package.json
index ee9d37e91337..e9a97dfab6aa 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "openclaw",
- "version": "2026.5.20",
+ "version": "2026.5.21",
"description": "Multi-channel AI gateway with extensible messaging integrations",
"keywords": [],
"homepage": "https://github.com/openclaw/openclaw#readme",
diff --git a/qa/scenarios/runtime/codex-plugin-pinned-new.md b/qa/scenarios/runtime/codex-plugin-pinned-new.md
index 706b87b87b8d..e1a18d118229 100644
--- a/qa/scenarios/runtime/codex-plugin-pinned-new.md
+++ b/qa/scenarios/runtime/codex-plugin-pinned-new.md
@@ -23,10 +23,10 @@ execution:
kind: flow
summary: Exercise the lifecycle fixture for pinned-new Codex plugin mismatch.
config:
- pluginVersion: 2026.5.21
- hostVersion: 2026.5.20
+ pluginVersion: 2026.5.22
+ hostVersion: 2026.5.21
pluginRelation: newer
- remediation: Codex plugin version 2026.5.21 requires a newer OpenClaw host than 2026.5.20. Upgrade OpenClaw or install a codex plugin version pinned to 2026.5.20.
+ remediation: Codex plugin version 2026.5.22 requires a newer OpenClaw host than 2026.5.21. Upgrade OpenClaw or install a codex plugin version pinned to 2026.5.21.
```
```yaml qa-flow
diff --git a/qa/scenarios/runtime/codex-plugin-pinned-old.md b/qa/scenarios/runtime/codex-plugin-pinned-old.md
index 7c814e61a72a..c063e94325e3 100644
--- a/qa/scenarios/runtime/codex-plugin-pinned-old.md
+++ b/qa/scenarios/runtime/codex-plugin-pinned-old.md
@@ -24,9 +24,9 @@ execution:
summary: Exercise the lifecycle fixture for pinned-old Codex plugin mismatch.
config:
pluginVersion: 2026.5.19
- hostVersion: 2026.5.20
+ hostVersion: 2026.5.21
pluginRelation: older
- remediation: Codex plugin version 2026.5.19 is older than OpenClaw 2026.5.20. Run "openclaw plugins update codex" or unpin codex, then rerun "openclaw doctor --fix".
+ remediation: Codex plugin version 2026.5.19 is older than OpenClaw 2026.5.21. Run "openclaw plugins update codex" or unpin codex, then rerun "openclaw doctor --fix".
```
```yaml qa-flow