Releasing
Status: Current Last modified: 2026-06-01 01:05 PDT
The VS Code extension is currently published manually. There is no
release workflow in .github/workflows/; the only CI for the extension
is bazel-typescript.yml, which on every PR builds, tests, and
packages a single-platform .vsix and uploads it as a workflow
artifact (vscode-extension-vsix).
An automated multi-platform release workflow (with a bundled
chatter-lsp per target, GitHub Release upload, and optional
marketplace push) is a planned follow-up. Until then, the process below
is the source of truth.
CI coverage today
| Workflow | Trigger | What it does |
|---|---|---|
bazel-typescript.yml (vscode-extension job) | push/PR on apps/vscode-extension/** or schemas/** | bazel run //apps/vscode-extension:build, :test, :package; uploads .vsix as workflow artifact |
There is no vscode-release.yml. Any reference to a 5-platform
matrix or vscode-vX.Y.Z tagging workflow is aspirational.
Cutting a release (manual)
- Bump
apps/vscode-extension/package.jsonversion (semver). - Open a PR with the version bump; merge once green.
- On a maintainer workstation, from the repo root:
Or grab thejust vscode build just vscode package # produces apps/vscode-extension/*.vsixvscode-extension-vsixartifact from thebazel-typescript.ymlrun on the merge commit. - Publish to the Visual Studio Marketplace using the operator’s PAT:
The PAT is held by the operator, not in repo secrets. Create at https://dev.azure.com/_usersSettings/tokens with scope “Marketplace > Manage”.cd apps/vscode-extension npx vsce publish --packagePath talkbank-chat-<version>.vsix - Optionally attach the
.vsixto a manually-created GitHub Release for users who prefer side-loading.
Local packaging for testing
Same flow as a release build, just skip the marketplace step:
just vscode build
just vscode package
code --install-extension apps/vscode-extension/talkbank-chat-<version>.vsix
If you want the extension to talk to a locally-built chatter-lsp,
make sure that binary is on your PATH (e.g. bazel build //crates/chatter/chatter-lsp:chatter-lsp then point PATH at
bazel-bin/...). Today’s .vsix does not bundle a server binary;
the extension finds chatter-lsp via discovery order documented in
LSP Binary Discovery.
Side-loading a .vsix (users)
code --install-extension talkbank-chat-<version>.vsix
Users still need chatter-lsp on PATH. Bundling a per-platform
chatter-lsp into the .vsix is part of the planned release-workflow
follow-up.
Version-number discipline
apps/vscode-extension/package.json is the single source of truth.
Pre-release identifiers (0.X.Y-rc.1) are allowed per semver. Do not
hand-roll release tags; once an automated workflow exists, it will own
the tag format.
Planned follow-ups
- A
bazel-vscode-release.yml(or similar) that:- builds
chatter-lspper target platform (darwin-arm64, darwin-x64, linux-x64, linux-arm64, win32-x64), - bundles the matching binary into a per-platform
.vsix, - uploads
.vsixfiles to avscode-vX.Y.ZGitHub Release, - optionally runs
vsce publishusing a repo-held PAT secret.
- builds
- Signed
chatter-lspbinaries inside each.vsix(see Code Signing and Distribution).
Related chapters
- Installation — user-facing install
- Troubleshooting: LSP Connection — binary discovery order
- Testing — the test gates a release must pass
- Release Pipeline — repo-wide artifact map