Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,36 @@ reproducibility. See [MusicBrainz Data License](https://musicbrainz.org/doc/Abou
and [MusicBrainz API](https://musicbrainz.org/doc/MusicBrainz_API). Album covers
remain out of scope for this issue.

### Catalog quality (#64)

We checked the snapshot and the imported catalog (516 albums with the sample
seed) for duplicates, missing metadata, artist and genre links and track order.
Every sort was paged through the whole result set without gaps or repeats, and
the facet counts match the filtered totals. Fixes from the check:

- MusicBrainz writes hyphens as U+2010, so "esa-pekka" or "switched-on" found
nothing. The importer now stores ASCII hyphens.
- Artists are shown in credit order ("Bob James, David Sanborn"), not in the
order their rows happened to be created.
- A reimport replaces artists, genres and tracks the snapshot no longer has,
instead of keeping the old ones next to the new ones. Reviews and crate items
are kept.

Remaining limitations:

- Only 50 of the 500 albums have a track list, taken from one official release
of the release group. The album page says when there are no tracks.
- Seven albums have no release year. They sort last and have no decade facet.
- Search is not accent-insensitive: "beyonce" does not find "Beyoncé", and
names in other scripts (for example Mulatu Astatke as ሙላቱ አስታጥቄ) only match
as written.
- Artists are matched by name, so two different artists with the same name
would share a row. None were found in the snapshot.
- Classical albums credit the composer as an artist, and compilations use
"Various Artists", as MusicBrainz does.
- Same title and artist is not always a duplicate: Color Humano released three
albums called "Color Humano" (1972-1974), kept as three albums.

### Scalability check

Use a separate test database, not the shared catalog. Apply migrations, run the large seed and start the API. The SQL checks and GraphQL request are committed in the repository.
Expand Down
1 change: 1 addition & 0 deletions docs/AI-USAGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ the part that matters most.
| 2026-10-28 | evenkkl | Claude | #12, review fixes on #66. Robert asked for an up-to-date branch, a correct README and green CI. Claude merged main, renumbered our migration to `0003` after #63's `0002`, kept both sides of the other conflicts, fixed a duplicate import from the merge, updated the README status sections and added the sort control to the Load more keyboard test. I checked the diff against main contains only our sorting work and these fixes. |
| 2026-10-28 | evenkkl | Claude | #13 review fixes on PR #65: merged main (infinite scroll), resolved conflicts, added a Filters button for small screens and reconciled the README. Even settled the open review questions and updated the issue text. |
| 2026-10-29 | evenkkl | Claude | #13 second review round on PR #65: merged main (sorting), selected filters stay in the facets, Filters dropdown on all screens, PostgreSQL tests for AND/OR and facet counts, doc wording. Even chose the dropdown layout. |
| 2026-11-05 | evenkkl | Claude | #64 catalog check: scripts that compared the snapshot and the imported catalog against search, sorting, paging and facets; fixes for U+2010 hyphens in search, artist credit order and stale links on reimport; PostgreSQL tests and README limitations. |

## Notes

Expand Down
5 changes: 4 additions & 1 deletion docs/data-model.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@ catalog data. The separate MusicBrainz importer adds real catalog records from
the committed snapshot without deleting albums, tracks, reviews or crate items.
It matches an existing hand-seeded album by title and primary artist before
assigning its MusicBrainz ID, preserving its database ID and user data. The
unique MusicBrainz release-group ID makes repeat imports idempotent.
unique MusicBrainz release-group ID makes repeat imports idempotent. For the
albums in the snapshot, a reimport replaces artist links, genre links and
tracks with the snapshot's, and removes artists and genres it left unused.
`album_artist.position` keeps the credit order (migration `0004`).

The local snapshot keeps one record per release group, not per pressing or
reissue. It stores normalized genre names and any available track data. The
Expand Down
1 change: 1 addition & 0 deletions server/drizzle/0004_album-artist-position.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE "album_artist" ADD COLUMN "position" smallint DEFAULT 0 NOT NULL;
Loading