Skip to content

v1.5.0 — MiNERVA as a plugin; torrent-only sources grabbable

Choose a tag to compare

@BlizzHacker BlizzHacker released this 15 Oct 02:57
· 12 commits to main since this release

ROMarr v1.5.0 — MiNERVA as a plugin; torrent-only sources become grabbable.

MiNERVA moves to the ROM Hub plugin layer (#64). The v1.4.0 indexer driver — a class welded into indexers.py — is gone. MiNERVA Archive now lives in its own repo, BlizzHacker/rom-hub-minerva: a sandboxed ROM Hub plugin declaring search + torrent capabilities, network-allowlisted by manifest, installed like the 23 plugins already on a live box. Zero lines of MiNERVA-specific code remain in ROMarr's core.

What ROMarr gains instead is general infrastructure, not source-specific:

  • Torrent-only plugin results are now grabbable. The hub:// fetch lane is HTTP-only by design (the Hub is deliberately not a torrent client), so a source that distributes magnets only — MiNERVA is one — could be searched but never grabbed. hub.resolve_torrents() now runs a plugin's torrent capability over magnet-bearing rows (grouped per plugin, one sandboxed subprocess each), producing a host-gated, tracker-augmented magnet that goes to your torrent client like any indexer magnet. Failures degrade to the bare magnet, never raise out of a search.
  • Slow sources stop masquerading as broken ones. hub.search gives its HTTP fetcher the call's timeout budget (min 60s, default 90s). MiNERVA measures 21–25s per query live; the old 30s httpx default inside a 30s RPC turned "slow" into "plugin error".

Proven live end-to-end through the production sandbox on the release box: sandboxed search returned 11 real results from minerva-archive.org, resolve_torrent produced a magnet that passed the Hub's own check_magnet gate with all 12 declared trackers. The plugin carries 16 tests against the real rom_hub_sdk; ROMarr carries 8 new tests pinning both release lanes and every resolve failure path. Full suite: 2282 passed, 3 skipped.

Kept from 1.4.x (never source-specific): the recursive collections presence scan and size=0-means-unknown scoring.

One thing to know: a MiNERVA torrent is a whole dump group ("TOSEC – Nintendo"), not one game — that's the archive's distribution model, and the result carries the exact file path so you can see what you're grabbing.