General UI improvement pass. Each item is independent and small enough to land separately; all grounded in current components.
Library (src/components/LibraryView.jsx)
Now Playing (src/components/Player.jsx)
Playlists (src/components/PlaylistsView.jsx)
Feedback & notices
Search (src/components/SearchView.jsx)
Acceptance criteria
Each checkbox is a self-contained PR; no data-model changes required for any of them.
General UI improvement pass. Each item is independent and small enough to land separately; all grounded in current components.
Library (
src/components/LibraryView.jsx)dateAdded,playCountare even indexed indb.js) — this is pure UILibraryView.jsx:50). Replace with a centered empty state: icon, one-line explanation of the Files→Import flow, and a prominent Import button (reuseImportButton)Now Playing (
src/components/Player.jsx)useLongPress.jsshows the touch-handling pattern to follow; ensure no conflict with tap-to-expand)Playlists (
src/components/PlaylistsView.jsx)Artwork.jsxalready resolves per-track art + fallback) instead of a generic tileFeedback & notices
importnoteinImportButton.jsx) with a toast component that slides above the dock and auto-dismisses — reusable for "added to playlist", sync results (see the a-Shell sync issue), and update noticesImporting… (n)); add a thin determinate progress barSearch (
src/components/SearchView.jsx)playCount/lastPlayedAtalready stored)Acceptance criteria
Each checkbox is a self-contained PR; no data-model changes required for any of them.