Cache cap: dropdown setting (no limit / 1/2/5/10 GB) stored in settings.cacheCap (actual eviction handled by native side). Export: downloads playlists as JSON via Blob. Import: file reader merges new playlists by id. yt-dlp: feature gate 'embed-ytdlp' (default on), skip with --no-default-features for faster debug builds. Files: - frontend/app.js: exportPlaylists/importPlaylists, cache cap select - src-tauri/Cargo.toml: [features] embed-ytdlp - src-tauri/src/main.rs: #[cfg(feature = embed-ytdlp)] guards
40 lines
1.9 KiB
Markdown
40 lines
1.9 KiB
Markdown
# 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).
|
|
- [x] Loading skeletons for search results instead of a bare "Searching…".
|
|
- [x] Keyboard-shortcut help overlay (press `?`), listing space / arrows / f / m.
|
|
- [x] Download/preload progress indicator on cards (percent or a bar, not just a pulse).
|
|
- [x] Remember and restore the last playback position per video.
|
|
- [x] Toast queue (stack multiple toasts instead of replacing).
|
|
|
|
## Features
|
|
- [x] Drag-to-reorder videos within a playlist.
|
|
- [x] "Up next" queue panel showing the autoplay queue.
|
|
- [x] Persistent mini now-playing bar when browsing other views.
|
|
- [x] Cache size cap in Settings (auto-evict oldest past a limit).
|
|
- [x] Export / import playlists as JSON.
|
|
- [x] More / trending quick-search chips on the hero, rotated.
|
|
|
|
## Robustness
|
|
- [x] Sanitize `video_id` in `cache_download` (reject path separators).
|
|
- [x] Gate the embedded yt-dlp behind a build flag so debug builds compile faster.
|
|
- [x] Surface yt-dlp extraction failures with a retry button.
|
|
|
|
## Done
|
|
<!-- move completed items here with the commit hash -->
|