Conversation
mini_profile converted database handles with Handle::from(String), which unwraps and panics when the handle fails ATProto validation (for example a reserved TLD like .example). Parse fallibly instead so malformed handles are dropped rather than crashing the request path. Adds coverage for the normalization and the invalid-handle drop.
Album pages were built entirely from indexed plays, so tracks that had never been scrobbled were missing, and albums with no plays returned 404. Cover art used the Cover Art Archive release art, which for some releases is an edition-specific placeholder rather than the album cover. getAlbum now merges the MusicBrainz release tracklist with observed plays, so every track appears in canonical order with a zero play count when unplayed. trackSummary.uri becomes optional because an unplayed track has no representative listen, and Amethyst renders those rows without a link. The release group MBID is now returned alongside the release and used first for cover art, falling back to the release art. This matches the canonical album art streaming services display.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
mmattbtw
added this pull request to stack #228
September 15, 2026 21:30
Artist albums and listen cards still rendered the edition-specific release cover, so releases whose edition art differs from the album (for example a5e766b8-650c-40ce-a19f-3dc3c865a3e2) showed the wrong image. Expose releaseGroupMbid on albumSummary from the MusicBrainz release list Aqua already fetches for release types, and prefer Cover Art Archive release-group art on the artist page, listener-leaderboard hero, and listen cards, falling back to release art. PlayFeedCard resolves the release group from MusicBrainz per release with an in-memory cache; the album page passes its known release group so its listen list needs no extra lookup.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #229 (
fix/public-dev-workflow→fix/complete-open-work). This PR only adds the two commits below and should merge after #229.Album tracklists
fm.teal.music.getAlbumwas built entirely from indexedplays, so tracks that had never been scrobbled were missing and albums with zero plays returned 404.playCount: 0.trackSummary.uriis now optional (an unplayed track has no representative listen); Amethyst renders those rows without a link.Cover art
Album pages used the Cover Art Archive release art, which for some releases is an edition-specific placeholder (e.g.
a5e766b8-650c-40ce-a19f-3dc3c865a3e2shows an "H.W." logo) rather than the canonical album cover.getAlbumnow returnsreleaseGroupMbid.Also included
fix(aqua):mini_profileno longer panics on invalid handles (Handle::from(String)unwraps); malformed handles are dropped.Verification
pnpm lex:gen/pnpm lex:validateSQLX_OFFLINE=true cargo check -p aqua -p cadet, Clippy cleancargo test -p aqua(24 passed, incl. new track-merge and handle tests)pnpm typecheck, Biome, Amethyst web export