feat(music): complete music UI overhaul - bugs, UX, missing features & styling

- Fix dead buttons (fa-edit/fa-share → fa-pen/fa-share-alt matching icon registry)
- Fix volume icon, shuffle bias, queue removal, repeat-one CSS
- Replace native prompt/confirm/alert with Modal system
- Add click-to-select, dblclick-to-play, playback error notifications
- Add loading indicators, success toasts, close player button
- Implement remove track from playlist (DELETE endpoint)
- Implement drag & drop track reorder (PUT reorder endpoint)
- Implement manage shares dialog (GET/DELETE shares endpoints)
- Implement cover art upload & display (cover_file_id in UpdatePlaylistDto)
- Implement public/private toggle (is_public in UpdatePlaylistDto)
- Mount get_audio_metadata route in backend routes.rs
- Redesign empty state: full-width centered onboarding when 0 playlists
- Move create button into sidebar header as compact + button
- Add music.css to build.rs production CSS bundle
- Add 16+ i18n keys in en.json and es.json
- Add CSS for drag handles, track remove, cover overlay, shares dialog, public badge
This commit is contained in:
Diocrafts
2026-04-11 10:59:01 +02:00
parent 6880edf641
commit 3ce8ec25d6
7 changed files with 1166 additions and 241 deletions
+4
View File
@@ -386,6 +386,10 @@ pub fn create_api_routes(app_state: &Arc<AppState>) -> Router<Arc<AppState>> {
"/{playlist_id}/shares",
get(music_handler::get_playlist_shares),
)
.route(
"/audio-metadata/{file_id}",
get(music_handler::get_audio_metadata),
)
.with_state(music_svc.clone());
router = router.nest("/playlists", music_router);