Add empty-state designs for empty playlists and history

Replaces bare status text with visual empty-state components:
- History: clock icon, 'Nothing watched yet' title, description, 'Search videos' CTA
- Playlist: music icon, 'This playlist is empty' title, description with tip, 'Browse videos' CTA
- Search: unchanged (hero landing handles this case)
- CTA buttons navigate to search view for quick action
This commit is contained in:
Jonathan Sykes
2026-06-14 13:55:48 +08:00
parent 4d5d105e70
commit 460aaae234
6 changed files with 137 additions and 5 deletions

39
BACKLOG.md Normal file
View File

@@ -0,0 +1,39 @@
# YT Player — Improvement Backlog
The `/loop` works through this top-to-bottom, **one item per iteration**. Tick an item
(`[x]`) only after it builds, verifies, and is committed + pushed. Add new ideas to the
bottom as they come up.
## Build & verify protocol (every iteration)
1. Edit the **canonical source** in WSL (`~/development/personal/ytplayer`).
2. Sync changed files **individually** into `C:\ytbuild\ytplayer` — never
`Copy-Item -Recurse` onto an existing dir (it nests as `frontend\frontend`).
3. `npx tauri build` in `C:\ytbuild\ytplayer`.
4. Launch with `--remote-debugging-port=922x` and verify via CDP/screenshot
(retry the launch a few times — Smart App Control is intermittent).
5. **Only if it builds and verifies:** refresh `releases/`, commit (no AI attribution),
`git push origin main`, then tick the item here.
## UX / polish
- [x] Empty-state designs for empty playlists and empty history (match the new hero).
- [ ] Loading skeletons for search results instead of a bare "Searching…".
- [ ] Keyboard-shortcut help overlay (press `?`), listing space / arrows / f / m.
- [ ] Download/preload progress indicator on cards (percent or a bar, not just a pulse).
- [ ] Remember and restore the last playback position per video.
- [ ] Toast queue (stack multiple toasts instead of replacing).
## Features
- [ ] Drag-to-reorder videos within a playlist.
- [ ] "Up next" queue panel showing the autoplay queue.
- [ ] Persistent mini now-playing bar when browsing other views.
- [ ] Cache size cap in Settings (auto-evict oldest past a limit).
- [ ] Export / import playlists as JSON.
- [ ] More / trending quick-search chips on the hero, rotated.
## Robustness
- [ ] Sanitize `video_id` in `cache_download` (reject path separators).
- [ ] Gate the embedded yt-dlp behind a build flag so debug builds compile faster.
- [ ] Surface yt-dlp extraction failures with a retry button.
## Done
<!-- move completed items here with the commit hash -->