Repository navigation
Build and draft a release from a version tag - #8
Merged
Merged
Conversation
Cutting a release by hand meant a self-contained publish, a run through Elgato's packer and an upload, with the version living in two files that have to agree with the tag. Pushing a v* tag now does all of it. The workflow refuses to release a tag that disagrees with manifest.json or the csproj, which is the mistake that ships a package Stream Deck will not take as an update. It also refuses a version the README's changelog says nothing about, since the release notes are taken from that section rather than written a second time. What comes out is a draft with the .streamDeckPlugin attached, so the notes can be read before anyone outside sees them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NUWJUvGgLcxu2NYVMijj9K
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cutting a release by hand means a self-contained publish, a run through Elgato's packer and an upload, with the version living in two files that have to agree with the tag. Pushing a
v*tag now does all of it.What it does
dotnet publish -r win-x64 --self-contained→streamdeck pack→ a draft release with the.streamDeckPluginattached. Nothing is public until you press Publish.Two guards, both failing the run rather than releasing something wrong:
v2.0.1wants2.0.1.0inmanifest.jsonand2.0.1in the csproj. Disagreement is the mistake that ships a package Stream Deck won't accept as an update, or installs under the wrong version.### <version>section. The release notes are taken from it, so the changelog and the release can't drift apart, and there's no second copy to keep in step.Packing goes through
@elgato/cli, which is Elgato's own packer and validates the manifest on the way through — so a plugin the Marketplace would reject fails here instead.Testing
I can't run a GitHub Actions job from here, so what I verified locally, against the real repo files:
.sdPluginfrom the repo's actualmanifest.json,Images/,previews/andPropertyInspector/, and ran the exactnpx --package=@elgato/cli@1 streamdeck packline from the workflow. It producedcom.thejoeiaut.bitwarden.streamDeckPluginand read the version as2.0.1.0.streamdeck validateon the same folder reports 16 warnings and no errors (duplicate.svg/.pngbasenames, and action UUIDs not being dot-prefixed — both pre-existing, neither blocking).v2.0.1passes against the current files;v2.0.0andv2.0.2are both rejected with the message naming what disagrees.run:block straight out of the YAML, so the heredoc dedenting is tested too).2.0.1yields exactly its changelog section; a version with no section fails the step.That last one caught a real bug while testing: the boundary originally only stopped at
###, so the oldest entry in the changelog ran on into the README's## Requirementsand everything after it. It now stops at any heading.Not verified: the
dotnet publishstep and thegh release createstep, neither of which I can run here. The publish line is the one already inBUILDING.mdand in the existing CI's win-x64 job.BUILDING.mdgets a Releasing section covering the two prerequisites and the tag push.🤖 Generated with Claude Code
https://claude.ai/code/session_01NUWJUvGgLcxu2NYVMijj9K
Generated by Claude Code