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
feat(library): generalize the franchise collection kind to virtual and sync IGDB collections
Generalizes the internal `franchise` collection kind into a single ownerless `virtual` kind carrying a `virtual_type` sub-field, and syncs the two virtual collection types RomM treats as browsable collections: `franchise` (already supported) and IGDB `collection` (RomM's default virtual type — previously not synced).
**Why one `virtual` kind, not five:** RomM's virtual collections are one ownerless model with a `type` discriminator; every axis that affects sync — ownership (none), id/ROM-fetch, incremental-stampability (none — the view has no stable `updated_at`), membership shape — is identical across types. Only the display label differs, so the label becomes data (`virtual_type`) and the owner-filter, stamp-exclusion, and ROM-fetch dispatch each stay a single branch.
**Scope — `genre`, `company`, `mode` are intentionally excluded.** RomM surfaces `genre`/`company` as ROM filter facets, not browsable collections, and `mode` as neither (its Collections view browses one virtual type at a time, defaulting to IGDB `collection`). The supported set is a single constant, so adding a type later is a one-line change.
**Migration:** the `enabled_collections` `franchise` bucket is renamed to `virtual` (settings v10→v11). Existing franchise enables carry over losslessly — a virtual collection's id already encodes its type — so no re-login and no user action. Non-breaking.
UI: the "Franchise" sub-tab becomes "Virtual" and lists both types, each row tagged with its type label ("Franchise" / "IGDB Collection"). The collection-settings UI redesign for the growing type set is tracked separately (#1539).
Closes#1538.
0 commit comments