- 🌟 feat: expose album_uri and artist_uris on tracks f987df2 @devgianlu
- 🐞 fix: size the metadata cache to fit metadata.max_tracks a380903 @devgianlu
- 🌟 feat: fetch the user's rootlist from the playlist service 3755329 @devgianlu
- 🌟 feat: add GET /library/playlists 4f93e34 @devgianlu
- 🐞 fix: report login5 HTTP errors and retry transient ones 4c57fd6 @devgianlu
- 🐞 fix: answer API requests while logging in without zeroconf a662231 @SEKY443
- 🐞 fix: do not park an API handler on a request nothing takes ab6058e @SEKY443
- 🐞 fix: send the inactive state before closing the session 8f3aabf @devgianlu
- 🐞 fix: play a list of tracks that comes without a context uri 25f1745 @devgianlu
- 🐞 fix: take over idle when a transfer carries an empty context 0fe867e @devgianlu
- 🐞 fix(mpris): wait for the session bus instead of failing e55c3a5 @devgianlu
- 🐞 fix: gate cluster updates on the last activating command 35170a3 @devgianlu
- 🐞 fix: build playlist contexts from the playlist service eddd969 @devgianlu
- 🐞 fix: keep a caller's Content-Type on spclient requests 97a4fb5 @devgianlu
- 🌟 feat: save to Liked Songs and append to playlists via spclient 3dd4989 @devgianlu
- 🌟 feat: add POST /library/liked and /library/playlists/add_tracks 479f3fc @devgianlu
- 🌟 feat: read collection sets page by page via spclient e5e76b5 @devgianlu
- 🌟 feat: add GET /library/liked 35e6b09 @devgianlu
- 🐞 fix: list a context again after writing to it 90999ed @devgianlu
- 🐞 fix: require liked in POST /library/liked 353ff90 @devgianlu
- 🐞 fix: do not resend playlist changes on transient failures a7a3ad2 @devgianlu
- 🐞 fix: close races when invalidating a context listing 807c7f4 @devgianlu
- 🐞 fix: answer 403 and 404 for playlists the user may not edit or that are gone deb0f20 @devgianlu
- 🐞 fix: tell liked tracks with the collection service's contains 4dbc099 @devgianlu