Fix VSIX packaging and add publish tooling for release#36
Merged
Conversation
`vsce package` previously failed: the incomplete `.vscodeignore` let the `.trunk/` directory into the scan, crashing vsce's secret scanner (EISDIR), and would have shipped dev-only files (`.github/`, `out/test/`, eslint config, lockfile, .DS_Store). - Expand `.vscodeignore` so only runtime artifacts ship; the VSIX now builds cleanly (LICENSE, CHANGELOG, README, package.json, images, out/extension.js). - Add `@vscode/vsce` devDependency and `package`/`publish` npm scripts. - Fix the CI push trigger to watch `main` (default branch) instead of `master`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Publishes on GitHub Release `published`, using a `VSCE_PAT` repo secret. Packages the VSIX, runs `vsce publish`, and attaches the VSIX to the release. The release tag should match the package.json version. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
# Conflicts: # package.json
Fab-Cat
approved these changes
May 30, 2026
helly25
added a commit
that referenced
this pull request
May 30, 2026
* Add optimized icon and build/test CI matrix (follow-up to #36) Icon: the Marketplace renders the icon at 128x128 but images/logo.png was 1362x1362 / 1.1 MB, dominating the VSIX. Add a 256x256 images/icon.png (hi-DPI crisp, ~77 KB) and point the manifest at it; keep logo.png as the full-res master in the repo but exclude it from the package via .vscodeignore. VSIX drops from ~1.15 MB to ~149 KB. CI: the workflow only ran pre-commit. Add a `build` job across ubuntu/macos/windows that runs npm ci, compile, lint, and the integration tests (xvfb-run on Linux, which needs a display for the VS Code instance). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Harden CI workflow: least-privilege permissions and current setup-python Address actionlint/checkov findings in main.yml: - Add top-level `permissions: contents: read` (checkov CKV2_GHA_1). - Bump actions/setup-python@v4 -> v5 (actionlint: runner too old). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Makes the extension packageable and sets up automated publishing.
vsce packagewas failing before this change, so no release could be built.What was wrong
.vscodeignorelet the.trunk/directory into vsce's secret scanner, which died withEISDIR: illegal operation on a directory— no.vsixwas ever produced..github/,out/test/,eslint.config.js,package-lock.json, and.DS_Storewere all being included.@vscode/vscewasn't a dependency and there were no package/publish scripts.masterwhile the default branch ismain, so push CI never ran.Changes
.vscodeignoreto exclude.trunk/**,.github/**,out/test/**,eslint.config.js,package-lock.json,.pre-commit-config.yaml, and**/.DS_Store.@vscode/vsce@^3.9.1devDependency andpackage/publishnpm scripts.pushtrigger to watchmain..github/workflows/release.yml: on a published GitHub Release it packages the VSIX, runsvsce publish(using aVSCE_PATrepo secret), and attaches the VSIX to the release.Verification
npm run packagenow succeeds. Resulting VSIX (9 files, 1.15 MB):Before the first automated release
VSCE_PAT= Azure DevOps PAT for thehelly25publisher, scope Marketplace > Manage.versionin package.json.Follow-up (not in this PR)
images/logo.pngis 1362×1362 / 1.1 MB; Marketplace renders icons at 128×128. Optimizing it would shrink the VSIX considerably. Left as-is to avoid touching the branding asset without sign-off.npm run compile/npm test. Worth adding.🤖 Generated with Claude Code