Files
ytplayer/BACKLOG.md
Jonathan Sykes 4376cd9e88 Add up-next queue panel
Shows upcoming videos in the autoplay queue below now-playing meta.
Clickable to jump to any video. Hidden when queue has 1 item or empty.
Updates on playFromList, playNext, playPrev. Hidden in empty player state.

Files:
- frontend/index.html: upnext section in player pane
- frontend/app.js: renderUpNext(), wired into playFromList/playNext/playPrev
- frontend/styles.css: .upnext, .upnext-item, .upnext-list styles
2026-06-14 14:44:52 +08:00

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)

  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

  • 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