diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..4a2d8a4 --- /dev/null +++ b/CHANGELOG.md @@ -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.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. diff --git a/README.md b/README.md index 500a3eb..2a56ac0 100644 --- a/README.md +++ b/README.md @@ -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. 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 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. diff --git a/tools/publish.sh b/tools/publish.sh index d316dec..b87cab2 100755 --- a/tools/publish.sh +++ b/tools/publish.sh @@ -17,7 +17,7 @@ GAME="${GAME:-all}" if [ "$GAME" = "all" ]; then GAME=$(for d in games/*/; do [ -f "$d/game.conf" ] && basename "$d"; done | tr '\n' ' ') 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. if [ "$(echo "$GAME" | wc -w)" -eq 1 ] && [ -f "games/$GAME/README.md" ]; then NOTES="${NOTES:-games/$GAME/README.md}"