Skip to content

feat(publish): add Open VSX pre-release publishing step #784

Description

@edelauna

Problem (one or two sentences)
Open VSX (used by VSCodium, Cursor, Windsurf, etc.) sees roughly ¾ the download volume of the VS Code Marketplace, but Zoo Code only publishes pre-releases to the Marketplace — Open VSX users have no way to opt into pre-release builds.

Context (who is affected and when)
Affects all Open VSX users whenever a new pre-release is cut. They're stuck waiting for stable releases while Marketplace users get early access, widening the gap on the platform that already lags in downloads.

Desired behavior (conceptual, not technical)
Pre-releases should land on Open VSX at the same time as the Marketplace, under the same extension ID, so Open VSX users can choose "Install Pre-Release Version" just like Marketplace users can today.

Constraints / preferences (optional)

  • Same extension ID/namespace; pre-releases coexist with stable (no second extension).
  • Open VSX does NOT support semver pre-release tags like -beta.1 — pre-releases must use a distinct x.y.z. This aligns with Zoo Code's odd/even-minor scheme: odd minors (e.g. 3.55.x) are pre-release lines, even minors are stable.
  • Reuse the existing publish workflow token (OVSX_PUBLISH_TOKEN) rather than a separate publish path.

Acceptance criteria (optional)
Given a new pre-release is published
When the publish workflow runs with the pre-release flag
Then the build is published to Open VSX with ovsx publish --pre-release using the same VSIX as the Marketplace publish
And the extension shows a "Pre-Release" badge on open-vsx.org
And users can select "Install Pre-Release Version" in VSCodium/Cursor
But the stable release is unaffected (no version clobbering)

Proposed approach (optional)
Add an ovsx publish --pre-release step to the existing publish workflow, mirroring the pattern used by spring-projects/spring-tools (.github/workflows/publish-vscode-extension-pre-release.yml): build one VSIX, then vsce publish --pre-release to Marketplace and ovsx publish --pre-release to Open VSX. ovsx supports --pre-release natively — no second extension needed.

Trade-offs / risks (optional)

  • Version-collision risk if a pre-release x.y.z is later reused for stable — mitigated by the odd/even-minor convention keeping pre-release and stable on distinct versions.
  • Scope creep into the existing publish workflow (feat: add build provenance attestation to publish workflows #781 touches the same files; should be coordinated).
  • Requires the OVSX_PUBLISH_TOKEN secret to be present (already needed for stable Open VSX publishes).

Reference

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions