You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is the meta-tracker for adding one-click Nexus Collections install to RipperMod Manager (Nexus edition). Asked for by CptAnonymou5 on Nexus, scoped after a full investigation of how Vortex does it and how MO2 deliberately does not.
Scope decision: Opción B — full support, premium and free-tier. Premium users get a direct download flow; free users get the same sequential nxm:// dialog Vortex uses (one Mod Manager Download click per mod, in order).
Compliance notes
Read-only metadata + per-file downloads through the same Nexus API path RipperMod uses today. No auto-update of the manager itself. Free-tier flow forces user-initiated browser clicks per mod, matching the Nexus distribution policy.
Phase 1 — Foundation (premium-friendly first, free-aware schema)
PR A — Extend GraphQL collectionRevision query to fetch full manifest (fileId, name, version, size, choices, phase, instructions). Add nxm://<game>/collections/<slug>/revisions/<rev> parsing to the frontend deep-link handler. Tests.
PR B — DB schema: new installed_collections table (slug, revision_id, installed_revision_number, latest_revision_number, status, started_at, finished_at), installed_mods.installed_collection_id FK + collection_phase + is_optional, download_jobs.installed_collection_id for batch tracking. Idempotent migration in database.py.
PR C — Collection install orchestrator service (services/collection_install_service.py): resolve revision → manifest, plan ordered by phase, loop per phase, deploy once at phase end. REST endpoints (GET /api/v1/collections/{slug}/revision/{rev} for preview, POST /api/v1/games/{name}/collections/install to kickoff, GET /api/v1/collections/{id}/status SSE). Premium path only in this PR.
PR D — Non-interactive FOMOD driver: helper that translates collection choices format → existing dict[int, dict[int, list[int]]] schema. Add auto_deploy: bool = True flag to install_fomod to match install_mod. Tests for plugin-name lookup + graceful failure when a recorded choice no longer matches the FOMOD.
PR E — Frontend: CollectionPreviewDialog (preview manifest before install), CollectionInstallProgress (live SSE), CollectionFinishedDialog (summary).
PR F — Integration in Installed tab: collapsable groups per collection, uninstall-whole-collection action.
Phase 2 — Free-tier flow
PR G — FreeUserDownloadDialog: sequential per-mod dialog mirroring Vortex's design. Shows current mod / total, opens the mod page in browser, waits for nxm://...?key=&expires= callback, retries on premium-status flip. Skip / Cancel actions per mod.
PR H — Concurrency semaphore in download_service.py (cap at e.g. 3 parallel downloads). Required for large collections — currently every create_and_start_download spawns a loose task with no cap.
PR I — Update detection: compare installed revision against latestPublishedRevision.revisionNumber, surface an "Update available" pill on the collection group. Trigger re-install at new revision.
Out of scope (deliberate)
No collection authoring/uploading — install-side only. Users wanting to publish a collection still use Vortex.
No collection sharing between games — one collection lives in one game (matches Nexus's own data model).
No partial-collection updates — Phase 2 update flow re-installs the whole collection at the new revision; per-mod diffing is too brittle.
Nexus Collections install — public roadmap
This is the meta-tracker for adding one-click Nexus Collections install to RipperMod Manager (Nexus edition). Asked for by
CptAnonymou5on Nexus, scoped after a full investigation of how Vortex does it and how MO2 deliberately does not.Scope decision: Opción B — full support, premium and free-tier. Premium users get a direct download flow; free users get the same sequential
nxm://dialog Vortex uses (one Mod Manager Download click per mod, in order).Compliance notes
Read-only metadata + per-file downloads through the same Nexus API path RipperMod uses today. No auto-update of the manager itself. Free-tier flow forces user-initiated browser clicks per mod, matching the Nexus distribution policy.
Phase 1 — Foundation (premium-friendly first, free-aware schema)
collectionRevisionquery to fetch full manifest (fileId,name,version,size,choices,phase,instructions). Addnxm://<game>/collections/<slug>/revisions/<rev>parsing to the frontend deep-link handler. Tests.installed_collectionstable (slug, revision_id, installed_revision_number, latest_revision_number, status, started_at, finished_at),installed_mods.installed_collection_idFK +collection_phase+is_optional,download_jobs.installed_collection_idfor batch tracking. Idempotent migration indatabase.py.services/collection_install_service.py): resolve revision → manifest, plan ordered by phase, loop per phase, deploy once at phase end. REST endpoints (GET /api/v1/collections/{slug}/revision/{rev}for preview,POST /api/v1/games/{name}/collections/installto kickoff,GET /api/v1/collections/{id}/statusSSE). Premium path only in this PR.choicesformat → existingdict[int, dict[int, list[int]]]schema. Addauto_deploy: bool = Trueflag toinstall_fomodto matchinstall_mod. Tests for plugin-name lookup + graceful failure when a recorded choice no longer matches the FOMOD.CollectionPreviewDialog(preview manifest before install),CollectionInstallProgress(live SSE),CollectionFinishedDialog(summary).Phase 2 — Free-tier flow
FreeUserDownloadDialog: sequential per-mod dialog mirroring Vortex's design. Shows current mod / total, opens the mod page in browser, waits fornxm://...?key=&expires=callback, retries on premium-status flip. Skip / Cancel actions per mod.download_service.py(cap at e.g. 3 parallel downloads). Required for large collections — currently everycreate_and_start_downloadspawns a loose task with no cap.latestPublishedRevision.revisionNumber, surface an "Update available" pill on the collection group. Trigger re-install at new revision.Out of scope (deliberate)
Reference
extensions/collections/src/+src/renderer/src/extensions/nexus_integration/collection.jsonper Vortex typesWant to follow along?
Comment 👍 on this issue and you'll get pinged when each PR lands. ETA for first usable premium-only build: a few weeks once PR A starts.