Versioning strategy and Semantic Versioning guide
Purpose: Document versioning strategy and provide guidance for version updates in Chrono Dawn mod.
When to use: When updating mod version, preparing for release, or understanding version numbering.
Chrono Dawn follows Semantic Versioning 2.0.0 (https://semver.org/).
<major>.<minor>.<patch>-<prerelease>+<buildmetadata>
Examples:
0.2.0-beta+1.21.1-fabric - Beta version for Minecraft 1.21.1 (Fabric)1.0.0+1.21.1-neoforge - Stable release for Minecraft 1.21.1 (NeoForge)1.2.3-rc.1+1.21.2-fabric - Release Candidate 1 for Minecraft 1.21.2 (Fabric)Version Number (major.minor.patch):
major: Incompatible API changes (e.g., 0.x.x → 1.0.0)minor: New features, backward-compatible (e.g., 1.0.0 → 1.1.0)patch: Bug fixes, backward-compatible (e.g., 1.1.0 → 1.1.1)Prerelease Identifier (optional, -<identifier>):
--alpha, -beta, -rc.1Build Metadata (+<minecraft-version>-<loader>):
++<minecraft_version>-<fabric|neoforge>+1.21.1-fabricDevelopment (during feature implementation):
mod_version=0.2.0-beta
Builds to: chronodawn-0.2.0-beta+1.21.1-fabric.jar
Release (when publishing):
mod_version=0.2.0
Builds to: chronodawn-0.2.0+1.21.1-fabric.jar
Use appropriate identifiers based on development stage:
-alpha: Early development, major features incomplete
0.2.0-alpha-beta: Feature-complete, testing in progress
0.2.0-beta-rc.1, -rc.2, etc.: Release Candidate
1.0.0-rc.1No identifier: Stable release
1.0.0| Change Type | Example | When to Use |
|---|---|---|
0.1.0 → 0.2.0 |
New major features (new dimension area, new boss system) | |
0.2.0 → 0.2.1 |
Bug fixes only | |
0.9.0 → 1.0.0 |
First stable release | |
1.0.0 → 2.0.0 |
Breaking changes (incompatible with old saves) |
Define only the version number and prerelease identifier:
mod_version=0.2.0-beta
Do NOT include Minecraft version or loader name here.
fabric/build.gradle (line 86):
archiveVersion = "${rootProject.mod_version}+${rootProject.minecraft_version}-fabric"
neoforge/build.gradle (line 98):
archiveVersion = "${rootProject.mod_version}+${rootProject.minecraft_version}-neoforge"
These scripts automatically append +1.21.1-fabric or +1.21.1-neoforge.
From mod_version=0.2.0-beta:
chronodawn-0.2.0-beta+1.21.1-fabric.jarchronodawn-0.2.0-beta+1.21.1-neoforge.jarcommon-0.2.0-beta.jarWhen changing mod_version in gradle.properties, also update:
gradle.properties (line 6)
mod_version=X.Y.Z-prerelease
README.md (lines 81-83, 209, 220)
docs/player_guide.md (lines 78-79)
docs/developer_guide.md (lines 235, 274-276)
fabric.mod.json and neoforge.mods.toml
${version} placeholder (no manual update needed)gradle.properties with new version+1.21.1)-beta)./gradlew clean build# Start development on 0.3.0
mod_version=0.3.0-alpha
# Feature-complete, ready for testing
mod_version=0.3.0-beta
# Final testing before release
mod_version=0.3.0-rc.1
# Production release
mod_version=0.3.0
# Critical bug fix for 0.3.0
mod_version=0.3.1
Current: 0.1.0 (stable)
Change to: 0.2.0-alpha
Reason: Beginning work on new features
Current: 0.2.0-alpha
Change to: 0.2.0-beta
Reason: All features implemented, testing phase
Current: 0.2.0-beta
Change to: 0.2.0-rc.1
Reason: Final testing before release
Current: 0.2.0-rc.1
Change to: 0.2.0
Reason: Release candidate passed testing
Current: 0.2.0 (stable)
Change to: 0.2.1
Reason: Critical bug found, needs hotfix
Use the update-version command to automate version updates:
/update-version 0.3.0-beta
This will:
gradle.propertiesgradle.properties line 6Last Updated: 2026-01-01 Maintained by: Chrono Dawn Development Team