commit 69dab761f1a4a198221f871b2685820b02058428 Author: vincent Date: Sat Aug 29 02:16:47 2026 +0200 Add FlightTube design spec Offline-first YouTube subscription feed reader: Takeout CSV import, public Atom feeds for metadata, yt-dlp downloads constrained to H.264/AAC for in-app WKWebView playback. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c9d6c88 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +dist/ +target/ +.DS_Store +*.db diff --git a/docs/superpowers/specs/2026-08-29-flighttube-design.md b/docs/superpowers/specs/2026-08-29-flighttube-design.md new file mode 100644 index 0000000..4659f9e --- /dev/null +++ b/docs/superpowers/specs/2026-08-29-flighttube-design.md @@ -0,0 +1,178 @@ +# FlightTube — Design Spec + +**Date:** 2026-08-29 +**Status:** Approved for implementation +**Type:** Proof of concept + +## Purpose + +A Tauri desktop app that presents every video from the user's YouTube subscriptions as a +single feed sorted newest-first, downloads chosen videos to local disk, and — when the +machine is offline — shows only what has been downloaded. + +The driving use case is the app's name: load up before a flight, watch without a network. + +## Constraints and decisions + +These were settled during brainstorming and are not open questions. + +| Decision | Choice | Rationale | +|---|---|---| +| Subscription source | Google Takeout `subscriptions.csv` import | No OAuth, no API key, no cloud console setup, no secrets on disk | +| Video metadata source | Public per-channel Atom feed `youtube.com/feeds/videos.xml?channel_id=…` | Public, unauthenticated, gives title/date/thumbnail/views/description | +| Download engine | `yt-dlp` subprocess | Only approach that survives YouTube's format changes | +| Quality | H.264 + AAC, 1080p ceiling | Must play in the app's own WKWebView player; no external player fallback | +| Playback | In-app `