Commits
Add endpoint for personalized track recommendations
Implements the UI for the three recommendation endpoints added previously.
Web navbar shows the link only for the owner DID during the beta rollout.
Source badges (neighbour, new artist, serendipity) surface the reasoning
behind each pick. The For You tab in the app is hidden when not signed in
Adds app.rocksky.feed.getArtistRecommendations and
app.rocksky.feed.getAlbumRecommendations alongside the existing track
endpoint, covering all three tabs for the upcoming recommendations UI.
Artist recs scored by neighbour similarity 脳 decay; album recs split
across known-artist (unexplored albums from familiar artists) and
new-artist (albums from neighbour-discovered artists) pools.
Personalised track recommendations scored by neighbour similarity 脳
recency-decayed play count 脳 loved-track boost (5脳), with a 15%
serendipity pool from 1-hop artist expansion. Defined in pkl, generated
via pkl:gen + lexgen.
Updated project description and added key features section.
This covers the major threads: the full Search screen rewrite (correct
endpoint, flat hits shape, Feather icon), MiniPlayer with Rockbox WebSocket
controls and playback lock, app icon replaced with the Rocksky favicon, and
sign-in copy aligned with web/web-mobile (Handle label, atproto signup text,
selfhosted.social OAuth flow).
Adds app.rocksky.feed.getArtistRecommendations and
app.rocksky.feed.getAlbumRecommendations alongside the existing track
endpoint, covering all three tabs for the upcoming recommendations UI.
Artist recs scored by neighbour similarity 脳 decay; album recs split
across known-artist (unexplored albums from familiar artists) and
new-artist (albums from neighbour-discovered artists) pools.
This covers the major threads: the full Search screen rewrite (correct
endpoint, flat hits shape, Feather icon), MiniPlayer with Rockbox WebSocket
controls and playback lock, app icon replaced with the Rocksky favicon, and
sign-in copy aligned with web/web-mobile (Handle label, atproto signup text,
selfhosted.social OAuth flow).