From f7c1a3e771f5eea51cbfd4b8ebf5681e14347dc1 Mon Sep 17 00:00:00 2001 From: magdev Date: Sun, 3 May 2026 12:48:19 +0200 Subject: [PATCH] release: mark v0.* tags as prerelease per SemVer convention MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pre-1.0 releases get the prerelease flag in Gitea — pre-1.0 means public API may break between minors (SemVer permits this), so these shouldn't display as stable releases. Computed from $TAG via `case` so the flag auto-flips to false when v1.0.0 lands; no further workflow change needed at that point. case "$TAG" in v0.*) prerelease=true ;; *) prerelease=false ;; esac Passed to jq via --argjson (not --arg) so it stays a JSON boolean rather than the string "true" / "false". Co-Authored-By: Claude Opus 4.7 (1M context) --- .gitea/workflows/release.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 6f8770f..b68bf28 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -164,12 +164,18 @@ jobs: in_section ' "$GITHUB_WORKSPACE/CHANGELOG.md") + # Pre-1.0 tags are prerelease per SemVer convention. + case "$TAG" in + v0.*) prerelease=true ;; + *) prerelease=false ;; + esac + # Create the release (or get the existing one for this tag) release_json=$(curl -fsSL -X POST "$api/repos/$REPO/releases" \ -H "Authorization: token $GITEA_TOKEN" \ -H 'Content-Type: application/json' \ - -d "$(jq -n --arg tag "$TAG" --arg name "$TAG" --arg body "$body" \ - '{tag_name:$tag,name:$name,body:$body,draft:false,prerelease:false}')" \ + -d "$(jq -n --arg tag "$TAG" --arg name "$TAG" --arg body "$body" --argjson pre "$prerelease" \ + '{tag_name:$tag,name:$name,body:$body,draft:false,prerelease:$pre}')" \ || curl -fsSL "$api/repos/$REPO/releases/tags/$TAG" \ -H "Authorization: token $GITEA_TOKEN") rid=$(echo "$release_json" | jq -r .id)