Repository navigation
v1.2.0 — self-update from GitHub, https-safe library covers
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/importingrows. - Detached apply — a
start_new_sessionscript 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) andnightly(origin/main). ROM Hub plugins update through the Hub's own install path, per-plugin isolated. - New System → Update page,
GET /api/v1/update, andApplyUpdate/PluginUpdatecommands. 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.