Skip to content

v1.2.0 — self-update from GitHub, https-safe library covers

Choose a tag to compare

@BlizzHacker BlizzHacker released this 13 Oct 16:40
· 29 commits to main since this release
ba38e74

ROMarr v1.2.0 — self-update, and library covers that survive a reverse proxy.

Self-update system (#52). UpdateCheck no longer stops at "a newer version exists" — ROMarr can now apply updates from GitHub itself, behind three guards:

  • Deferral — never restarts while the queue holds grabbed/importing rows.
  • Detached apply — a start_new_session script outlives the restart: git fetch, git merge --ff-only (a diverged checkout refuses rather than merging), pip install, service restart; fail-stop and logged, with the pre-update commit recorded as a rollback handle.
  • Honest install detection — a git checkout self-applies; a container cannot (the image owns the code) and is given the exact host docker pull / compose commands instead of a fake success.
  • Channels: stable (latest release tag) and nightly (origin/main). ROM Hub plugins update through the Hub's own install path, per-plugin isolated.
  • New System → Update page, GET /api/v1/update, and ApplyUpdate/PluginUpdate commands. All auto-apply defaults are off — opt-in.

Library covers over https (#49). A RomM reached internally over http:// behind an https proxy produced blank posters (browsers block http images on an https page). http:// covers now route through a same-origin /api/v1/asset relay — the browser fetches ROMarr, ROMarr fetches the library server-side. Not an open proxy: the URL's origin must match a configured library or it's refused without a fetch. https:// covers stay direct.

Update check robustness (#54). A GitHub 403/429 is now reported as the rate limit it is (60/hr unauthenticated, shared per NAT IP) rather than "could not reach github.com". GITHUB_TOKEN/GH_TOKEN is sent as a Bearer header, lifting the limit to 5,000/hr.

Dashboard JS regression guard (#51). Every inline <script> block in the rendered page is now extracted and run through a real node --check in CI, plus a structural scan for the quote-backslash line-continuation that killed the dashboard in 1.1.0 (#48/#47). This failure class can no longer ship green.

Full suite: 2182 passed, 3 skipped.