TODO: Redo for changesets. See Changesets Readme
After Changesets publishes the npm packages, the release workflow hands the
VSCode extension pipeline to scripts/release-vscode.mts.
It exposes four commands — build, attach, publish-vsce, publish-ovsx —
each of which operates only on the extensions actually released in this run
(filtered from the Changesets publishedPackages output).
We upload each built .vsix to its GitHub Release tag in addition to
publishing to the VSCode Marketplace and Open VSX. That makes the artifact
downloadable directly from GitHub — useful when a registry is degraded, when
a PAT has expired and a manual re-upload is needed, or for anyone who wants
the exact bits we shipped without going through a marketplace.
Per-package iteration, version lookups, and registry-API calls are tidier
(and safer) in a type-checked TS file than spread across run: blocks of
bash in release.yml. The script type-checks under scripts/tsconfig.json,
can be run locally with a mocked PUBLISHED_PACKAGES env var, and aggregates
failures across packages rather than short-circuiting on the first error.