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(collections): add a collection naming mode to keep same-named types separate (#1569)
Now that franchise and IGDB-collection virtual types both sync,
collections of different types that share a name silently merge into one
Steam collection (#1503's by-name union) — two enabled rows collapse
into one Steam collection with no way to tell them apart. This adds a
user setting to opt out of that merge, and fixes a related
case-collision that could drop games.
## `collection_naming_mode`
A new setting in Settings → Library, default `merge` (unchanged
behaviour):
- **`merge`** (default) — same-named collections union into one `RomM:
[<name>] (<host>)`.
- **`by_label`** — each Steam collection name carries its type label so
distinct groupings stay separate: `RomM: [<name> (Franchise)] (<host>)`,
`RomM: [<name> (IGDB Collection)] (<host>)`, `RomM: [<name> (Smart)]
(<host>)`, `RomM: [<name> (Standard)] (<host>)`. Collections that share
both name and type still union.
The label is injected at the reporter's union key, so the frontend
create-name and the stale-collection reconcile stay derived from a
single key. Switching modes renames every collection on the next normal
sync — the existing complete-set reconcile deletes the old-named
collections and recreates them under the new scheme; no Force Full Sync
is needed.
Toggle copy: "Distinguish collection types in Steam names — Adds the
collection type (e.g. Franchise, IGDB Collection) to the Steam
collection name so collections that share a name stay separate instead
of merging into one. Applies on the next sync."
## Case-insensitive name identity
Collections whose names differ only by case previously produced two
separate keys under `merge`, which Steam then collapsed by its own
case-insensitive collection identity — silently overwriting one with the
other and dropping its games. Collection and platform name identity is
now case-insensitive throughout (the reporter union, the frontend
create/find, the stale-collection reconcile, and the cleanup paths), so
case-variants union into a single collection instead of clobbering each
other. First-seen casing is kept for display (Steam uppercases the name
regardless).
## Migrations
- Settings migrate to v13: the `enabled_collections` bucket keyed `user`
is renamed to `standard` (lossless; merged into an existing `standard`
bucket if present).
- A database migration renames the stored kind on existing collection
sync-state rows, so no standard collection is needlessly re-fetched
after the update.
Docs (syncing guide, Steam-shortcuts architecture) and the glossary are
updated in the same change.
Closes#1539.
0 commit comments