chore(release): prepare 2026.4.11-beta.1

This commit is contained in:
Peter Steinberger
2026-04-11 15:49:42 +01:00
parent 37bde69c17
commit 788c37a6c2
18 changed files with 102 additions and 13 deletions

View File

@@ -10,6 +10,11 @@ export const BUILD_ALL_STEPS = [
{ label: "canvas:a2ui:bundle", kind: "pnpm", pnpmArgs: ["canvas:a2ui:bundle"] },
{ label: "tsdown", kind: "node", args: ["scripts/tsdown-build.mjs"] },
{ label: "runtime-postbuild", kind: "node", args: ["scripts/runtime-postbuild.mjs"] },
{
label: "write-npm-update-compat-sidecars",
kind: "node",
args: ["scripts/write-npm-update-compat-sidecars.mjs"],
},
{ label: "build-stamp", kind: "node", args: ["scripts/build-stamp.mjs"] },
{
label: "build:plugin-sdk:dts",

View File

@@ -111,13 +111,21 @@ run_update_smoke() {
echo "==> Run openclaw update from host-served tgz"
local update_status
local update_stderr_file
local update_stderr
update_stderr_file="$(mktemp)"
set +e
UPDATE_JSON="$(
npm_config_omit=optional NPM_CONFIG_OMIT=optional openclaw update --tag "$UPDATE_TAG_URL" --yes --json 2>&1
npm_config_omit=optional NPM_CONFIG_OMIT=optional openclaw update --tag "$UPDATE_TAG_URL" --yes --json 2>"$update_stderr_file"
)"
update_status=$?
set -e
update_stderr="$(cat "$update_stderr_file")"
rm -f "$update_stderr_file"
printf "%s\n" "$UPDATE_JSON"
if [[ -n "$update_stderr" ]]; then
printf "%s\n" "$update_stderr" >&2
fi
if [[ "$update_status" -ne 0 ]]; then
echo "ERROR: openclaw update failed with exit code $update_status" >&2
return "$update_status"

View File

@@ -8,6 +8,7 @@ import {
import { shouldBuildBundledCluster } from "./optional-bundled-clusters.mjs";
const TOP_LEVEL_PUBLIC_SURFACE_EXTENSIONS = new Set([".ts", ".js", ".mts", ".cts", ".mjs", ".cjs"]);
const NON_PACKAGED_BUNDLED_PLUGIN_DIRS = new Set(["qa-channel", "qa-lab"]);
const toPosixPath = (value) => value.replaceAll("\\", "/");
function readBundledPluginPackageJson(packageJsonPath) {
@@ -145,7 +146,9 @@ export function listBundledPluginBuildEntries(params = {}) {
}
export function listBundledPluginPackArtifacts(params = {}) {
const entries = collectBundledPluginBuildEntries(params);
const entries = collectBundledPluginBuildEntries(params).filter(
({ id }) => !NON_PACKAGED_BUNDLED_PLUGIN_DIRS.has(id),
);
const artifacts = new Set();
for (const { id, hasManifest, hasPackageJson, sourceEntries } of entries) {

View File

@@ -0,0 +1,16 @@
export const NPM_UPDATE_COMPAT_SIDECARS = [
{
path: "dist/extensions/qa-channel/runtime-api.js",
content:
"// Compatibility stub for older OpenClaw updaters. The QA channel implementation is not packaged.\nexport {};\n",
},
{
path: "dist/extensions/qa-lab/runtime-api.js",
content:
"// Compatibility stub for older OpenClaw updaters. The QA lab implementation is not packaged.\nexport {};\n",
},
];
export const NPM_UPDATE_COMPAT_SIDECAR_PATHS = new Set(
NPM_UPDATE_COMPAT_SIDECARS.map((entry) => entry.path),
);

View File

@@ -9,6 +9,7 @@ import {
resolveNpmDistTagMirrorAuth as resolveNpmDistTagMirrorAuthBase,
parseReleaseVersion as parseReleaseVersionBase,
} from "./lib/npm-publish-plan.mjs";
import { NPM_UPDATE_COMPAT_SIDECAR_PATHS } from "./lib/npm-update-compat-sidecars.mjs";
type PackageJson = {
name?: string;
@@ -463,6 +464,9 @@ function collectPackedTarballErrors(): string[] {
export function collectForbiddenPackedPathErrors(paths: Iterable<string>): string[] {
const errors: string[] = [];
for (const packedPath of paths) {
if (NPM_UPDATE_COMPAT_SIDECAR_PATHS.has(packedPath)) {
continue;
}
const matchedRule = FORBIDDEN_PACKED_PATH_RULES.find((rule) =>
packedPath.startsWith(rule.prefix),
);

View File

@@ -0,0 +1,10 @@
#!/usr/bin/env node
import fs from "node:fs";
import path from "node:path";
import { NPM_UPDATE_COMPAT_SIDECARS } from "./lib/npm-update-compat-sidecars.mjs";
for (const entry of NPM_UPDATE_COMPAT_SIDECARS) {
fs.mkdirSync(path.dirname(entry.path), { recursive: true });
fs.writeFileSync(entry.path, entry.content, "utf8");
}