Skip to content

Smart playlist UI#1693

Open
dmoo500 wants to merge 11 commits intomusic-assistant:mainfrom
dmoo500:feature/smart-playlist-ui
Open

Smart playlist UI#1693
dmoo500 wants to merge 11 commits intomusic-assistant:mainfrom
dmoo500:feature/smart-playlist-ui

Conversation

@dmoo500
Copy link
Copy Markdown
Contributor

@dmoo500 dmoo500 commented Apr 10, 2026

Smart Playlist UI

Frontend companion to the Smart Playlist plugin (music-assistant/server#3630).

Features

  • Create Smart Playlist dialog: name, mode (dynamic/fixed), track count, full rules form
  • Edit Smart Playlist dialog: loads existing rules, saves changes
  • SmartPlaylistRulesForm shared component used by both dialogs
  • Rules: Genre (multi-select), Artist (search), Album (search), Favorites toggle, Min. popularity slider, Year range, Logic AND/OR
  • Seed track picker: Popover search filtered to providers with SIMILAR_TRACKS feature; selected track shown as Badge; restores on re-open via api.getItemByUri
  • Artist and Album pickers are disabled when a seed track is active (incompatible on server side)
  • Hint text shown under Artist/Album when seed overrides them
  • seed_track_name stored alongside URI for human-readable playlist description
  • @keydown.stop on all inputs inside dialogs (reka-ui Dialog intercepts keydown otherwise)
  • Year inputs use uncontrolled DOM refs to avoid re-render interference

Moos, Daniel added 4 commits April 9, 2026 23:30
- Replace seed track URI text input with Popover-based track search
- Search filters to providers with SIMILAR_TRACKS feature
- Selected track shown as Badge with artist name and X button
- Saved seed_track_uri is restored via api.getItemByUri on load
- Add seed_track_name field to SmartPlaylistRules interface
- Disable artist/album pickers when seed track is active (incompatible)
- Show hint text under artist/album when seed overrides them
- Update translations: seed_track, seed_track_pick, seed_overrides_filter
@OzGav
Copy link
Copy Markdown
Contributor

OzGav commented Apr 10, 2026

Screenshots would be handy?

@dmoo500
Copy link
Copy Markdown
Contributor Author

dmoo500 commented Apr 11, 2026

@OzGav Thanks for the feedback! I've started a discussion on the Discord to gather broader input on the final approach — "Smart Playlists — picking up the existing board item" — and you'll also find screenshots there. That said, I've already put together a first version as draft PRs (for server and this for the frontend), so any feedback on the current implementation is very welcome too!

@dmoo500
Copy link
Copy Markdown
Contributor Author

dmoo500 commented Apr 16, 2026

Screenshots:

plugin enabled:
Bildschirmfoto 2026-04-16 um 18 47 21

new menu item if smart playlist activated:
Bildschirmfoto 2026-04-16 um 18 44 23

dynamic playlist option (saving as dynamic playlist):
create_dynamic_playlist_en 2

ontime playlist option (saving as "normal" playlist):
create_ontime_playlist_en

@dmoo500 dmoo500 marked this pull request as ready for review April 16, 2026 16:50
@dmoo500
Copy link
Copy Markdown
Contributor Author

dmoo500 commented May 2, 2026

Refactor smart playlist UI to match MA design language

  • SmartPlaylistRulesForm.vue: AND/OR logic RadioGroup → Tabs; HelpCircle Popovers → Vuetify v-tooltip (:z-index="10000" required due to Dialog's !z-[9999]); popularity <input type="range"> → shadcn Slider
  • CreateSmartPlaylistDialog.vue: mode RadioGroup → Tabs; Separator removed; track count moved from footer to under form
  • EditSmartPlaylistDialog.vue: Separator removed; track count moved from footer to under form

Screenshots updated in the last comment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants