Releases are maintainer-only and should start from a clean, up-to-date main branch.
- Choose a semantic version and move relevant entries from
Unreleasedinto that version inCHANGELOG.md. - Synchronize the version in
package.jsonandpackage-lock.jsonwithnpm version <x.y.z> --no-git-tag-version, then updateCITATION.cff,README.md, the version assertion intest/metadata.test.js, and any other release-facing documentation. - Run
npm ci,npm run check, andnpm run audit. - Run
npm run packageand inspect the VSIX file list. Confirm that source, tests, workflows,AGENTS.md, and local artifacts are absent. - Install the generated VSIX in a clean VS Code profile and smoke-test launching, settings, workspace trust, and the missing-CLI documentation prompt.
- Commit the release metadata and merge it through the protected branch workflow.
- Update the local
mainbranch to the merge commit, then rerunnpm ci,npm run check,npm run audit, andnpm run packagefrom that clean commit. - Create a signed annotated tag with
git tag -s vX.Y.Z -m "vX.Y.Z", then verify it withgit tag -v vX.Y.Zbefore pushing it. - The tag push runs the Release workflow, which creates the GitHub Release with the verified VSIX and its SHA-256 checksum.
- Dispatch the Release workflow with that release tag. It verifies the released VSIX against the asset digest and packaged identity, then publishes it to the Visual Studio Marketplace and Open VSX through OIDC trusted publishing.
- Confirm the Marketplace, Open VSX, README badges, GitHub release, and repository default branch all report the same version.
Never place marketplace tokens or credentials in the repository, issue comments, workflow output, or release notes.