Repository navigation
Personal discovery stage 2: the map (MAD-820, MAD-821) - #66
Merged
Merged
Conversation
GET /me/discover/map draws a graph around any artist, or around a set's seeds: neighbors near the most seeds first, and two steps out around an artist. Each artist says whether you have anything of theirs, whether they're a seed or the center, how many seeds they're near, and their fans, picture and tags. Each draws its three strongest likenesses, and artists you blocked are left out. It reads the music graph's cache and waits at most 5 seconds on the few artists it fetches. A slow fetch finishes in the background, the rest are warmed, and the map says it's partial so a reload shows more. Warm, it takes tens of milliseconds. GET /me/discover/songs lists an artist's songs you don't have, with previews, for the map's artist sheet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A Map tab beside a set's feed, and a map of any artist from Discover's search. It's laid out with d3-force, where alike artists sit close and well-known ones are bigger. Artists you have are dimmed and new ones are in full color. Seeds and the center are ringed, and artists near several seeds get a soft halo. Tap one to hear their songs (preview and YouTube), add them to a set, say they're not for you, or re-center on them. Each re-center is a step in the URL, so Back and the breadcrumbs retrace them. A new layout glides from the last one, and it stays calm, with nothing beat-reactive. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Stage 2 of Phase 12 (MAD-814): a music-map.com style map around an artist or a set.
MAD-820: the map API
GET /me/discover/map?artist=<name>[&mbid=]or?setId=, withdepth(1|2) andlimit(10–100, default 60).owned(libraryKnowsArtist),seed,center,blocked,seeds(overlap),hop,score, fans, picture, top tags, andknown. Edges are the graph's merged similarity. Each artist keeps only its 3 strongest edges, so a map doesn't turn into a hairball (warm live maps went from ~340–980 edges to ~140).partial: true.GET /me/discover/songs?artist=returns an artist's top songs you don't have (same filter as the feed), with Deezer IDs resolved for previews. The map's artist sheet uses it.lookertype, andresolveworks without a feed.Measured against live sources (ListenBrainz, Deezer, MusicBrainz):
MAD-821: the Map view
/discover/map?set=…&path=[…].AddToSetSheet)Tests
go test ./...andgolangci-lintare clean. New tests cover set and artist maps: overlap ranking, owned and blocked handling, the bounds and depth, warming without fetching neighbors, and artist songs. The HTTP test covers both endpoints.pnpm test,typecheckandlintare clean. New tests cover the layout (center pinned, alike artists closer, warm start), crumbs, and aMapGraphrender and select test.🤖 Generated with Claude Code