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`); }