This guide covers deploying NebulaFlow as a VS Code extension and Electron application, including versioning, packaging, and distribution.
npm install -g @vscode/vscenpm install -g electron-builderNebulaFlow can be deployed in two ways:
The extension is published to the VS Code Marketplace for installation by users.
A standalone desktop application that bundles VS Code and NebulaFlow, available as:
Create a .vsix file for distribution:
npm run package:vsix
This command:
npm run typecheck)npm run build:webview)npm run build:ext)dist/nebulaflow-{version}.vsixOutput: dist/nebulaflow-0.2.14.vsix (version matches package.json)
Build platform-specific installers:
# Build Electron app (main process)
npm run build:electron
# Create platform packages
npm run pack:electron # Uses electron-builder
# Platform-specific builds
npm run pack:win # Windows NSIS installer
npm run zip:win # Windows zip package
Output: dist/release/ containing:
NebulaFlow-{version}.AppImage (Linux)NebulaFlow-{version}.dmg (macOS)NebulaFlow-{version}.exe (Windows NSIS)The version is defined in package.json:
{
"version": "0.2.14",
"publisher": "prinova"
}
package.json (follow Semantic Versioning):
git tag v0.2.14
git push origin v0.2.14
npm run package:vsix
npm run pack:electron
v0.2.14.vsix file and platform installersCreate a publisher account at Visual Studio Code Marketplace Publisher Portal
vsce publish --pat <your-personal-access-token>
Or publish a specific .vsix file:
vsce publish --pat <your-personal-access-token> --vsix dist/nebulaflow-0.2.14.vsix
https://marketplace.visualstudio.com/items?itemName=prinova.nebulaflowThe extension’s marketplace metadata is controlled by:
package.json fields: name, displayName, description, version, publisherREADME.md (displayed on marketplace page)CHANGELOG.md (version history)Important: Update README.md before publishing to ensure accurate marketplace documentation.
The project includes a GitHub Actions workflow (.github/workflows/build.yml) that automatically:
main and dev branchesv*)npm run check # Type check + lint
npm run package:vsix # Build and package extension
You can manually trigger the workflow:
# Push a tag to trigger release
git tag v0.2.14
git push origin v0.2.14
.vsix files.vsix files as GitHub Packages.vsix files directly:
code --install-extension nebulaflow-0.2.14.vsix
npm run check (typecheck + lint) - all errors fixedpackage.jsonCHANGELOG.md with release notesREADME.md with current featuresgit tag v{version}git push origin v{version}npm run package:vsixnpm run pack:electronThese must be set in the user’s environment, not during build:
export AMP_API_KEY="your-amp-key"
export OPENROUTER_API_KEY="your-openrouter-key"
# Maximum shell output characters (default: 10000)
export NEBULAFLOW_SHELL_MAX_OUTPUT="50000"
# Enable LLM debug logging
export NEBULAFLOW_DEBUG_LLM="true"
# Filter pause seeds (for testing)
export NEBULAFLOW_FILTER_PAUSE_SEEDS="false"
| Issue | Solution |
|---|---|
| VSCE authentication failed | Ensure PAT has “Marketplace (Publish)” scope and is not expired. |
| Build fails with type errors | Run npm run typecheck and fix all errors before packaging. |
| Webview assets missing in VSIX | Ensure npm run build:webview completed successfully. |
| Electron build fails | Check electron-builder configuration in package.json; verify platform tools (e.g., NSIS for Windows). |
| Version mismatch | Ensure package.json version matches the Git tag and release notes. |
| Marketplace rejection | Verify README.md has no broken links and CHANGELOG.md follows proper format. |
| GitHub Actions fails | Check workflow logs; ensure all dependencies are in package.json. |
| Extension not activating | Verify main field points to dist/src/extension.js and file exists. |
If a release causes issues:
v{major}.{minor}.{patch+1}