Use environment variables instead of direct ${{ inputs.version }}
interpolation in shell scripts to prevent script injection.
Switch from sed to jq for updating manifest.json, consistent
with how release.yml already reads the version.
Instead of duplicating the release logic locally, `make release` now
just validates the version format and triggers the create-release
workflow via `gh workflow run`.
https://claude.ai/code/session_0158SxS2ATe6PL8zTpsoHRFn
- Add SHELL declaration to Makefile for bash compatibility
- Add check that release is run from main branch
- Use jq instead of grep -oP for JSON parsing in release.yml
- Move checkout before git ls-remote in create-release.yml
- Add --allow-empty to commit in create-release.yml
https://claude.ai/code/session_0158SxS2ATe6PL8zTpsoHRFn
Adds a "Create Release" workflow that can be triggered manually from the
Actions tab. It takes a version string, validates the format, checks for
duplicate tags, runs tests, updates manifest.json, commits, tags, and
pushes — which then triggers the existing release workflow to build and
publish the artifact.
https://claude.ai/code/session_0158SxS2ATe6PL8zTpsoHRFn
Update `make release` to write the version into manifest.json and commit
it before tagging, so the packaged artifact always carries the correct
version. Also add a CI guard in the release workflow that fails early if
the tag and manifest versions ever diverge.
https://claude.ai/code/session_0158SxS2ATe6PL8zTpsoHRFn