diff --git a/apps/android/app/build.gradle.kts b/apps/android/app/build.gradle.kts index 9abed8634b..0f53b029b0 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 = 2026033000 - versionName = "2026.3.30" + versionCode = 2026033100 + versionName = "2026.3.31" 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/Config/Version.xcconfig b/apps/ios/Config/Version.xcconfig index df154c92ec..410e16849c 100644 --- a/apps/ios/Config/Version.xcconfig +++ b/apps/ios/Config/Version.xcconfig @@ -1,8 +1,8 @@ // Shared iOS version defaults. // Generated overrides live in build/Version.xcconfig (git-ignored). -OPENCLAW_GATEWAY_VERSION = 2026.3.30 -OPENCLAW_MARKETING_VERSION = 2026.3.30 -OPENCLAW_BUILD_VERSION = 2026033000 +OPENCLAW_GATEWAY_VERSION = 2026.3.31 +OPENCLAW_MARKETING_VERSION = 2026.3.31 +OPENCLAW_BUILD_VERSION = 2026033100 #include? "../build/Version.xcconfig" diff --git a/apps/ios/README.md b/apps/ios/README.md index 10d5feddc6..0691fcb8ec 100644 --- a/apps/ios/README.md +++ b/apps/ios/README.md @@ -65,9 +65,9 @@ Release behavior: - Beta release also switches the app to `OpenClawPushTransport=relay`, `OpenClawPushDistribution=official`, and `OpenClawPushAPNsEnvironment=production`. - The beta flow does not modify `apps/ios/.local-signing.xcconfig` or `apps/ios/LocalSigning.xcconfig`. - Root `package.json.version` is the only version source for iOS. -- A root version like `2026.3.30-beta.1` becomes: - - `CFBundleShortVersionString = 2026.3.30` - - `CFBundleVersion = next TestFlight build number for 2026.3.30` +- A root version like `2026.3.31-beta.1` becomes: + - `CFBundleShortVersionString = 2026.3.31` + - `CFBundleVersion = next TestFlight build number for 2026.3.31` Required env for beta builds: diff --git a/apps/macos/Sources/OpenClaw/Resources/Info.plist b/apps/macos/Sources/OpenClaw/Resources/Info.plist index 03ff640f6e..f22e84d3ff 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.3.30 + 2026.3.31 CFBundleVersion - 2026033000 + 2026033100 CFBundleIconFile OpenClaw CFBundleURLTypes diff --git a/docs/install/development-channels.md b/docs/install/development-channels.md index bbd6e6be2f..73ae108bf7 100644 --- a/docs/install/development-channels.md +++ b/docs/install/development-channels.md @@ -48,7 +48,7 @@ update **without** changing your persisted channel: ```bash # Install a specific version -openclaw update --tag 2026.3.30-beta.1 +openclaw update --tag 2026.3.31-beta.1 # Install from the beta dist-tag (one-off, does not persist) openclaw update --tag beta @@ -57,7 +57,7 @@ openclaw update --tag beta openclaw update --tag main # Install a specific npm package spec -openclaw update --tag openclaw@2026.3.30-beta.1 +openclaw update --tag openclaw@2026.3.31-beta.1 ``` Notes: @@ -75,7 +75,7 @@ Preview what `openclaw update` would do without making changes: ```bash openclaw update --dry-run openclaw update --channel beta --dry-run -openclaw update --tag 2026.3.30-beta.1 --dry-run +openclaw update --tag 2026.3.31-beta.1 --dry-run openclaw update --dry-run --json ``` diff --git a/extensions/acpx/package.json b/extensions/acpx/package.json index bccaeb0e87..0294f16166 100644 --- a/extensions/acpx/package.json +++ b/extensions/acpx/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/acpx", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw ACP runtime backend via acpx", "type": "module", "dependencies": { diff --git a/extensions/amazon-bedrock/package.json b/extensions/amazon-bedrock/package.json index b3194b1144..e96526be42 100644 --- a/extensions/amazon-bedrock/package.json +++ b/extensions/amazon-bedrock/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/amazon-bedrock-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Amazon Bedrock provider plugin", "type": "module", diff --git a/extensions/anthropic-vertex/package.json b/extensions/anthropic-vertex/package.json index d2d52ceee9..3ec24f83d7 100644 --- a/extensions/anthropic-vertex/package.json +++ b/extensions/anthropic-vertex/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/anthropic-vertex-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Anthropic Vertex provider plugin", "type": "module", diff --git a/extensions/anthropic/package.json b/extensions/anthropic/package.json index a61e4875bc..89cf2f485b 100644 --- a/extensions/anthropic/package.json +++ b/extensions/anthropic/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/anthropic-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Anthropic provider plugin", "type": "module", diff --git a/extensions/bluebubbles/package.json b/extensions/bluebubbles/package.json index bb3ad37e23..3b626df55a 100644 --- a/extensions/bluebubbles/package.json +++ b/extensions/bluebubbles/package.json @@ -1,13 +1,13 @@ { "name": "@openclaw/bluebubbles", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw BlueBubbles channel plugin", "type": "module", "devDependencies": { "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { @@ -39,7 +39,7 @@ "install": { "npmSpec": "@openclaw/bluebubbles", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" }, "release": { "publishToNpm": true diff --git a/extensions/brave/package.json b/extensions/brave/package.json index f90e986a1f..c5a774ee80 100644 --- a/extensions/brave/package.json +++ b/extensions/brave/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/brave-plugin", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Brave plugin", "type": "module", diff --git a/extensions/browser/package.json b/extensions/browser/package.json index 6066e6d8d2..f4e1fd5a42 100644 --- a/extensions/browser/package.json +++ b/extensions/browser/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/browser-plugin", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw browser tool plugin", "type": "module", diff --git a/extensions/byteplus/package.json b/extensions/byteplus/package.json index 7b6565d92b..f250b3541b 100644 --- a/extensions/byteplus/package.json +++ b/extensions/byteplus/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/byteplus-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw BytePlus provider plugin", "type": "module", diff --git a/extensions/chutes/package.json b/extensions/chutes/package.json index 0b6b997aba..5d3822688e 100644 --- a/extensions/chutes/package.json +++ b/extensions/chutes/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/chutes-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Chutes.ai provider plugin", "type": "module", diff --git a/extensions/cloudflare-ai-gateway/package.json b/extensions/cloudflare-ai-gateway/package.json index 15b31cea2a..5c983552ab 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.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Cloudflare AI Gateway provider plugin", "type": "module", diff --git a/extensions/copilot-proxy/package.json b/extensions/copilot-proxy/package.json index 87b1233e75..8db2f173e3 100644 --- a/extensions/copilot-proxy/package.json +++ b/extensions/copilot-proxy/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/copilot-proxy", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Copilot Proxy provider plugin", "type": "module", diff --git a/extensions/deepgram/package.json b/extensions/deepgram/package.json index d9444e33ee..f1274eed09 100644 --- a/extensions/deepgram/package.json +++ b/extensions/deepgram/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/deepgram-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Deepgram media-understanding provider", "type": "module", diff --git a/extensions/deepseek/package.json b/extensions/deepseek/package.json index 81d17e92e1..59b03b02f9 100644 --- a/extensions/deepseek/package.json +++ b/extensions/deepseek/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/deepseek-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw DeepSeek provider plugin", "type": "module", diff --git a/extensions/diagnostics-otel/package.json b/extensions/diagnostics-otel/package.json index 7667f93da4..a42aecb480 100644 --- a/extensions/diagnostics-otel/package.json +++ b/extensions/diagnostics-otel/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/diagnostics-otel", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw diagnostics OpenTelemetry exporter", "type": "module", "dependencies": { diff --git a/extensions/diffs/package.json b/extensions/diffs/package.json index 2a11ca4935..c431d8fdee 100644 --- a/extensions/diffs/package.json +++ b/extensions/diffs/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/diffs", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw diff viewer plugin", "type": "module", diff --git a/extensions/discord/package.json b/extensions/discord/package.json index a0e40e2538..b2e326d132 100644 --- a/extensions/discord/package.json +++ b/extensions/discord/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/discord", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw Discord channel plugin", "type": "module", "dependencies": { @@ -14,7 +14,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { @@ -40,7 +40,7 @@ "install": { "npmSpec": "@openclaw/discord", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" }, "bundle": { "stageRuntimeDependencies": true diff --git a/extensions/duckduckgo/package.json b/extensions/duckduckgo/package.json index 210d1f55ec..5d09e2d41f 100644 --- a/extensions/duckduckgo/package.json +++ b/extensions/duckduckgo/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/duckduckgo-plugin", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw DuckDuckGo plugin", "type": "module", diff --git a/extensions/elevenlabs/package.json b/extensions/elevenlabs/package.json index 5878de8a74..3d18069d7c 100644 --- a/extensions/elevenlabs/package.json +++ b/extensions/elevenlabs/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/elevenlabs-speech", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw ElevenLabs speech plugin", "type": "module", diff --git a/extensions/exa/package.json b/extensions/exa/package.json index a8c089127f..11caee5ecb 100644 --- a/extensions/exa/package.json +++ b/extensions/exa/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/exa-plugin", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Exa plugin", "type": "module", diff --git a/extensions/fal/package.json b/extensions/fal/package.json index bc9835de10..deec24015f 100644 --- a/extensions/fal/package.json +++ b/extensions/fal/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/fal-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw fal provider plugin", "type": "module", diff --git a/extensions/feishu/package.json b/extensions/feishu/package.json index 7e88284526..54dcfc31a4 100644 --- a/extensions/feishu/package.json +++ b/extensions/feishu/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/feishu", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw Feishu/Lark channel plugin (community maintained by @m1heng)", "type": "module", "dependencies": { @@ -12,7 +12,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { @@ -40,7 +40,7 @@ "install": { "npmSpec": "@openclaw/feishu", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" }, "bundle": { "stageRuntimeDependencies": true diff --git a/extensions/firecrawl/package.json b/extensions/firecrawl/package.json index ae9e69a779..19a1ae057a 100644 --- a/extensions/firecrawl/package.json +++ b/extensions/firecrawl/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/firecrawl-plugin", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Firecrawl plugin", "type": "module", diff --git a/extensions/github-copilot/package.json b/extensions/github-copilot/package.json index 33eb214d11..2dc9cb2685 100644 --- a/extensions/github-copilot/package.json +++ b/extensions/github-copilot/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/github-copilot-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw GitHub Copilot provider plugin", "type": "module", diff --git a/extensions/google/package.json b/extensions/google/package.json index 66e12bc213..aed8845485 100644 --- a/extensions/google/package.json +++ b/extensions/google/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/google-plugin", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Google plugin", "type": "module", diff --git a/extensions/googlechat/package.json b/extensions/googlechat/package.json index 061f3de772..d43ccba9b9 100644 --- a/extensions/googlechat/package.json +++ b/extensions/googlechat/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/googlechat", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Google Chat channel plugin", "type": "module", @@ -11,7 +11,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { @@ -42,7 +42,7 @@ "install": { "npmSpec": "@openclaw/googlechat", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" } } } diff --git a/extensions/groq/package.json b/extensions/groq/package.json index f53250f1e4..fc558a0476 100644 --- a/extensions/groq/package.json +++ b/extensions/groq/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/groq-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Groq media-understanding provider", "type": "module", diff --git a/extensions/huggingface/package.json b/extensions/huggingface/package.json index 86fbb95896..a7a10f164d 100644 --- a/extensions/huggingface/package.json +++ b/extensions/huggingface/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/huggingface-provider", - "version": "2026.3.30", + "version": "2026.3.31", "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 6838a7930c..e5db5840aa 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.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw image generation runtime package", "type": "module" diff --git a/extensions/imessage/package.json b/extensions/imessage/package.json index d6c4b20bca..d3b62d8f55 100644 --- a/extensions/imessage/package.json +++ b/extensions/imessage/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/imessage", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw iMessage channel plugin", "type": "module", diff --git a/extensions/irc/package.json b/extensions/irc/package.json index 23d84d380e..59667de6f2 100644 --- a/extensions/irc/package.json +++ b/extensions/irc/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/irc", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw IRC channel plugin", "type": "module", "openclaw": { @@ -8,7 +8,7 @@ "./index.ts" ], "install": { - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" }, "setupEntry": "./setup-entry.ts", "channel": { diff --git a/extensions/kilocode/package.json b/extensions/kilocode/package.json index 68e4951f24..cea5b7c4a1 100644 --- a/extensions/kilocode/package.json +++ b/extensions/kilocode/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/kilocode-provider", - "version": "2026.3.30", + "version": "2026.3.31", "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 6ff4651a16..c30f7ebcc9 100644 --- a/extensions/kimi-coding/package.json +++ b/extensions/kimi-coding/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/kimi-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Kimi provider plugin", "type": "module", diff --git a/extensions/line/package.json b/extensions/line/package.json index 5defbd3e0f..081bf2aab8 100644 --- a/extensions/line/package.json +++ b/extensions/line/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/line", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw LINE channel plugin", "type": "module", @@ -8,7 +8,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { @@ -35,7 +35,7 @@ "install": { "npmSpec": "@openclaw/line", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" } } } diff --git a/extensions/litellm/package.json b/extensions/litellm/package.json index e60ffeb93f..51e6c9c01b 100644 --- a/extensions/litellm/package.json +++ b/extensions/litellm/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/litellm-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw LiteLLM provider plugin", "type": "module", diff --git a/extensions/llm-task/package.json b/extensions/llm-task/package.json index a8b23f5d0f..2771df52c0 100644 --- a/extensions/llm-task/package.json +++ b/extensions/llm-task/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/llm-task", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw JSON-only LLM task plugin", "type": "module", diff --git a/extensions/lobster/package.json b/extensions/lobster/package.json index 18d33f7d3c..bd2760c75f 100644 --- a/extensions/lobster/package.json +++ b/extensions/lobster/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/lobster", - "version": "2026.3.30", + "version": "2026.3.31", "description": "Lobster workflow tool plugin (typed pipelines + resumable approvals)", "type": "module", "dependencies": { diff --git a/extensions/matrix/package.json b/extensions/matrix/package.json index eb6353c3a8..9d1fb07327 100644 --- a/extensions/matrix/package.json +++ b/extensions/matrix/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/matrix", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw Matrix channel plugin", "type": "module", "dependencies": { @@ -15,7 +15,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { @@ -40,7 +40,7 @@ "install": { "npmSpec": "@openclaw/matrix", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" }, "releaseChecks": { "rootDependencyMirrorAllowlist": [ diff --git a/extensions/mattermost/package.json b/extensions/mattermost/package.json index decd02e44d..dcc0d37116 100644 --- a/extensions/mattermost/package.json +++ b/extensions/mattermost/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/mattermost", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw Mattermost channel plugin", "type": "module", "dependencies": { @@ -11,7 +11,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { @@ -35,7 +35,7 @@ "install": { "npmSpec": "@openclaw/mattermost", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" } } } diff --git a/extensions/media-understanding-core/package.json b/extensions/media-understanding-core/package.json index cf2a6cde64..fef77208df 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.3.30", + "version": "2026.3.31", "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 0a8d2931b8..da1a8eb991 100644 --- a/extensions/memory-core/package.json +++ b/extensions/memory-core/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/memory-core", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw core memory search plugin", "type": "module", @@ -8,7 +8,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { diff --git a/extensions/memory-lancedb/package.json b/extensions/memory-lancedb/package.json index f24741ae32..2ab78e0b8e 100644 --- a/extensions/memory-lancedb/package.json +++ b/extensions/memory-lancedb/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/memory-lancedb", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw LanceDB-backed long-term memory plugin with auto-recall/capture", "type": "module", "dependencies": { @@ -15,7 +15,7 @@ "install": { "npmSpec": "@openclaw/memory-lancedb", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" }, "release": { "publishToNpm": true diff --git a/extensions/microsoft-foundry/package.json b/extensions/microsoft-foundry/package.json index b3f7511fe3..a0d192b1b2 100644 --- a/extensions/microsoft-foundry/package.json +++ b/extensions/microsoft-foundry/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/microsoft-foundry", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Microsoft Foundry provider plugin", "type": "module", diff --git a/extensions/microsoft/package.json b/extensions/microsoft/package.json index 7a6b4d95b7..74f4aa8cc6 100644 --- a/extensions/microsoft/package.json +++ b/extensions/microsoft/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/microsoft-speech", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Microsoft speech plugin", "type": "module", diff --git a/extensions/minimax/package.json b/extensions/minimax/package.json index 4ca990ed47..f9d96d502c 100644 --- a/extensions/minimax/package.json +++ b/extensions/minimax/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/minimax-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw MiniMax provider and OAuth plugin", "type": "module", diff --git a/extensions/mistral/package.json b/extensions/mistral/package.json index 838436e9ae..22e4a71315 100644 --- a/extensions/mistral/package.json +++ b/extensions/mistral/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/mistral-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Mistral provider plugin", "type": "module", diff --git a/extensions/modelstudio/package.json b/extensions/modelstudio/package.json index 85219ded15..0e5fdcea99 100644 --- a/extensions/modelstudio/package.json +++ b/extensions/modelstudio/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/modelstudio-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Model Studio provider plugin", "type": "module", diff --git a/extensions/moonshot/package.json b/extensions/moonshot/package.json index 616567b980..9495011527 100644 --- a/extensions/moonshot/package.json +++ b/extensions/moonshot/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/moonshot-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Moonshot provider plugin", "type": "module", diff --git a/extensions/msteams/package.json b/extensions/msteams/package.json index beac1d106d..e6ea8d0559 100644 --- a/extensions/msteams/package.json +++ b/extensions/msteams/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/msteams", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw Microsoft Teams channel plugin", "type": "module", "dependencies": { @@ -12,7 +12,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { @@ -39,7 +39,7 @@ "install": { "npmSpec": "@openclaw/msteams", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" }, "release": { "publishToNpm": true diff --git a/extensions/nextcloud-talk/package.json b/extensions/nextcloud-talk/package.json index a2441778a8..9cb0e9bccc 100644 --- a/extensions/nextcloud-talk/package.json +++ b/extensions/nextcloud-talk/package.json @@ -1,13 +1,13 @@ { "name": "@openclaw/nextcloud-talk", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw Nextcloud Talk channel plugin", "type": "module", "devDependencies": { "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { @@ -36,7 +36,7 @@ "install": { "npmSpec": "@openclaw/nextcloud-talk", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" }, "release": { "publishToNpm": true diff --git a/extensions/nostr/package.json b/extensions/nostr/package.json index 14996d37cc..b324fadf8c 100644 --- a/extensions/nostr/package.json +++ b/extensions/nostr/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/nostr", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw Nostr channel plugin for NIP-04 encrypted DMs", "type": "module", "dependencies": { @@ -10,7 +10,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { @@ -35,7 +35,7 @@ "install": { "npmSpec": "@openclaw/nostr", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" }, "release": { "publishToNpm": true diff --git a/extensions/nvidia/package.json b/extensions/nvidia/package.json index ec7e1de342..cc3d012869 100644 --- a/extensions/nvidia/package.json +++ b/extensions/nvidia/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/nvidia-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw NVIDIA provider plugin", "type": "module", diff --git a/extensions/ollama/package.json b/extensions/ollama/package.json index 971d2a47b2..abf8dcb54b 100644 --- a/extensions/ollama/package.json +++ b/extensions/ollama/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/ollama-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Ollama provider plugin", "type": "module", diff --git a/extensions/open-prose/package.json b/extensions/open-prose/package.json index c4ab4114ad..2079ee28e4 100644 --- a/extensions/open-prose/package.json +++ b/extensions/open-prose/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/open-prose", - "version": "2026.3.30", + "version": "2026.3.31", "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 3e550910ed..70dade81ca 100644 --- a/extensions/openai/package.json +++ b/extensions/openai/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/openai-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw OpenAI provider plugins", "type": "module", diff --git a/extensions/opencode-go/package.json b/extensions/opencode-go/package.json index 1dea81567f..8540dc961b 100644 --- a/extensions/opencode-go/package.json +++ b/extensions/opencode-go/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/opencode-go-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw OpenCode Go provider plugin", "type": "module", diff --git a/extensions/opencode/package.json b/extensions/opencode/package.json index 559d27c0ed..726ac3ba79 100644 --- a/extensions/opencode/package.json +++ b/extensions/opencode/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/opencode-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw OpenCode Zen provider plugin", "type": "module", diff --git a/extensions/openrouter/package.json b/extensions/openrouter/package.json index 1c0b8c809b..4ee0f999d1 100644 --- a/extensions/openrouter/package.json +++ b/extensions/openrouter/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/openrouter-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw OpenRouter provider plugin", "type": "module", diff --git a/extensions/openshell/package.json b/extensions/openshell/package.json index b101f3ab7e..244b85ac9b 100644 --- a/extensions/openshell/package.json +++ b/extensions/openshell/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/openshell-sandbox", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw OpenShell sandbox backend", "type": "module", diff --git a/extensions/perplexity/package.json b/extensions/perplexity/package.json index 47495c42b5..452c5cc0f6 100644 --- a/extensions/perplexity/package.json +++ b/extensions/perplexity/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/perplexity-plugin", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Perplexity plugin", "type": "module", diff --git a/extensions/qianfan/package.json b/extensions/qianfan/package.json index 3d8b2fe108..c2b5459485 100644 --- a/extensions/qianfan/package.json +++ b/extensions/qianfan/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/qianfan-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Qianfan provider plugin", "type": "module", diff --git a/extensions/sglang/package.json b/extensions/sglang/package.json index ed9df041d4..a674cc55d3 100644 --- a/extensions/sglang/package.json +++ b/extensions/sglang/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/sglang-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw SGLang provider plugin", "type": "module", diff --git a/extensions/signal/package.json b/extensions/signal/package.json index d2c2a876c7..835173938f 100644 --- a/extensions/signal/package.json +++ b/extensions/signal/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/signal", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Signal channel plugin", "type": "module", diff --git a/extensions/slack/package.json b/extensions/slack/package.json index 4c4f2ceaf6..f085fc1fd3 100644 --- a/extensions/slack/package.json +++ b/extensions/slack/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/slack", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Slack channel plugin", "type": "module", diff --git a/extensions/speech-core/package.json b/extensions/speech-core/package.json index eb4a954c02..d7665ad99a 100644 --- a/extensions/speech-core/package.json +++ b/extensions/speech-core/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/speech-core", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw speech runtime package", "type": "module" diff --git a/extensions/synology-chat/package.json b/extensions/synology-chat/package.json index bd9e96c2d3..09eed6aef4 100644 --- a/extensions/synology-chat/package.json +++ b/extensions/synology-chat/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/synology-chat", - "version": "2026.3.30", + "version": "2026.3.31", "description": "Synology Chat channel plugin for OpenClaw", "type": "module", "openclaw": { @@ -20,7 +20,7 @@ "install": { "npmSpec": "@openclaw/synology-chat", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" } } } diff --git a/extensions/synthetic/package.json b/extensions/synthetic/package.json index 4bcda5bd4e..e73a229dd5 100644 --- a/extensions/synthetic/package.json +++ b/extensions/synthetic/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/synthetic-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Synthetic provider plugin", "type": "module", diff --git a/extensions/tasks/package.json b/extensions/tasks/package.json index 36565bfde3..ad0bf7152d 100644 --- a/extensions/tasks/package.json +++ b/extensions/tasks/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/tasks", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw durable tasks plugin", "type": "module", diff --git a/extensions/tavily/package.json b/extensions/tavily/package.json index 782b08ba86..dcf60e5867 100644 --- a/extensions/tavily/package.json +++ b/extensions/tavily/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/tavily-plugin", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Tavily plugin", "type": "module", diff --git a/extensions/telegram/package.json b/extensions/telegram/package.json index d7ae7afc51..3e6db8fd12 100644 --- a/extensions/telegram/package.json +++ b/extensions/telegram/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/telegram", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Telegram channel plugin", "type": "module", diff --git a/extensions/tlon/package.json b/extensions/tlon/package.json index 5940f09aea..c01d70f698 100644 --- a/extensions/tlon/package.json +++ b/extensions/tlon/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/tlon", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw Tlon/Urbit channel plugin", "type": "module", "dependencies": { @@ -13,7 +13,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { @@ -38,7 +38,7 @@ "install": { "npmSpec": "@openclaw/tlon", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" } } } diff --git a/extensions/together/package.json b/extensions/together/package.json index d0910c4d00..0543c1bf43 100644 --- a/extensions/together/package.json +++ b/extensions/together/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/together-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Together provider plugin", "type": "module", diff --git a/extensions/twitch/package.json b/extensions/twitch/package.json index 51fd80cc0f..f4e585e2cc 100644 --- a/extensions/twitch/package.json +++ b/extensions/twitch/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/twitch", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw Twitch channel plugin", "type": "module", "dependencies": { @@ -13,7 +13,7 @@ "./index.ts" ], "install": { - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" }, "channel": { "id": "twitch", diff --git a/extensions/venice/package.json b/extensions/venice/package.json index a9ac00e764..42e9cd717a 100644 --- a/extensions/venice/package.json +++ b/extensions/venice/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/venice-provider", - "version": "2026.3.30", + "version": "2026.3.31", "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 39c540167d..19f874cfa2 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.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Vercel AI Gateway provider plugin", "type": "module", diff --git a/extensions/vllm/package.json b/extensions/vllm/package.json index eefe8d85ad..229d45c8f3 100644 --- a/extensions/vllm/package.json +++ b/extensions/vllm/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/vllm-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw vLLM provider plugin", "type": "module", diff --git a/extensions/voice-call/package.json b/extensions/voice-call/package.json index dda4641680..b4c26b5d14 100644 --- a/extensions/voice-call/package.json +++ b/extensions/voice-call/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/voice-call", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw voice-call plugin", "type": "module", "dependencies": { @@ -12,7 +12,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { @@ -24,7 +24,7 @@ "./index.ts" ], "install": { - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" }, "release": { "publishToNpm": true diff --git a/extensions/volcengine/package.json b/extensions/volcengine/package.json index 5e36c9864a..958336d308 100644 --- a/extensions/volcengine/package.json +++ b/extensions/volcengine/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/volcengine-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Volcengine provider plugin", "type": "module", diff --git a/extensions/whatsapp/package.json b/extensions/whatsapp/package.json index f86cdfbca4..2a2dbdc803 100644 --- a/extensions/whatsapp/package.json +++ b/extensions/whatsapp/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/whatsapp", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw WhatsApp channel plugin", "type": "module", "dependencies": { @@ -11,7 +11,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { @@ -36,7 +36,7 @@ "install": { "npmSpec": "@openclaw/whatsapp", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" }, "release": { "publishToNpm": true diff --git a/extensions/xai/package.json b/extensions/xai/package.json index 2c9b4d1397..54b1abc3bf 100644 --- a/extensions/xai/package.json +++ b/extensions/xai/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/xai-plugin", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw xAI plugin", "type": "module", diff --git a/extensions/xiaomi/package.json b/extensions/xiaomi/package.json index dd11452dd3..34c5b987e9 100644 --- a/extensions/xiaomi/package.json +++ b/extensions/xiaomi/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/xiaomi-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Xiaomi provider plugin", "type": "module", diff --git a/extensions/zai/package.json b/extensions/zai/package.json index 6ebcdbc14c..dec654d1ce 100644 --- a/extensions/zai/package.json +++ b/extensions/zai/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/zai-provider", - "version": "2026.3.30", + "version": "2026.3.31", "private": true, "description": "OpenClaw Z.AI provider plugin", "type": "module", diff --git a/extensions/zalo/package.json b/extensions/zalo/package.json index 8fffc0344f..91c8a304f7 100644 --- a/extensions/zalo/package.json +++ b/extensions/zalo/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/zalo", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw Zalo channel plugin", "type": "module", "dependencies": { @@ -10,7 +10,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { @@ -38,7 +38,7 @@ "install": { "npmSpec": "@openclaw/zalo", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" }, "release": { "publishToNpm": true diff --git a/extensions/zalouser/package.json b/extensions/zalouser/package.json index e7ea5b132b..c82855a401 100644 --- a/extensions/zalouser/package.json +++ b/extensions/zalouser/package.json @@ -1,6 +1,6 @@ { "name": "@openclaw/zalouser", - "version": "2026.3.30", + "version": "2026.3.31", "description": "OpenClaw Zalo Personal Account plugin via native zca-js integration", "type": "module", "dependencies": { @@ -11,7 +11,7 @@ "openclaw": "workspace:*" }, "peerDependencies": { - "openclaw": ">=2026.3.30" + "openclaw": ">=2026.3.31" }, "peerDependenciesMeta": { "openclaw": { @@ -39,7 +39,7 @@ "install": { "npmSpec": "@openclaw/zalouser", "defaultChoice": "npm", - "minHostVersion": ">=2026.3.30" + "minHostVersion": ">=2026.3.31" }, "release": { "publishToNpm": true diff --git a/package.json b/package.json index 6dc9d436b3..e7c52d4d88 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openclaw", - "version": "2026.3.30", + "version": "2026.3.31", "description": "Multi-channel AI gateway with extensible messaging integrations", "keywords": [], "homepage": "https://github.com/openclaw/openclaw#readme", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index af684f8a4f..089ab4017b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -599,6 +599,8 @@ importers: extensions/synthetic: {} + extensions/tasks: {} + extensions/tavily: {} extensions/telegram: @@ -728,6 +730,8 @@ importers: packages/plugin-package-contract: {} + packages/tasks-host-sdk: {} + ui: dependencies: '@create-markdown/preview': diff --git a/src/config/schema.base.generated.ts b/src/config/schema.base.generated.ts index 266a90ea5a..546ca4d47a 100644 --- a/src/config/schema.base.generated.ts +++ b/src/config/schema.base.generated.ts @@ -15683,6 +15683,6 @@ export const GENERATED_BASE_CONFIG_SCHEMA = { tags: ["advanced", "url-secret"], }, }, - version: "2026.3.30", + version: "2026.3.31", generatedAt: "2026-03-22T21:17:33.302Z", } as const satisfies BaseConfigSchemaResponse; diff --git a/test/openclaw-npm-release-check.test.ts b/test/openclaw-npm-release-check.test.ts index 4b3eddc699..33a520d5b5 100644 --- a/test/openclaw-npm-release-check.test.ts +++ b/test/openclaw-npm-release-check.test.ts @@ -100,7 +100,7 @@ describe("resolveNpmPublishPlan", () => { }); it("does not mirror beta when beta already points at a newer prerelease", () => { - expect(resolveNpmPublishPlan("2026.3.29", "2026.3.30-beta.1")).toEqual({ + expect(resolveNpmPublishPlan("2026.3.29", "2026.3.31-beta.1")).toEqual({ channel: "stable", publishTag: "latest", mirrorDistTags: [], @@ -122,7 +122,7 @@ describe("compareReleaseVersions", () => { }); it("treats a newer beta day as newer than an older stable day", () => { - expect(compareReleaseVersions("2026.3.30-beta.1", "2026.3.29")).toBe(1); + expect(compareReleaseVersions("2026.3.31-beta.1", "2026.3.29")).toBe(1); }); it("orders stable correction releases after the base stable release", () => {