Rotating chips: 4 sets of 4 chips rotate every 8 seconds on the hero landing. Sanitize video_id: new sanitizeId() strips path separators and dangerous chars. Retry button: appears on stream extraction failure, re-triggers Player.loadVideo. Files: - frontend/app.js: sanitizeId(), CHIP_SETS + rotateChips(), retry button in loadVideo catch
1.9 KiB
1.9 KiB
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)
- Edit the canonical source in WSL (
~/development/personal/ytplayer). - Sync changed files individually into
C:\ytbuild\ytplayer— neverCopy-Item -Recurseonto an existing dir (it nests asfrontend\frontend). npx tauri buildinC:\ytbuild\ytplayer.- Launch with
--remote-debugging-port=922xand verify via CDP/screenshot (retry the launch a few times — Smart App Control is intermittent). - Only if it builds and verifies: refresh
releases/, commit (no AI attribution),git push origin main, then tick the item here.
UX / polish
- 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_idincache_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.