This document covers versioning, the release workflow, and how Fathom and Fathom-UnrealEngine versions stay in sync.
Fathom uses Semantic Versioning (MAJOR.MINOR.PATCH).
The version is stored in two places:
| File | Field | Example |
|---|---|---|
gradle.properties |
PluginVersion |
0.1.0 |
../Fathom-UnrealEngine/FathomUELink.uplugin |
VersionName |
0.1.0 |
These must stay in sync. The Rider plugin reads the bundled .uplugin VersionName at runtime to detect whether the user's installed UE companion plugin is outdated (see CompanionPluginService.Detect()). A mismatch causes the plugin to prompt the user to update.
Use the helper script from the repo root:
.\scripts\bump-version.ps1 -Version 0.2.0This script:
- Validates the version matches
MAJOR.MINOR.PATCH - Updates
PluginVersioningradle.properties - Updates
CHANGELOG.md: renames## [Unreleased]to## [0.2.0] - YYYY-MM-DDand adds a fresh## [Unreleased]section above it - Updates
VersionNamein../Fathom-UnrealEngine/FathomUELink.uplugin - Commits and tags
v0.2.0in both repos
Before running the script, move your changelog entries from ## [Unreleased] into bullet points under that heading so they get stamped with the version.
After bumping, push both repos with their tags. Fathom-UnrealEngine must be pushed first because the Fathom release workflow checks out Fathom-UnrealEngine by the same v* tag. If that tag does not exist on GitHub yet, the workflow will fail.
git -C ..\Fathom-UnrealEngine push --follow-tags # 1. UE plugin first
git push --follow-tags # 2. Fathom second (triggers workflow)Pushing the v* tag triggers the GitHub Actions release workflow (.github/workflows/release.yml), which:
- Checks out Fathom
- Checks out Fathom-UnrealEngine at the matching
v*tag (as a sibling directory) - Sets up JDK 21
- Runs
gradlew.bat buildPluginwith the tag version andReleaseconfiguration - Extracts release notes from
CHANGELOG.mdfor the matching version - Creates a GitHub Release with the built
.zipattached
Both repos must be sibling directories. The Gradle build (build.gradle.kts) references ../Fathom-UnrealEngine directly to bundle the UE plugin source into the Rider plugin zip.
Fathom-All/
Fathom/ # Rider plugin (this repo)
Fathom-UnrealEngine/ # UE companion plugin
The changelog follows Keep a Changelog. Always add entries under ## [Unreleased] during development:
## [Unreleased]
- Added new inspection for Blueprint naming conventions
## [0.1.0]
- Initial versionCategories you can use under a version heading: Added, Changed, Fixed, Removed.
| Task | Command |
|---|---|
| Bump version | .\scripts\bump-version.ps1 -Version X.Y.Z |
| Push release | UE repo first, then Fathom (see above) |
| Build locally | .\gradlew.bat buildPlugin -PBuildConfiguration=Release |
| Check current version | Select-String 'PluginVersion' .\gradle.properties |