Goal
Complete the prerelease-versioning work (task #70 / follow-up to #1188/#1190): make the VS Code extension publish pre-releases to the Marketplace, not just GitHub. The Marketplace has no semver -prerelease suffix — its convention is odd/even minor: stable = even minor (1.2.x), pre-release = odd minor (1.3.x), published with vsce publish --pre-release.
Current state (verified)
apps/vscode/package.json = 1.2.0 (even minor).
prerelease.yaml → calls _release.yaml with prerelease: true.
- In
_release.yaml, all three VS Code steps (setup-node / vsce publish / ovsx publish) are gated if: inputs.prerelease == false … → skipped for prereleases (GitHub-only today).
_init.yaml vscode_version = raw jq .version apps/vscode/package.json (no per-build uniqueness).
_build.yaml builds everything via ./builder build --version="$FULL_VERSION" where FULL_VERSION = <server>.<run_number> (4 segments).
Proposed implementation
- Manifest → odd minor. Bump
apps/vscode/package.json to 1.3.0 on develop (pre-release line). When a release stabilizes, main cuts the next even minor (1.4.0) — needs a step in the release/cut process.
- Unique pre-release version. Marketplace rejects re-publishing a version and requires exactly
major.minor.patch. Derive the pre-release version as <major>.<odd-minor>.<run_number> (e.g. 1.3.<run_number>) for prerelease: true; stable keeps the manifest version. Add a prerelease input to _init.yaml and compute vscode_version accordingly.
- Build the VSIX with that version. ⚠️ NEEDS VERIFICATION: how does
./builder build --version=… stamp the VSIX version? It must produce a 3-segment major.minor.patch for the extension (the server's 4-segment FULL_VERSION would be rejected by vsce). Confirm/adjust so the prerelease VSIX is built as 1.3.<run_number>.
- Publish on prerelease. In
_release.yaml, change the three vscode steps to run for prereleases too, adding --pre-release:
vsce publish --pre-release --packagePath "$VSIX"
ovsx publish --pre-release "$VSIX" -p "$OVSX_PAT" (confirm ovsx 0.10.9 supports --pre-release)
- Re-check the
steps.tag_check gating interaction for the prerelease path.
Open questions for review
./builder VSIX version stamping (item 3) — the crux.
- Stabilize → next-even-minor bump: manual in the version-bump PR, or automated?
- Do we also want Open VSX pre-releases, or Marketplace only?
Why this is an issue, not a PR
Every piece interacts (manifest ↔ _init ↔ ./builder ↔ _release) and it publishes to the live Marketplace, so it needs the release owner's review + a verified ./builder behavior before merging. Happy to pair/implement once the builder VSIX-versioning is confirmed.
Refs: #1188, #1190 (SDK side), task #70.
Goal
Complete the prerelease-versioning work (task #70 / follow-up to #1188/#1190): make the VS Code extension publish pre-releases to the Marketplace, not just GitHub. The Marketplace has no semver
-prereleasesuffix — its convention is odd/even minor: stable = even minor (1.2.x), pre-release = odd minor (1.3.x), published withvsce publish --pre-release.Current state (verified)
apps/vscode/package.json=1.2.0(even minor).prerelease.yaml→ calls_release.yamlwithprerelease: true._release.yaml, all three VS Code steps (setup-node /vsce publish/ovsx publish) are gatedif: inputs.prerelease == false …→ skipped for prereleases (GitHub-only today)._init.yamlvscode_version= rawjq .version apps/vscode/package.json(no per-build uniqueness)._build.yamlbuilds everything via./builder build --version="$FULL_VERSION"whereFULL_VERSION=<server>.<run_number>(4 segments).Proposed implementation
apps/vscode/package.jsonto1.3.0ondevelop(pre-release line). When a release stabilizes,maincuts the next even minor (1.4.0) — needs a step in the release/cut process.major.minor.patch. Derive the pre-release version as<major>.<odd-minor>.<run_number>(e.g.1.3.<run_number>) forprerelease: true; stable keeps the manifest version. Add aprereleaseinput to_init.yamland computevscode_versionaccordingly../builder build --version=…stamp the VSIX version? It must produce a 3-segmentmajor.minor.patchfor the extension (the server's 4-segmentFULL_VERSIONwould be rejected byvsce). Confirm/adjust so the prerelease VSIX is built as1.3.<run_number>._release.yaml, change the three vscode steps to run for prereleases too, adding--pre-release:vsce publish --pre-release --packagePath "$VSIX"ovsx publish --pre-release "$VSIX" -p "$OVSX_PAT"(confirm ovsx 0.10.9 supports--pre-release)steps.tag_checkgating interaction for the prerelease path.Open questions for review
./builderVSIX version stamping (item 3) — the crux.Why this is an issue, not a PR
Every piece interacts (manifest ↔
_init↔./builder↔_release) and it publishes to the live Marketplace, so it needs the release owner's review + a verified./builderbehavior before merging. Happy to pair/implement once the builder VSIX-versioning is confirmed.Refs: #1188, #1190 (SDK side), task #70.