Add cache cap, playlist export/import, yt-dlp build flag

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
This commit is contained in:
Jonathan Sykes
2026-06-14 15:29:10 +08:00
parent c6b8dfceb8
commit d15d9021b7
7 changed files with 83 additions and 6 deletions

View File

@@ -26,13 +26,13 @@ bottom as they come up.
- [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.
- [ ] Cache size cap in Settings (auto-evict oldest past a limit).
- [ ] Export / import playlists as JSON.
- [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).
- [ ] Gate the embedded yt-dlp behind a build flag so debug builds compile faster.
- [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