- Gitea's DELETE /releases/:id does not remove the tag, so re-running the workflow for the same version failed with 409 (curl exit 22). The re-run safety block now also deletes the tag via git/refs/tags. - Replace curl -sf with an api() wrapper that prints Gitea's error body on HTTP >= 400 instead of failing silently. - The workflow_dispatch changelog input is single-line (Gitea has no multiline input type); convert literal \\n to real newlines and document it in the input description.