From 0049a7a81de69d06dfd17645150e73121ec11028 Mon Sep 17 00:00:00 2001 From: Vincent Koc <25068+vincentkoc@users.noreply.github.com> Date: Fri, 10 Jul 2026 17:14:54 -0700 Subject: [PATCH] fix(release): align plugin shrinkwrap scope --- scripts/release-preflight.mjs | 2 +- test/scripts/release-preflight.test.ts | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/scripts/release-preflight.mjs b/scripts/release-preflight.mjs index e7c1177c21b8..914daf5d2d0f 100644 --- a/scripts/release-preflight.mjs +++ b/scripts/release-preflight.mjs @@ -27,7 +27,7 @@ const releaseTasks = [ { id: "npm-shrinkwraps", name: "npm shrinkwraps", - scopes: ["dependencies", "version"], + scopes: ["dependencies", "plugins", "version"], fix: nodeCommand("scripts/generate-npm-shrinkwrap.mjs", "--changed"), fixAfter: ["plugin-versions", "plugin-sdk-exports"], check: nodeCommand("scripts/generate-npm-shrinkwrap.mjs", "--all", "--check"), diff --git a/test/scripts/release-preflight.test.ts b/test/scripts/release-preflight.test.ts index a8ff2f5367ae..e9c22cb9dc93 100644 --- a/test/scripts/release-preflight.test.ts +++ b/test/scripts/release-preflight.test.ts @@ -216,6 +216,25 @@ describe("scripts/release-preflight.mjs", () => { expect(result.stdout).toContain("(version, jobs=4)"); }); + it("keeps plugin shrinkwraps aligned during plugin-only prep", () => { + const fakePnpm = makeFakePnpm(); + const root = makeReleaseFixture(); + const result = runPreflight(["--fix", "--scope", "plugins"], fakePnpm, {}, root); + + expect(result.status).toBe(0); + expect(readPnpmLog(fakePnpm.logPath).toSorted()).toEqual( + [ + "node --import tsx scripts/sync-plugin-versions.ts", + "node scripts/generate-npm-shrinkwrap.mjs --changed", + "node scripts/generate-plugin-inventory-doc.mjs --write", + "node --import tsx scripts/sync-plugin-versions.ts --check", + "node scripts/generate-npm-shrinkwrap.mjs --all --check", + "node scripts/generate-plugin-inventory-doc.mjs --check", + ].toSorted(), + ); + expect(result.stdout).toContain("(plugins, jobs=4)"); + }); + it("checks non-version scopes without requiring macOS source metadata", () => { const fakePnpm = makeFakePnpm(); const root = makeTempDir(tempDirs, "openclaw-release-preflight-config-");