How the two shipped artifacts get released: the Swift hypercode CLI/library and
the VS Code extension that drives it. The extension is a thin LSP client — it
needs the CLI installed and discoverable (on PATH, or via the
hypercode.serverPath setting) — so the two ship together.
| Artifact | Source | Consumed as |
|---|---|---|
hypercode CLI + Hypercode library |
root SwiftPM package | swift build, or .package(url: …, from: …) |
| Hypercode VS Code extension | editors/vscode/ |
.vsix, or the VS Code Marketplace |
The extension is a thin vscode-languageclient that spawns hypercode lsp. Its
package.json declares publisher: 0al-spec and name: hypercode, so the full
Marketplace identifier is 0al-spec.hypercode. Three release tiers, from local
to public.
No account required. Produces a portable .vsix anyone can install.
cd editors/vscode
npm install
npm install -g @vscode/vsce # one-time
vsce package # → hypercode-<version>.vsixInstall it:
code --install-extension hypercode-<version>.vsixThe .vsix can be attached to a GitHub Release as a download.
Note:
.vscodeignoreintentionally does not excludenode_modules—vsceresolves production vs dev dependencies itself, and excluding the folder would stripvscode-languageclientfrom the package.
-
Create the publisher
0al-specat https://marketplace.visualstudio.com/manage (must matchpackage.json'spublisher). -
Mint an Azure DevOps PAT at https://dev.azure.com → User Settings → Personal access tokens, scope Marketplace → Manage.
-
Publish:
vsce login 0al-spec # paste the PAT vsce publish # or: vsce publish --pat <TOKEN>
vsce publish [major|minor|patch] bumps package.json and tags in one step.
A workflow triggered on a vscode/v* tag:
npm ci && vsce package→ upload the.vsixas a GitHub Release asset.vsce publishusing aVSCE_PATrepository secret.
⚠️ The version lives inpackage.json, not the tag.vsce package/vsce publishreadeditors/vscode/package.jsonversion— thevscode/v*tag name is not consulted. So the tag alone is not enough: a new release must first bump and commitpackage.json(e.g.vsce publish minor, which bumps, commits and tags in one step), or the workflow must derive the version from the tag and write it intopackage.jsonbefore packaging. Otherwise avscode/v0.2.0tag would still publish0.1.0, and Marketplace would reject it as a duplicate.
Release then reduces to (version already bumped & committed):
git tag vscode/v0.2.0 && git push --tagsPrerequisites for Tier 2/3 (one-time, manual):
- Register the
0al-specpublisher on the Marketplace site. - Add a
VSCE_PATsecret under repo Settings → Secrets and variables → Actions.
The library is consumed directly by SwiftPM tag:
.package(url: "https://github.com/0al-spec/Hypercode", from: "0.4.0")A release is a semver git tag on main. The VS Code extension's serverInfo
version (currently 0.4.0, see LSPServer.swift) should track the CLI release
it was tested against.
- CLI / library — semver git tags (
0.4.0, …); the IR carries its own schema version (hypercode.ir/v1), independent of the package version. - Extension —
editors/vscode/package.jsonversion, released undervscode/v*tags so it can move independently of the CLI.