Self-hosted web interface and downloader for Qobuz.

feat(web): add playlist import and management web UI #2

Open glerp.sullen.net
targeting main from glerp.sullen.net/gobuz:feat/playlist-import
Open opened by and assigned to glerp.sullen.net
targeting main from glerp.sullen.net/gobuz:feat/playlist-import

Depends on #21 (feat/playlist-service) · Stacked-Only Diff (b96f3d18..a4d2811d)

Summary #

  • Mount /playlists controller (GET /playlists, GET /playlists/detail, GET /playlists/cover, POST /playlists/delete, POST /playlists/preview, POST /playlists/import) when playlist_dir is configured and wire Library.SetOnScan and Manager.SetOnIncomplete settlement hooks.
  • Render pending playlists as first-class playlist cards on /playlists (with a pending badge and remote cover URL fallback) and openable detail pages on /playlists/detail with pending tracks greyed out and playback disabled until settled.
  • Unify Spotify and ListenBrainz fetching and preview caching inside playlist.Service by canonical resource key so playlists.Controller stays stateless.
  • Update README.md and CHANGELOG.md.

Stack #

  1. b96f3d18 — feat(playlist): add playlist service and sidecar cover generation (#21)
  2. 0676124b — feat(web): add playlist import endpoints
  3. a4d2811d — docs: document playlist import
Commits 0