Add CHANGELOG; require an explicit release TAG

Adding a game is a minor bump, so the collection is at v1.2.0: v1.0.0 shipped
GB4, Burglin' Gnomes was a minor bump that was never cut, and Expedition 33 is
the second. Skipping the unreleased 1.1.0 reflects the real history better than
collapsing two games' worth of additions into one bump.

publish.sh no longer defaults TAG to v1.0.0, which could silently re-cut the
existing release; it now requires TAG explicitly.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 17:23:23 -04:00
co-authored by Claude Opus 4.8
parent 15d0169f56
commit 1176df8f20
3 changed files with 57 additions and 1 deletions
+52
View File
@@ -0,0 +1,52 @@
# Changelog
Versioning applies to the collection as a whole: **adding a game is a minor bump**,
fixes/tuning to existing entries are patch bumps.
## v1.2.0 — Clair Obscur: Expedition 33
- **New game: Clair Obscur: Expedition 33** (Unreal Engine 5, no DRM) — ⚠️ partial support.
Adds a third install method, `external`: where a good third-party fix already
exists and its license allows redistribution, it is vendored **unmodified**
with our tuned config and full credit, rather than reimplemented.
The fix itself is [ClairObscurFix](https://github.com/Lyall/ClairObscurFix)
by **Lyall** (MIT).
- Ships a **reduced profile** (only `Center HUD` enabled). Upstream v0.0.10 is
archived and predates current game builds; with full features it crashed on
save load. Documented with a revalidation checklist rather than marked working.
- `publish.sh` now cuts **one release for the whole collection**, attaching every
game's zip, and replaces same-named assets so re-runs are idempotent.
## v1.1.0 — Burglin' Gnomes *(never released; folded into v1.2.0)*
- **New game: Burglin' Gnomes** (Unity 6, Mono) — ✅ confirmed working at 5120×1440.
Adds the `bepinex` install method and a purpose-built C# plugin.
- Camera deliberately untouched: it is orthographic with a constant
`orthographicSize`, which is already correct Hor+ at 32:9. The entire problem
was UI scaling.
- Fixes HUD canvases (`match=1` + raised `referenceResolution.y`) and world-space
labels (canvas `localScale``CanvasScaler.scaleFactor` is overwritten every
frame for WorldSpace canvases).
- Config reloads live (~2s) without a game restart.
## v1.0.0 — Gundam Breaker 4
- **New game: Gundam Breaker 4** (Unreal Engine 4.27, SteamStub DRM) — ✅ confirmed
working at 5120×1440.
- Forces Hor+ FOV via `AspectRatioAxisConstraint = MaintainYFOV` and disables
pillarboxing, patched in decrypted memory at runtime with
[SUWSF](https://github.com/PhantomGamers/SUWSF) — the exe is DRM-encrypted on
disk, so static patching is impossible.
---
### Unreleased infrastructure changes
These landed between v1.0.0 and v1.2.0 and are not tied to a single game:
- Restructured from a single-game repo into a multi-game collection
(`games/<Game>/` + `game.conf`), so `install.sh` is game-agnostic.
**Note:** `./install.sh` now requires a game name; run it bare to list games.
- Migrated hosting from GitHub to self-hosted Gitea.
- `publish.sh` rewritten for the Gitea API; reads `GITEA_TOKEN` from the
environment and never stores it.
+4
View File
@@ -63,6 +63,10 @@ Config-file tweaks (e.g. UE4's `AspectRatioAxisConstraint=MaintainYFOV`) typical
3. **Unreal:** start from the UE4 patterns in [`games/GundamBreaker4/SUWSF.ini`](games/GundamBreaker4/SUWSF.ini) — they match across many UE4 titles. If a pattern misses, use `tools/dump_decrypted.py` + `tools/aob.py` to derive the exact bytes. 3. **Unreal:** start from the UE4 patterns in [`games/GundamBreaker4/SUWSF.ini`](games/GundamBreaker4/SUWSF.ini) — they match across many UE4 titles. If a pattern misses, use `tools/dump_decrypted.py` + `tools/aob.py` to derive the exact bytes.
4. **Unity:** install BepInEx + UnityExplorer and inspect live with [`tools/unity_diag.cs`](tools/unity_diag.cs) / [`tools/unity_uitune.cs`](tools/unity_uitune.cs), then write a plugin (copy `games/BurglinGnomes/plugin/`). 4. **Unity:** install BepInEx + UnityExplorer and inspect live with [`tools/unity_diag.cs`](tools/unity_diag.cs) / [`tools/unity_uitune.cs`](tools/unity_uitune.cs), then write a plugin (copy `games/BurglinGnomes/plugin/`).
## Changelog
Version history and the versioning policy (adding a game = minor bump) are in [CHANGELOG.md](CHANGELOG.md).
## License ## License
MIT — see [LICENSE](LICENSE). Bundled third-party components (SUWSF, Ultimate ASI Loader) are MIT and credited in [THIRD_PARTY.md](THIRD_PARTY.md). You must own the games; nothing here modifies or circumvents copy protection. MIT — see [LICENSE](LICENSE). Bundled third-party components (SUWSF, Ultimate ASI Loader) are MIT and credited in [THIRD_PARTY.md](THIRD_PARTY.md). You must own the games; nothing here modifies or circumvents copy protection.
+1 -1
View File
@@ -17,7 +17,7 @@ GAME="${GAME:-all}"
if [ "$GAME" = "all" ]; then if [ "$GAME" = "all" ]; then
GAME=$(for d in games/*/; do [ -f "$d/game.conf" ] && basename "$d"; done | tr '\n' ' ') GAME=$(for d in games/*/; do [ -f "$d/game.conf" ] && basename "$d"; done | tr '\n' ' ')
fi fi
TAG="${TAG:-v1.0.0}" TAG="${TAG:?set TAG explicitly, e.g. TAG=v1.2.0 (see CHANGELOG.md)}"
# Single game -> its own README; multiple -> the collection README. # Single game -> its own README; multiple -> the collection README.
if [ "$(echo "$GAME" | wc -w)" -eq 1 ] && [ -f "games/$GAME/README.md" ]; then if [ "$(echo "$GAME" | wc -w)" -eq 1 ] && [ -f "games/$GAME/README.md" ]; then
NOTES="${NOTES:-games/$GAME/README.md}" NOTES="${NOTES:-games/$GAME/README.md}"