Files
rivencraft/docs/DUAL_VERSION_RELEASE.md
T
2026-11-11 17:15:46 -05:00

2.7 KiB

Dual-version release workflow

Maintain Minecraft 1.21.1 and 26.3 independently. The 1.21.1 line retains Dynamic Dimensions AR Edition and Bad Packets. The 26.3 line uses its first-party backend. Do not widen either artifact's Minecraft dependency range or import saves between the tracks.

Version identity

From 26.3.0.1 onward, prefix the Minecraft version and append the milestone/release slice and iteration: Minecraft.release-slice.iteration. Example: 26.3.0.1 -> rivencraft-26.3.0.1.jar, Gitea tag V26.3.0.1. An explicitly selected prerelease uses a suffix such as -beta.1. The existing 1.21.1 release keeps its published version until its next code update; then use the corresponding 1.21.1.<slice>.<iteration> convention.

The user authorized regular release status for 26.3.0.1. Release-channel status does not close unfinished parity or multiplayer issues automatically.

Build and publish

For 26.3, update ports/mc263/gradle.properties, then run ./gradlew -p ports/mc263 build --console=plain with Java 25 available. Use the exact built/player-validated artifact; naming/metadata-only changes do not change generation or save behavior.

Write release notes, audit the guide/wiki/project description, commit and push the changes, then create and push the matching annotated tag. Preview the scripts/publish_mod_sites.py release command with the JAR, changelog, version, display name, Minecraft version, Java version and channel; add --publish to upload to Gitea, Modrinth and CurseForge. Tokens stay in the system keyring. Verify published metadata and downloaded artifact hashes. CurseForge approval may remain pending after a successful upload.

The publisher accepts legacy Minecraft-prefixed archive filenames and beta tags for already numbered historical uploads; new releases use the identity above.

Validation gates and issue audit

Run appropriate builds and targeted server checks for changed behavior. The user performs visual/gameplay validation. Keep temporary test fixtures out of shipped JARs; use new worlds and remove them regardless of pass/fail. Stop test processes. If generation stalls, hand the test to the user.

Before closing a port umbrella issue, compare its acceptance criteria and comments to actual evidence. Current expanded-catalog two-client create/travel/reconnect/ restart/stale-ack regression remains in #100. #103 retains dual-line release automation/regression completion and #104 retains the full parity gate. Shared issues need both versions resolved before closure.

For each release, document tested optional versions and no-optional fallbacks, match client/server JARs, preserve the independent 1.21.1 support line, update wiki and platform descriptions, and keep known bugs linked in the release notes.