Extension Versioning Guide
This guide explains semantic versioning for Radium extensions and how to manage compatibility.
Semantic Versioningβ
Radium extensions use semantic versioning (semver): MAJOR.MINOR.PATCH
Version Componentsβ
- MAJOR: Increment for breaking changes
- MINOR: Increment for new features (backward compatible)
- PATCH: Increment for bug fixes (backward compatible)
Examplesβ
1.0.0- Initial release1.0.1- Bug fix (patch)1.1.0- New feature (minor)2.0.0- Breaking change (major)
Version Formatβ
Valid Versionsβ
- Must follow
MAJOR.MINOR.PATCHformat - Each component is a non-negative integer
- No leading zeros (except for
0.x.x)
Valid:
1.0.02.1.30.1.010.20.30
Invalid:
1.0(missing patch)1.0.0.0(too many components)v1.0.0(no 'v' prefix)1.0.0-beta(no pre-release versions yet)
When to Increment Versionsβ
MAJOR Version (Breaking Changes)β
Increment MAJOR when:
- Removing components
- Changing component structure
- Changing required manifest fields
- Breaking backward compatibility
- Removing or changing dependencies
Examples:
- Removing a prompt file
- Changing command TOML structure
- Requiring new manifest fields
- Changing component directory structure
MINOR Version (New Features)β
Increment MINOR when:
- Adding new components
- Adding optional manifest fields
- Adding new functionality
- Enhancing existing components (backward compatible)
Examples:
- Adding a new prompt
- Adding a new MCP server config
- Adding optional metadata fields
- Improving component functionality
PATCH Version (Bug Fixes)β
Increment PATCH when:
- Fixing bugs
- Correcting documentation
- Fixing typos in manifests
- Improving error messages
Examples:
- Fixing incorrect glob patterns
- Correcting manifest field values
- Fixing component file formats
- Improving validation
Radium Version Compatibilityβ
Documenting Compatibilityβ
In your extension's README, document:
## Requirements
- Radium version: 0.1.0 or later
- Dependencies: None
Version Constraints (Future)β
Future versions may support version constraints in manifests:
{
"radium_version": ">=0.1.0,<0.2.0"
}
For now, document compatibility in README.
Breaking Changes Managementβ
Deprecation Strategyβ
When planning breaking changes:
- Deprecate first: Mark components as deprecated in a MINOR release
- Document migration: Provide migration guide
- Remove later: Remove in next MAJOR release
Migration Guidesβ
For MAJOR version updates, provide migration guides:
## Migration from 1.x to 2.x
### Breaking Changes
- Component structure changed
- New required manifest fields
### Migration Steps
1. Update manifest structure
2. Add new required fields
3. Reorganize components
Versioning Best Practicesβ
Start with 1.0.0β
- Don't start with
0.x.xunless truly experimental 1.0.0indicates a stable, usable extension0.x.xsuggests the extension is still in development
Consistent Versioningβ
- Use semantic versioning consistently
- Don't skip version numbers unnecessarily
- Document version changes in CHANGELOG
Release Notesβ
Include release notes for each version:
## Changelog
### 1.1.0 (2025-01-15)
- Added new code review agent for Python
- Improved error handling in commands
- Updated documentation
### 1.0.1 (2025-01-10)
- Fixed manifest validation issue
- Corrected component paths
### 1.0.0 (2025-01-01)
- Initial release
Dependency Versioningβ
Declaring Dependenciesβ
Currently, dependencies are declared by name only:
{
"dependencies": ["required-extension"]
}
Future versions may support version constraints:
{
"dependencies": [
{
"name": "required-extension",
"version": ">=1.0.0,<2.0.0"
}
]
}
Dependency Compatibilityβ
- Test with dependencies: Ensure your extension works with dependency versions
- Document requirements: Specify which dependency versions are required
- Handle missing dependencies: Provide clear error messages
Version Taggingβ
Git Tagsβ
Tag your releases:
# Tag a release
git tag v1.0.0
git push origin v1.0.0
Release Archivesβ
Create archives with version in filename:
my-extension-1.0.0.tar.gz
my-extension-1.1.0.tar.gz
Backward Compatibilityβ
Maintaining Compatibilityβ
- Additive changes: Prefer adding over modifying
- Deprecation: Mark old components as deprecated before removing
- Documentation: Document compatibility requirements
- Testing: Test with previous versions
Breaking Changesβ
When making breaking changes:
- Plan ahead: Announce breaking changes in advance
- Provide migration: Give users a migration path
- Version appropriately: Use MAJOR version increment
- Document clearly: Explain what changed and why
Version Comparisonβ
Comparing Versionsβ
Radium uses semantic versioning comparison:
1.0.0<1.0.1<1.1.0<2.0.0- Pre-release versions (future):
1.0.0-alpha<1.0.0<1.0.1-beta
Version Requirementsβ
When specifying version requirements (future):
>=1.0.0: Version 1.0.0 or later<2.0.0: Before version 2.0.0~1.0.0: Compatible with 1.0.x (>=1.0.0, <1.1.0)^1.0.0: Compatible with 1.x.x (>=1.0.0, <2.0.0)
Troubleshooting Version Issuesβ
Invalid Version Formatβ
Problem: Version validation fails
Solution: Ensure version follows MAJOR.MINOR.PATCH format
Version Conflictsβ
Problem: Extension version conflicts with existing installation
Solution: Use --overwrite flag or uninstall first
Compatibility Issuesβ
Problem: Extension doesn't work with current Radium version
Solution:
- Check Radium version requirements
- Update Radium if needed
- Check extension compatibility documentation