From 254fce8736dbd08ba2142df8c203035ff4fef759 Mon Sep 17 00:00:00 2001 From: Sucukdeluxe Date: Sun, 31 May 2026 20:21:37 +0200 Subject: [PATCH] Fix: Release als Draft anlegen, erst nach Asset-Upload veroeffentlichen (Auto-Update-Race) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User-Report: Auto-Update schlug mit "Setup-Asset nicht gefunden" fehl, wenn der Update-Check waehrend des Asset-Uploads eines neuen Releases feuerte. Ursache: release:gitea pushte Tag + erstellte das Release (draft:false) VOR dem Asset-Upload → das "latest"-Release war den ganzen Upload ueber sichtbar, aber ohne latest.yml (Gitea-Assets haben keinen digest → der Updater holt den Integritaets-Hash aus latest.yml, das zuletzt hochgeladen wird). Fix: Release als draft:true anlegen → alle Assets hochladen → dann PATCH draft:false. Der Updater ueberspringt Drafts und sieht das Release erst, wenn es komplett ist. Co-Authored-By: Claude Opus 4.8 (1M context) --- scripts/release_gitea.mjs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/scripts/release_gitea.mjs b/scripts/release_gitea.mjs index 8042476..fd53768 100644 --- a/scripts/release_gitea.mjs +++ b/scripts/release_gitea.mjs @@ -256,7 +256,10 @@ async function createOrGetRelease(baseApi, tag, authHeader, notes) { target_commitish: "main", name: tag, body: notes || `Release ${tag}`, - draft: false, + // Als Draft anlegen — der Auto-Updater ueberspringt Drafts. So wird das Release erst + // NACH dem Asset-Upload (unten via PATCH draft:false) "latest"; ein Update-Check kann + // nie ein Release ohne Setup/latest.yml sehen ("Setup-Asset nicht gefunden"). + draft: true, prerelease: false }; const created = await apiRequest("POST", `${baseApi}/releases`, authHeader, JSON.stringify(payload)); @@ -363,6 +366,14 @@ async function main() { const release = await createOrGetRelease(baseApi, tag, authHeader, releaseNotes); await uploadReleaseAssets(baseApi, release.id, authHeader, assets.releaseDir, assets.files); + // Erst JETZT veroeffentlichen (draft:false), nachdem ALLE Assets oben hochgeladen sind. + // Davor war das Release den ganzen Upload ueber sichtbar, aber ohne latest.yml/Setup → + // Auto-Update-Checks in diesem Fenster scheiterten mit "Setup-Asset nicht gefunden". + const published = await apiRequest("PATCH", `${baseApi}/releases/${release.id}`, authHeader, JSON.stringify({ draft: false })); + if (!published.ok) { + throw new Error(`Failed to publish release (${published.status}): ${JSON.stringify(published.body)}`); + } + process.stdout.write(`Release published: ${release.html_url || `${repo.baseUrl}/${repo.owner}/${repo.repo}/releases/tag/${tag}`}\n`); }