'GAME=BurglinGnomes ./tools/publish.sh' exited with zero output. Two causes:
1. build_release.sh was SUWSF-only and hard-failed on a missing SUWSF.ini for
BepInEx games. It now reads METHOD from game.conf and packages BepInEx plus
the prebuilt plugin instead.
2. publish.sh ran the build with stdout to /dev/null, so that error was
invisible and killed the script silently. Build output is now shown
and failure reported explicitly.
Also: publish.sh creates the tag locally when missing (v1.1.0 never existed, so
the tag push would have failed too), and defaults the release body to the
game's own README so per-game notes are always accurate.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- origin now points at git.lazypugs.com/ckoch/UltraWidePatches
- rewrite tools/publish.sh for Gitea's API (token via GITEA_TOKEN env, never
stored on disk); creates/updates the release and uploads the game zip
- update the remaining self-referential link to the Gitea URL
Upstream links (SUWSF, Ultimate ASI Loader, Lyall's patterns) intentionally
still point at GitHub - those are third-party projects.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Generalize the project from a single GB4 fix into a collection that can host
ultrawide patches for many games.
- games/<Game>/{SUWSF.ini,game.conf,README.md}; GB4 moved in as the first entry
- game.conf carries all game-specific data (appid, exe, paths, loader, launch
option), so install.sh is fully generic: ./install.sh <Game> [uninstall]
- installer gains GAME_DIR / PREFIX_INI_FILE / LOADER_NAME overrides; verified
install -> idempotent re-run -> uninstall leaves the tree pristine
- tools de-hardcoded: dump_decrypted.py takes an exe name, read_protonlog.sh
takes an appid, aob.py takes a dump + game ini, build_release.sh takes a game
- README rewritten as an umbrella index with an "adding a game" guide
- LICENSE copyright -> programmingPug
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>