When multiple audiobooks by the same author are added from sources that return slightly different name formatting — e.g. "George R.R. Martin" (no spaces around initials) vs "George R. R. Martin" (with spaces) — the Authors overview creates two separate author cards instead of one.
Environment: canary v1.11
Steps to reproduce:
- Add several audiobooks by the same author where at least one book has a slightly different author name format in its metadata (different spacing or punctuation around initials)
- Go to Library → switch to Authors view
- Two author cards appear for the same person with split book counts — one with most books and an author photo, one with the remaining book(s) and no photo
Expected behaviour: A single author card showing all books for that author, regardless of minor formatting differences in the underlying metadata.
Actual behaviour: Two separate cards are shown with the books split across the name variants. Clicking either card correctly shows all books in the detail view — only the overview grouping is affected.
Root cause:
AudiobooksView.vue's groupedCollections computed uses the exact raw string book.authors[0] as the Map key:
const keys =
groupBy.value === 'authors'
? book.authors?.[0] ? [book.authors[0]] : []
: getBookSeriesNames(book)
Since different metadata sources can return subtly different formatting for the same author, "George R.R. Martin" and "George R. R. Martin" land in separate groups.
Interestingly, CollectionView.vue already solves this with normalizeCollectionText (line 934), which collapses all non-alphanumeric characters to single spaces before comparing — that's why clicking either duplicate card shows all books. The fix already exists in the codebase, just not applied to the grouping step.
Suggested fix: Apply the same normalizeCollectionText normalisation as the Map key in groupedCollections, while keeping the raw name as the display value.
Secondary effect: The inconsistent name also creates a duplicate AuthorCacheEntry in the database, since the backend normalisation treats "R. R." and "R.R." as different strings. The secondary entry ends up with no image URL because the alternate author ASIN returned by Audible for that name variant has no image in Audnexus.
When multiple audiobooks by the same author are added from sources that return slightly different name formatting — e.g.
"George R.R. Martin"(no spaces around initials) vs"George R. R. Martin"(with spaces) — the Authors overview creates two separate author cards instead of one.Environment: canary v1.11
Steps to reproduce:
Expected behaviour: A single author card showing all books for that author, regardless of minor formatting differences in the underlying metadata.
Actual behaviour: Two separate cards are shown with the books split across the name variants. Clicking either card correctly shows all books in the detail view — only the overview grouping is affected.
Root cause:
AudiobooksView.vue'sgroupedCollectionscomputed uses the exact raw stringbook.authors[0]as the Map key:Since different metadata sources can return subtly different formatting for the same author,
"George R.R. Martin"and"George R. R. Martin"land in separate groups.Interestingly,
CollectionView.vuealready solves this withnormalizeCollectionText(line 934), which collapses all non-alphanumeric characters to single spaces before comparing — that's why clicking either duplicate card shows all books. The fix already exists in the codebase, just not applied to the grouping step.Suggested fix: Apply the same
normalizeCollectionTextnormalisation as the Map key ingroupedCollections, while keeping the raw name as the display value.Secondary effect: The inconsistent name also creates a duplicate
AuthorCacheEntryin the database, since the backend normalisation treats"R. R."and"R.R."as different strings. The secondary entry ends up with no image URL because the alternate author ASIN returned by Audible for that name variant has no image in Audnexus.