Skip to content

Fix VSIX packaging and add publish tooling for release#36

Merged
helly25 merged 4 commits into
mainfrom
chore/release-readiness
May 30, 2026
Merged

Fix VSIX packaging and add publish tooling for release#36
helly25 merged 4 commits into
mainfrom
chore/release-readiness

Conversation

@helly25
Copy link
Copy Markdown
Owner

@helly25 helly25 commented May 30, 2026

Summary

Makes the extension packageable and sets up automated publishing. vsce package was failing before this change, so no release could be built.

What was wrong

  • Packaging crashed. The incomplete .vscodeignore let the .trunk/ directory into vsce's secret scanner, which died with EISDIR: illegal operation on a directory — no .vsix was ever produced.
  • Dev files would ship. .github/, out/test/, eslint.config.js, package-lock.json, and .DS_Store were all being included.
  • No publish tooling. @vscode/vsce wasn't a dependency and there were no package/publish scripts.
  • CI push trigger pointed at master while the default branch is main, so push CI never ran.

Changes

  • Expanded .vscodeignore to exclude .trunk/**, .github/**, out/test/**, eslint.config.js, package-lock.json, .pre-commit-config.yaml, and **/.DS_Store.
  • Added @vscode/vsce@^3.9.1 devDependency and package / publish npm scripts.
  • Fixed the CI push trigger to watch main.
  • Added .github/workflows/release.yml: on a published GitHub Release it packages the VSIX, runs vsce publish (using a VSCE_PAT repo secret), and attaches the VSIX to the release.

Verification

npm run package now succeeds. Resulting VSIX (9 files, 1.15 MB):

extension/
├─ LICENSE.txt
├─ changelog.md
├─ package.json
├─ readme.md
├─ images/ (iwyu.png, logo.png)
└─ out/extension.js

Before the first automated release

  • Create a repo secret VSCE_PAT = Azure DevOps PAT for the helly25 publisher, scope Marketplace > Manage.
  • Ensure the GitHub Release tag matches the version in package.json.

Follow-up (not in this PR)

  • images/logo.png is 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.
  • CI runs only pre-commit, not npm run compile / npm test. Worth adding.

🤖 Generated with Claude Code

helly25 and others added 3 commits May 30, 2026 19:01
`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>
@helly25 helly25 requested a review from Fab-Cat May 30, 2026 18:20
@helly25 helly25 merged commit 4b1ff4d into main May 30, 2026
2 checks passed
@helly25 helly25 deleted the chore/release-readiness branch May 30, 2026 18:23
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants