Skip to content

v26.9.2 — Off-UI-Thread I/O, Radio Backend Cleanup, and Release Pipeline Fix - #29

Merged
NF0T merged 2 commits into
mainfrom
develop
Sep 14, 2026
Merged

NF0T merged 2 commits into
mainfrom
develop

Conversation

@NF0T

@NF0T NF0T commented Sep 14, 2026

Copy link
Copy Markdown
Owner

Supersedes the abandoned v26.9.1 (never shipped — see ROADMAP.md). Same feature content as that attempt, plus the fix for why it failed.

Highlights

What happens after this merges

Nothing manual. The fixed release.yml will detect that 26.9.2 has no existing tag, build the Windows/Linux artifacts, sign them, attach them to a draft release, and publish — automatically, on this push to main. No tag push, no "publish the draft" click, from anyone.

🤖 Generated with Claude Code

NF0T and others added 2 commits September 13, 2026 22:31
GitHub's Immutable Releases feature locks a release's assets and tag
permanently the instant it's published, with no override. The old
design triggered on a tag push, but the only way to create a tag
through the Release UI/API is to publish first - so "publish, then
upload" was the only sequence physically possible, and Immutable
Releases forbids exactly that sequence. v26.9.1 hit this: the release
got published (creating the tag) before this workflow's build finished,
so the upload step failed with "Cannot upload assets to an immutable
release" and shipped with zero attached binaries.

Retargets the trigger to push on main and adds a detect-version job
that diffs CMakeLists.txt's CalVer against existing tags, so ordinary
pushes to main (CI-only fixes, etc.) are a no-op and only an actual
version bump builds+releases. The sign-and-upload job now owns the
entire sequence itself - attach assets to the still-draft release,
then explicitly publish as its last action - removing every manual
"push a tag" / "publish the draft" step a human (or Claude) could get
wrong. It also refuses to proceed (loud CI failure, not a silent
partial release) if it ever finds the release already published
before it gets to upload.

This only prevents recurrence for the next release; v26.9.1 itself
still needs manual recovery since its release object is already
immutable.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
v26.9.1's tag is permanently unusable — it was published (creating
the tag) before its build finished, which under GitHub's Immutable
Releases feature locked it with zero assets attached, and deleting
the release does not free the tag name for reuse. 26.9.2 is the real
first artifact-bearing release of September 2026, cut through the
release.yml fix in #27 rather than any manual tag/publish step.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
@NF0T
NF0T merged commit 8a2434a into main Sep 14, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant