Use this file every time you cut a release. Work top to bottom.
-
CHANGELOG.md— new## [X.Y.Z] - YYYY-MM-DDsection written with today's date -
vscode/package.json—"version"bumped (if VS Code extension changed) -
chrome/manifest.json+chrome/package.json—"version"bumped (if Chrome extension changed) - Rust crates (
crates/*/Cargo.toml) — CI auto-bumps these at build time from the git tag; no manual edit needed unless you're publishing to crates.io from local -
npm/package.json— CI auto-bumps from the git tag; no manual edit needed
git add CHANGELOG.md vscode/package.json # add chrome/manifest.json + chrome/package.json if changed
git commit -m "chore: release vX.Y.Z"
git tag vX.Y.Z
git push && git push origin vX.Y.ZGo to GitHub Actions → Release and watch the run. One human approval gate (production environment) unblocks all publish jobs simultaneously.
| Job | Destination | Gate variable |
|---|---|---|
release |
GitHub Release + binary assets | always on |
publish-vscode |
VS Code Marketplace + Open VSX | ENABLE_VSCODE_PUBLISH=true |
publish-npm |
npmjs.com (vastlint) |
ENABLE_NPM_PUBLISH=true |
publish |
crates.io (vastlint-core, vastlint-cli) |
ENABLE_CRATES_PUBLISH=true |
publish-docker |
Docker Hub (aleksuix/vastlint) |
ENABLE_DOCKER_PUBLISH=true |
publish-mcp-registry |
MCP Registry (io.github.aleksUIX/vastlint) |
ENABLE_MCP_REGISTRY_PUBLISH=true |
provenance |
GitHub attestation store (SLSA L3) | always on |
chrome-extension |
GitHub Release asset + Chrome Web Store | tag push, or publish_chrome=true on manual Release dispatch |
Chrome publish paths:
- Tagged release: the
chrome-extensionjob inReleaseruns on tag pushes and publishes the zipped extension. - Standalone publish: run the
Chrome Extensionworkflow withpublish: trueand optionalversion: 0.4.9when you need to ship the extension outside a full repo release.
- Download the four CLI tarballs from the GitHub Release
- Compute SHA-256 for each:
shasum -a 256 vastlint-macos-aarch64.tar.gz shasum -a 256 vastlint-macos-x86_64.tar.gz shasum -a 256 vastlint-linux-aarch64.tar.gz shasum -a 256 vastlint-linux-x86_64.tar.gz
- Update
homebrew-tap/Formula/vastlint.rb— bumpversionand all foursha256values + URLs - Commit + push the tap repo
These repos pin a specific vastlint-core release and need their own release cycle.
| Repo | What to update | Current version |
|---|---|---|
vastlint-erlang |
@version in mix.exs, checksum files, CHANGELOG.md |
0.3.7 |
vastlint-go |
precompiled libs/ artifacts, go.mod tag |
— |
- GitHub Release page has correct assets and CHANGELOG notes
-
npm info vastlint versionreturns new version - VS Code Marketplace page shows new version
- Open VSX page shows new version (
open-vsx.org/extension/aleksUIX/vastlint) -
docker pull aleksuix/vastlint:latestpulls new image - MCP Registry entry updated (if
ENABLE_MCP_REGISTRY_PUBLISH=true) - Homebrew:
brew upgrade vastlintinstalls new version (after tap PR merged)
| File | Updated by | Notes |
|---|---|---|
CHANGELOG.md |
manual | always |
vscode/package.json |
manual | when VS Code ext changes |
chrome/manifest.json + chrome/package.json |
manual | when Chrome ext changes |
crates/*/Cargo.toml |
CI (sed at build time) | no manual edit needed |
npm/package.json |
CI (npm version at build time) | no manual edit needed |
homebrew-tap/Formula/vastlint.rb |
manual | after release assets are live |
vastlint-erlang/mix.exs |
manual | when NIF ABI changes |