Streamline version management and GitHub releases directly from VS Code / your IDE. Automatically update version numbers, create git tags, and publish GitHub releases with just a few clicks.
π Documentation & Guides | π» Source Code
Note: This extension is currently in alpha and may have bugs or limitations.
![]() Version control panel with one-click version bumping and GitHub release creation |
![]() Create beautiful GitHub releases with auto-generated notes from your commits |
- One-click version bumping (patch, minor, major)
- Selectively updates version in
package.json
without affecting other changes - Follows semantic versioning (SemVer) standards
- Automatically amends commit messages with version information
- Automatically creates git tags for versions
- Tags are created locally first, with optional remote pushing
- Clean version history with version changes as part of feature commits
- Ensures consistent version management across your project
- Create releases directly from VS Code
- Auto-generates release notes from commits (changelog)
- Fully editable release descriptions
- Supports both automatic and manual releases
- Configure which version types trigger releases
- Supports release assets
- Supports release commands
- Properly escapes special characters in commit messages (", `, $)
- Reliable changelog generation even with complex Git histories
- Fallback options ensure releases always have useful content
- Version control buttons in Source Control panel
- Visual feedback for version changes
- Customizable version format in commit messages
- Quick access to settings
- Install the extension from the VS Code Marketplace
- Open a Git repository with a
package.json
orVERSION
file - Use the Version Control panel in the Source Control section to select version type
- Commit changes with automatic versioning or manually update versions
Click these buttons in the Source Control panel to bump versions:
- Patch (1.0.0 β 1.0.1): For bug fixes
- Minor (1.0.0 β 1.1.0): For new features
- Major (1.0.0 β 2.0.0): For breaking changes
Two ways to create GitHub releases:
- Automatic: Releases are created when you bump versions (configurable)
- Manual: Click "Create GitHub Release" to make a release anytime
The release creation form provides:
- Pre-filled release title
- Commit history since last release
- Fully editable notes
- Preview before publishing
Configure the extension through VS Code settings:
- Version File: Optionally specify a custom VERSION file path
- Auto Tag: Enable/disable automatic Git tag creation
- Auto Update on Commit: Automatically update version when committing
- Enable GitHub Release: Create GitHub releases when versions change
- Version Format: Choose how versions appear in commit messages:
- arrow:
feat: Add feature β v1.2.3
(default) - bump:
feat: Add feature β§ v1.2.3
- simple:
feat: Add feature v1.2.3
- release:
feat: Add feature π¦ v1.2.3
- brackets:
feat: Add feature (v1.2.3)
- arrow:
Customize through VS Code settings:
The extension supports automated release workflows through the preReleaseCommands
and includePackageFiles
settings:
-
Pre-Release Commands: Run build, test, or packaging commands before creating a release:
"github-versionsync.preReleaseCommands": [ "npm run build", // Build your project "npm test", // Run tests "vsce package" // Package VS Code extension ]
Commands run in sequence and must all succeed for the release to proceed.
-
Release Assets: Automatically include build artifacts in your release:
"github-versionsync.includePackageFiles": [ "*.vsix", // Include VS Code extension packages "dist/*.zip", // Include distribution archives "build/*.jar" // Include built JAR files ]
Supports glob patterns for flexible file matching.
When creating GitHub releases, GitHub Version Sync will automatically select the latest version of each package type to include as release assets. This means:
- You can use simple glob patterns like
*.vsix
in theincludePackageFiles
setting - Only the most recently modified file of each package type will be included in the release
- Old versions of the same package won't clutter your GitHub release
The extension groups files with similar base names (ignoring version numbers) and selects only the most recently modified file from each group. For example, if you have:
my-extension-0.1.0.vsix (older)
my-extension-0.2.0.vsix (newer)
other-package-1.0.0.zip
And your settings include ["*.vsix", "*.zip"]
, the extension will only include:
my-extension-0.2.0.vsix
(the latest version)other-package-1.0.0.zip
(the only version)
This ensures your releases always include the most up-to-date versions without requiring you to manually specify exact filenames.
Configure which files to include in your releases:
"github-versionsync.includePackageFiles": [
"*.vsix",
"dist/*.zip",
"build/output/*.jar"
]
GitHub Version Sync provides several options to customize your changelog output:
When creating a new GitHub release, you can now choose to include the full commit message bodies in the changelog, not just the first line. This is especially useful for commits with detailed explanations:
feat: Smart release asset selection
This feature intelligently filters release assets to prevent including multiple versions
of the same package. It groups files with similar base names, ignoring version numbers,
and selects only the most recently modified file from each group to include in releases.
To enable this option:
- Check the "Include Message Body" option in the release dialog
- Or set it permanently in your settings:
"github-versionsync.changelogIncludeMessageBody": true
The message bodies will be indented and properly formatted in the final changelog.
- Show Dates: Include the commit date in the changelog
- Show Authors: Include the author's name for each commit
For GitHub release creation, the extension requires a GitHub token:
- Go to your GitHub Token Settings
- Create a token with the
repo
scope - The extension will prompt for this token when needed
- Tokens are securely stored in VS Code's built-in secret storage
Access these commands via the Command Palette (Ctrl+Shift+P
/ Cmd+Shift+P
):
Version Control: Select Version Type
- Set the type of version updateVersion Control: Toggle GitHub Releases
- Enable/disable GitHub release creationVersion Control: Create GitHub Release
- Manually create a releaseVersion Control: Commit with Version
- Stage changes and commit with version
- Visual Studio Code v1.80.0 or higher
- Git installed and configured
- Node.js v18.0.0 or higher
Common issues and solutions:
-
Version not updating
- Ensure
package.json
exists in root - Check VERSION file path if configured
- Verify write permissions
- Ensure
-
GitHub releases not working
- Check GitHub authentication
- Verify repository has remote configured
- Ensure you have repository write access
-
Git tags not creating
- Check if
enableAutoTag
is true - Verify Git is initialized
- Ensure you have Git push permissions
- Check if
For detailed troubleshooting guides and documentation, visit our official website.
Want to contribute? Great! See CONTRIBUTING.md for development setup and guidelines.
Found a bug or have a feature request? Please open an issue on GitHub.
This extension is licensed under the custom "Code With Credit" License. See the LICENSE file for details.
- For Individuals & Open Source: Free to use with attribution
- For Commercial & Corporate: Requires separate license agreement
- Contact TriexDev via GitHub for commercial licensing options
GitHub Version Sync supports workspace-specific (per-project) settings, allowing you to have different configurations for each project. This is particularly useful for pre-release commands, which may vary depending on the project structure and build tools.
- Open your project in VS Code
- Go to File > Preferences > Settings (or press
Cmd+,
on macOS,Ctrl+,
on Windows/Linux) - Click on "Workspace" tab at the top to switch from User settings to Workspace settings
- Search for "GitHub Version Sync" to find all extension settings
- Configure the settings specifically for your current workspace
For a project using TypeScript with npm:
{
"github-versionsync.preReleaseCommands": [
"npm run build",
"npx @vscode/vsce package"
]
}
For a project using TypeScript with Bun:
{
"github-versionsync.preReleaseCommands": [
"~/.bun/bin/bun run build"
]
}
Workspace settings are stored in the .vscode/settings.json
file in your project, which you can also edit directly.