Add offline cache & preload, Save/add-to-playlist UI, Settings page; player stream fallback + progressive-first ordering; protocol-asset feature; refresh Windows installers
This commit is contained in:
33
README.md
33
README.md
@@ -18,6 +18,13 @@ or Node runtime.
|
||||
- 🎵 **Audio-only mode** — great for music, saves bandwidth
|
||||
- 📂 **On-device playlists** — create, rename, delete, add/remove videos. Stored
|
||||
locally as JSON; nothing leaves your machine
|
||||
- 💾 **Offline cache / preload** — a **Save** button and an **Add to playlist**
|
||||
button on the now-playing video download a self-contained copy into a permanent
|
||||
file cache, so it plays instantly and works offline. Videos added to a playlist
|
||||
are auto-preloaded and kept until you remove them.
|
||||
- ⚙ **Settings page** — playback defaults (quality, volume, audio-only) plus cache
|
||||
management: see storage used, toggle auto-preload, and delete cached videos
|
||||
individually or all at once
|
||||
- 🕘 **Watch history**
|
||||
- ⏯ Full controls: seek, volume, playback speed, quality switching, fullscreen,
|
||||
next/prev, and keyboard shortcuts (`space`, `←/→`, `f`, `m`)
|
||||
@@ -57,6 +64,17 @@ The web UI talks to the native side over whichever bridge is present
|
||||
| `yt.streams { videoId }` | `ytStreams` | `{ ok, data:{ meta, audioUrl, qualities[] } }` |
|
||||
| `store.load {}` | `storeLoad` | playlists / history / settings |
|
||||
| `store.save { data }` | `storeSave` | `{ ok }` |
|
||||
| `cache.download { videoId }` | `cache_download` | downloads a single-file copy into the offline cache |
|
||||
| `cache.status { videoId }` | `cache_status` | `{ ok, cached, path?, size? }` |
|
||||
| `cache.list {}` | `cache_list` | `{ ok, items:[{id,size,path}], total }` |
|
||||
| `cache.delete { videoId }` | `cache_delete` | removes one cached file |
|
||||
| `cache.clear {}` | `cache_clear` | removes all cached files |
|
||||
|
||||
> The offline cache is implemented in the **Tauri (Windows)** shell. Files live
|
||||
> in `<app_cache_dir>/videos/<videoId>.<ext>` and persist until deleted from the
|
||||
> Settings page. The frontend falls back to live streaming if a cached file is
|
||||
> missing, and the cache calls degrade gracefully on shells that don't implement
|
||||
> them.
|
||||
|
||||
Because the bridge is size-limited, the Zig handlers parse `yt-dlp`'s large JSON
|
||||
and return only the compact fields the UI needs.
|
||||
@@ -98,6 +116,21 @@ The installer lands in
|
||||
`src-tauri\target\release\bundle\` (`nsis\*-setup.exe` and `msi\*.msi`).
|
||||
`yt-dlp.exe` is bundled as an app resource, so the installed app is self-contained.
|
||||
|
||||
### One-shot release
|
||||
|
||||
`scripts\release.ps1` does the whole flow — build, copy installers into
|
||||
`.\releases`, then commit and push through WSL git:
|
||||
|
||||
```powershell
|
||||
pwsh -File scripts\release.ps1
|
||||
```
|
||||
|
||||
To only commit + push from WSL (e.g. after building separately):
|
||||
|
||||
```bash
|
||||
bash scripts/push.sh "your commit message"
|
||||
```
|
||||
|
||||
> Already in WSL and just want it running fast? Your WSL is WSLg-enabled, so you
|
||||
> can instead build the **Linux** (zero-native) target and its window appears on
|
||||
> your Windows desktop — see [Setup & run](#setup--run). That needs WSL running
|
||||
|
||||
Reference in New Issue
Block a user