This document describes the complete release process for the Minecraft Bedrock Language Server monorepo.
The repository uses Release Drafter for release notes. The process is automated with minimal manual intervention required.
This repository contains multiple packages that can be versioned and released independently:
Core Bedrock packages:
bc-minecraft-bedrock-types- Core type definitionsbc-minecraft-bedrock-vanilla-data- Vanilla data structuresbc-minecraft-bedrock-command- Command parsing and handlingbc-minecraft-molang- Molang expression supportbc-minecraft-bedrock-project- Project managementbc-minecraft-bedrock-diagnoser- Diagnostic tools
IDE/LSP packages:
@blockception/ide-shared- Shared IDE utilitiesbc-minecraft-lsp-client- LSP client implementationbc-minecraft-lsp- Language server implementation (depends on all Bedrock packages above)blockceptionvscodeminecraftbedrockdevelopmentextension- VS Code extension
Independent packages:
bc-minecraft-bedrock-shared- Independent shared utilitiesbc-minecraft-project- Base project utilitiesvanilla-scraper- Data extraction toolgenerate-command-data- Command data generator
Developer PR → Main Branch → Version Update (Auto/Manual) → Release Draft → Published Release
↓ ↓ ↓ ↓ ↓
Changes Automated Automated Workflow Maintainer Auto-publish
Merged Release Draft Creates Version PR Creates to NPM &
Created (Release creates tags) Release Marketplace
When a developer makes changes:
# Make your code changes
git checkout -b fix/some-bug
# Make changes to the code
# Commit everything
git add .
git commit -m "fix: description of the fix"
git push origin fix/some-bugCreate a pull request with your changes.
When the PR is merged to main, the Release Drafter workflow runs:
- What it does: Creates or updates a release draft in GitHub Releases
- Draft contents:
- Aggregated changelog entries
- Categorized changes (features, fixes, etc.)
- Version number based on labels
- File:
.github/workflows/release-drafter.yaml
When ready to release, maintainers update package versions. This can be done automatically or manually:
Use the NPM Version Bump workflow (.github/workflows/npm-version-bump.yaml):
- Go to Actions → 📦 NPM Version Bump
- Click Run workflow
- Select the version bump type:
patch- Bug fixes and minor changes (0.0.X)minor- New features, backwards compatible (0.X.0)major- Breaking changes (X.0.0)prepatch- Pre-release patch (0.0.X-0)preminor- Pre-release minor (0.X.0-0)premajor- Pre-release major (X.0.0-0)
- The workflow will automatically:
- Update all package.json files in packages and VSCode IDE
- Create a Pull Request with the version changes
- After merging the PR:
- Create a GitHub Release to automatically generate git tags
Manually update package versions if you need more control:
What to update:
- ✅ Version numbers in package.json files for affected packages
- ✅ CHANGELOG entries for each package
- ✅ Internal dependencies to match new versions
Best practices:
- Follow semantic versioning (major.minor.patch)
- Update all interdependent packages together
- Keep the LSP and extension versions synchronized
Maintainer action required:
- Go to GitHub Releases
- Find the latest draft release
- Review the release notes
- Edit if necessary
- Click "Publish release"
When release is published:
- Release Pipeline workflow is triggered (
.github/workflows/release-pipeline.yaml) - VSCode extension is automatically published to marketplace
- NPM packages can be published (may require additional workflow setup)
When manually updating versions, choose the appropriate bump type:
- Bug fixes
- Documentation updates
- Performance improvements
- Internal refactoring (no API changes)
Example: Fixing type inference bug - bump from 1.2.3 to 1.2.4
- New features (backwards compatible)
- New APIs or functions
- Deprecations (with backwards compatibility)
- Significant enhancements
Example: Adding new completion provider - bump from 1.2.3 to 1.3.0
- Breaking changes
- Removed APIs
- Changed behavior that affects existing code
- Requires user migration
Example: Changing API signature - bump from 1.2.3 to 2.0.0
When updating versions, be mindful of package dependencies:
- The
bc-minecraft-lsppackage depends on all core Bedrock packages - The VS Code extension depends on the LSP package
- Update dependent packages when their dependencies are updated
- Ensure version ranges in package.json files are compatible
For critical bugs that need immediate release:
- Create a fix and merge PR to main
- Manually update version in affected package.json files
- Update CHANGELOG files
- Commit and push the version updates
- Create and publish a new release
For changes that don't affect any packages (e.g., CI updates, tooling changes):
- No version update needed
- Changes will still be included in Release Drafter notes if properly labeled
- Check workflow permissions in repository settings
- Verify labels are correctly applied to PRs
- Review
.github/release-drafter.ymlconfiguration
.github/workflows/release-drafter.yaml- Release draft creation.github/workflows/release-pipeline.yaml- Publishing automation.github/release-drafter.yml- Release notes configurationCONTRIBUTING.md- Contributor guidelines
- Test before releasing - ensure CI passes before publishing releases
- Keep versions synchronized - especially for interdependent packages
- Document breaking changes - clearly in CHANGELOG and release notes
- Follow semantic versioning - consistently across all packages
- Review release drafts carefully - before publishing
- Check the Contributing Guide
- Review past releases for examples
- Ask in repository discussions or issues