# features ## frontend - Ribbon menu - [x] Show mpd connection state - [ ] Display config dialog (is this even needed?) - [x] `Update DB` button - [x] Disable if running update is detected - [x] `Previous Track` button - [x] `Next Track` button - [x] `Stop` button - [x] `Play` button - [x] `Pause` button - [x] Track seeker - [x] `Repeat` toggle - [x] `Shuffle` toggle - [ ] xfade - [ ] decrease - [ ] increase - [x] Volume - [x] increase - [x] decrease - [x] set with bar - [x] `Now playing` - [x] shows current track - [x] marquee effect - [x] `Time` - Queue - [x] Show queue - [x] Highlight current track - [ ] Move track up - [ ] Move track down - [ ] Remove track - [ ] `Clear queue` button? - File browser - [ ] List all directories - [ ] Selected folder has different icon (📂 vs 📁) - [ ] Folders with subfolders have a ➕ or ➖ sign - [ ] Clicked folders contents are displayed in the results - [ ] Select tracks in results - [ ] `Add` selected tracks to queue button - Search - [ ] Search files results - [ ] Select tracks in results - [ ] `Add` selected tracks to queue button - Playlist browser - [x] Show current playlists - [x] `Replace` current queue with playlist button - [x] `Attach` playlist to current queue button - [ ] `Save` current queue as playlist button - [x] Show dialog - [ ] `Delete` selected playlist button ## backend - Websocket - [x] `#status` requests mpd infos: - `status` - `currentsong` - `playlistinfo` (queue) - [ ] `#download` requests download of URL (`yt-dlp`) - *TBA* - API endpoints - [x] GET `/api/update_db` - [x] GET `/api/previous_track` - [x] GET `/api/next_track` - [x] GET `/api/stop` - [x] GET `/api/play` - [x] GET `/api/pause` - [x] GET `/api/seek/:seconds` - [x] GET `/api/repeat` - [x] GET `/api/random` - [x] GET `/api/volume/:level` - [ ] `/api/xfade/:seconds` - [ ] `/api/queue_clear` - [ ] POST `/api/queue` `{"song_id": 123}` - [x] GET `/api/queue/:song_id/delete` - [x] GET `/api/queue/:song_id/move/:position` - [x] GET `/api/queue/replace/:playlist_name` - [x] GET `/api/queue/attach/:playlist_name` - [ ] `/api/list_database/:path` - [x] GET `/api/playlists` - [x] GET `/api/playlists/:name` - [ ] `/api/save_playlist` - [ ] `/api/delete_playlist`