From 8b890c65b9cdaacc9b12687794cf7d0a10987d0a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 30 Jun 2026 11:27:11 +0000 Subject: [PATCH 1/2] Initial plan From 125548201621cbfa18cc149919972b193d3d3e70 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 30 Jun 2026 11:34:57 +0000 Subject: [PATCH 2/2] fix(release): tolerate npm republish conflicts --- patches/@semantic-release+npm+13.1.5.patch | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 patches/@semantic-release+npm+13.1.5.patch diff --git a/patches/@semantic-release+npm+13.1.5.patch b/patches/@semantic-release+npm+13.1.5.patch new file mode 100644 index 000000000..87492937b --- /dev/null +++ b/patches/@semantic-release+npm+13.1.5.patch @@ -0,0 +1,24 @@ +diff --git a/node_modules/@semantic-release/npm/lib/publish.js b/node_modules/@semantic-release/npm/lib/publish.js +index c983be89..66ec8ae0 100644 +--- a/node_modules/@semantic-release/npm/lib/publish.js ++++ b/node_modules/@semantic-release/npm/lib/publish.js +@@ -27,7 +27,18 @@ export default async function (npmrc, { npmPublish, pkgRoot }, pkg, context) { + ); + result.stdout.pipe(stdout, { end: false }); + result.stderr.pipe(stderr, { end: false }); +- await result; ++ try { ++ await result; ++ } catch (error) { ++ const output = `${error?.stdout ?? ""}\n${error?.stderr ?? ""}`; ++ if (/cannot publish over the previously published versions/i.test(output)) { ++ logger.log( ++ `Skipped publishing ${pkg.name}@${version} because it is already present on ${registry}` ++ ); ++ return false; ++ } ++ throw error; ++ } + + logger.log(`Published ${pkg.name}@${version} to dist-tag @${distTag} on ${registry}`); +