Files
ytplayer/BACKLOG.md
Jonathan Sykes c676786144 Add keyboard-shortcut help overlay
Press '?' to open a styled overlay showing all keyboard shortcuts,
Esc to close. Lists Space (play/pause), arrow keys (seek/volume),
F (fullscreen), M (mute), ? (help), Esc (close).

Files:
- frontend/app.js: toggleShortcutHelp(), wireShortcutHelp(), '?' and Esc handlers
- frontend/index.html: shortcut-overlay markup with .shortcut-grid
- frontend/styles.css: .shortcut-overlay, .shortcut-panel, .shortcut-row, kbd styles
2026-06-14 14:19:42 +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