Skip to content

feat: merge duplicate artists and split collab albums (#47)#76

Merged
klay2000 merged 4 commits into
mainfrom
issue-47
Jun 15, 2026
Merged

feat: merge duplicate artists and split collab albums (#47)#76
klay2000 merged 4 commits into
mainfrom
issue-47

Conversation

@klay2000

Copy link
Copy Markdown
Owner

Summary

  • Adds optional merging of case-insensitive duplicate artist entries (e.g. "AC/DC" / "Ac/Dc") into a single entry with a canonical display name
  • Adds optional splitting of "Artist A feat. Artist B" style combination entries so their albums show up on each component artist's own page
  • New Settings → Library section to toggle both, plus configurable separator tokens (feat., ft., vs., with, &, ,) for the collab splitting
  • Both settings default to off (opt-in)

Closes #47

Test plan

  • npm test (49/49 passing, includes new artistMergeLogic tests)
  • npm run build
  • Manual: Settings → Library → toggle "Merge duplicate artists" and "Collab albums", verify Artists list and Artist pages behave as expected

klay2000 added 4 commits June 15, 2026 00:17
Adds client-side merging for two common library quirks:

- Artist entries that differ only by casing (e.g. "AC/DC" vs "Ac/Dc")
  are combined into one A-Z list entry with a canonical display casing
  (most common casing, ties broken toward more uppercase then
  alphabetical).
- Artist entries whose name matches a combination pattern like
  "X & Y", "X feat. Y", "X ft. Y", "X vs. Y", "X with Y" or "X, Y" have
  their albums also shown on each component artist's page.

Both behaviors are controlled by new Settings toggles under a "Library"
section (mergeCaseDuplicates, splitCollabAlbums in
src/lib/stores/artistMerge.js), both default to on. Pure
matching/splitting/casing logic lives in artistMergeLogic.js with unit
tests. The artist index is cached in-memory via getArtistsCached() so
the artist page doesn't re-fetch it.
Add a settings UI to choose which separator tokens (feat., ft., vs.,
with, &, ,) count as joining a combination-artist entry, and fix the
default "feat." regex to correctly consume the trailing period.
Let users opt in to case-duplicate merging and collab album
splitting rather than enabling them automatically.
@klay2000 klay2000 merged commit f157f57 into main Jun 15, 2026
1 check passed
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.

Duplicate and Merge Feat. Albums

1 participant