docs: note in-app streaming and tile view

This commit is contained in:
vincent
2026-08-29 03:24:40 +02:00
parent f47bc3dab1
commit d976d111bf
+11 -4
View File
@@ -26,6 +26,12 @@ dialog names exactly what will be deleted before anything happens.
feed sorted by publish date. Thumbnails are mirrored to local disk so the feed still feed sorted by publish date. Thumbnails are mirrored to local disk so the feed still
renders with no network. renders with no network.
**Undownloaded videos stream in-app.** YouTube's iframe embed refuses a Tauri window —
its origin is `tauri://localhost`, not an http(s) origin, which produces "Error 153" — so
`yt-dlp` resolves YouTube's HLS master playlist instead. Its variants are H.264 + AAC up
to 1080p, which AVFoundation plays natively in WKWebView with adaptive bitrate. One player
element serves both local files and streams.
**Downloads shell out to `yt-dlp`,** pinned to H.264 video + AAC audio in an MP4 **Downloads shell out to `yt-dlp`,** pinned to H.264 video + AAC audio in an MP4
container. That caps quality at 1080p — YouTube only serves H.264 that high, and anything container. That caps quality at 1080p — YouTube only serves H.264 that high, and anything
above it is VP9 or AV1, which the app's own player cannot reliably decode. The tradeoff is above it is VP9 or AV1, which the app's own player cannot reliably decode. The tradeoff is
@@ -58,9 +64,10 @@ npm run tauri build -- --bundles app && cp -R src-tauri/target/release/bundle/ma
1. **Settings** — follow the seven-step Takeout guide, then **Import subscriptions.csv**. 1. **Settings** — follow the seven-step Takeout guide, then **Import subscriptions.csv**.
2. **Refresh** — pulls the latest videos from every channel. 2. **Refresh** — pulls the latest videos from every channel.
3. **Download** on any video — progress shows live on the button; click again to cancel. 3. **Download** on any video — progress shows live on the button; click again to cancel.
4. Click a **downloaded** video to play it in the app. Click an undownloaded one to open 4. Click any video to play it **in the app** — a downloaded one from disk, anything else
it on YouTube. streamed. Nothing hands off to a browser.
5. **Offline** — the app detects a lost connection and collapses the feed to your 5. **List or Tiles** — switch layouts in the top bar; the choice is remembered.
6. **Offline** — the app detects a lost connection and collapses the feed to your
downloads. The connectivity pill also toggles a forced offline mode for testing. downloads. The connectivity pill also toggles a forced offline mode for testing.
Videos land in `~/Movies/FlightTube` (changeable in Settings). Appearance follows the Videos land in `~/Movies/FlightTube` (changeable in Settings). Appearance follows the
@@ -104,7 +111,7 @@ src-tauri/src/
net.rs reachability probe net.rs reachability probe
commands.rs Tauri command surface — delegates only commands.rs Tauri command surface — delegates only
src/ src/
components/ Sidebar, TopBar, VideoRow, DownloadButton, Player, Settings components/ Sidebar, TopBar, VideoRow, VideoTile, DownloadButton, Player, Settings
components/ui.tsx the design system's component vocabulary, in one place components/ui.tsx the design system's component vocabulary, in one place
components/TakeoutGuide the seven-step export walkthrough components/TakeoutGuide the seven-step export walkthrough
hooks/ useFeed, useDownloads, useConnectivity, useAppearance hooks/ useFeed, useDownloads, useConnectivity, useAppearance