fix: keep plugin release previews scoped

This commit is contained in:
Peter Steinberger
2026-05-02 00:23:38 +01:00
parent 8e78c412e9
commit d09395dc04
3 changed files with 34 additions and 6 deletions

View File

@@ -250,8 +250,8 @@ export function collectPublishablePluginPackages(
const validationErrors: string[] = [];
const selectedExtensionIds = new Set(filters.extensionIds ?? []);
const selectedPackageNames = new Set(filters.packageNames ?? []);
const hasSelectedExtensionIds = selectedExtensionIds.size > 0;
const hasSelectedPackageNames = selectedPackageNames.size > 0;
const hasSelectedExtensionIds = Array.isArray(filters.extensionIds);
const hasSelectedPackageNames = Array.isArray(filters.packageNames);
for (const candidate of collectExtensionPackageJsonCandidates(rootDir)) {
const { extensionId, packageDir, packageJson } = candidate;
@@ -467,8 +467,11 @@ export function collectPluginReleasePlan(params?: {
})
: [];
const allPublishable = collectPublishablePluginPackages(params?.rootDir, {
extensionIds: params?.selectionMode === "all-publishable" ? [] : changedExtensionIds,
packageNames: params?.selection,
extensionIds:
params?.selectionMode === "all-publishable" || !params?.gitRange
? undefined
: changedExtensionIds,
packageNames: params?.selection && params.selection.length > 0 ? params.selection : undefined,
});
const selectedPublishable =
params?.selectionMode === "all-publishable"

View File

@@ -18,8 +18,11 @@ export function runPluginNpmReleaseCheck(argv: string[]) {
})
: [];
const publishable = collectPublishablePluginPackages(".", {
extensionIds: selectionMode === "all-publishable" ? [] : changedExtensionIds,
packageNames: selection,
extensionIds:
selectionMode === "all-publishable" || !(baseRef && headRef)
? undefined
: changedExtensionIds,
packageNames: selection.length > 0 ? selection : undefined,
});
const selected =
selectionMode === "all-publishable"

View File

@@ -196,6 +196,28 @@ describe("collectPublishablePluginPackages", () => {
}),
]);
});
it("treats an explicit empty extension filter as no candidates", () => {
const repoDir = makeTempRepoRoot(tempDirs, "openclaw-plugin-npm-release-");
mkdirSync(join(repoDir, "extensions", "private-plugin"), { recursive: true });
writeJsonFile(join(repoDir, "extensions", "private-plugin", "package.json"), {
name: "@openclaw/private-plugin",
version: "2026.4.10-beta.1",
private: true,
openclaw: {
extensions: ["./index.ts"],
release: {
publishToNpm: true,
},
},
});
expect(
collectPublishablePluginPackages(repoDir, {
extensionIds: [],
}),
).toEqual([]);
});
});
describe("resolveSelectedPublishablePluginPackages", () => {