Skip to content

feat: library-first collection and compatibility flows - #60

Open
snapetech wants to merge 7 commits into
mainfrom
docs/romarrng-compatibility-luna-plan-20261027
Open

snapetech wants to merge 7 commits into
mainfrom
docs/romarrng-compatibility-luna-plan-20261027

Conversation

@snapetech

@snapetech snapetech commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

This PR implements the collection-first improvements and the requested durable scan, SQLite job/outbox, frontend interchange, and compatibility foundations.

Delivered

  • Added first-run intent and system interests, grouped system/platform choices, scoped navigation, and a local-library path that does not require an indexer or download client.
  • Added explicit folder system mapping, metadata refresh/correction, durable per-game overrides, and DAT/IGDB catalog browsing with genre and inventory status.
  • Added named platform catalog filter lists with cross-page selection, complete-inventory and duplicate-Wanted rechecks, and explicit confirmation. Adding a title to Wanted does not start a download.
  • Continued saved Collection batches in the background. Dispatches are persisted before send; interrupted external handoffs become a review state and are not silently retried.
  • Added qBittorrent API-key Bearer authentication while retaining username/password sessions and preventing fallback after key rejection.
  • Added durable folder scan generations with per-directory resume cursors, stable source-scoped identities, config-revision checks, atomic promotion, last-good retention, explicit rescan, and CUE/M3U media-set completeness (including nested CUE tracks).
  • Added a rollback-journal SQLite catalog for scan state, durable jobs/leases/cancellation, selection previews, and a Wanted outbox bridged idempotently to the existing Store. Added a consistent authenticated catalog backup endpoint and Settings download; updated Proxmox backup/rollback handling.
  • Added complete-inventory exports for ROMarr JSON, LaunchBox, Playnite, and ES-DE/EmulationStation. Added bounded XML/JSON import, path mapping, unknown-field retention, exact matching against a complete local scan, conflict preview, and atomic metadata commit. Imported cover URLs are not fetched.

Verification

  • python3 -m compileall -q romarr tests, bash -n proxmox/ct/update.sh, and git diff --check pass.
  • Direct smoke checks pass scan promotion/last-good retention, outbox idempotency and cancellation, SQLite backup integrity, ROMarr/XML parsing, atomic metadata rollback, Settings UI presence, and local folder scans for complete and incomplete M3U/CUE media sets.
  • The new focused pytest cases are added but could not run: the offline environment has no cached pytest or requests package. Earlier, before this follow-up, 101 focused tests and a separate catalog/Wanted HTTP regression passed; those results do not qualify the new changes.
  • The previous full-suite run was blocked by automatic review after an unexpected request to an untrusted external host. It was not retried or routed around.
  • Private-JIT qualification is blocked, not passed. The repository's AGENTS.md prohibits hosted fallback. PR ci(runners): route trusted owner PR validation through JIT #56 reports no registered group-5 runners and an unconfirmed C0/current-slot-owner handoff. No current-head workflow run or status exists, and this GitHub connection can inspect but not dispatch workflows. No exact-head private-JIT result is available.

Remaining qualification

R04, R05, and R13 source work is included; scale, restart/fault-injection, filesystem diversity, frontend round-trip, and package/runtime tests remain open. Catalog/list membership snapshots, broader durable worker migration, live backend matrices, browser journeys, and release qualification also remain open. PR #58's TTL in-memory cache remains open and is superseded here by durable generations; it was not merged. PR #56 remains open and unchanged.

@snapetech snapetech changed the title docs: plan ROMarrNG usability and compatibility for Luna feat: library-first collection and compatibility flows Oct 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant