mirror of
https://github.com/yattee/yattee.git
synced 2026-05-12 18:35:05 +00:00
56cd60a8ba340126ae6c0c40c557ace32298a38d
Three end-to-end specs that exercise the new basic-auth flows against a
real Invidious instance fronted by an nginx reverse proxy:
1. add flow: types the URL, hits Detect, fills the basic-auth fields
when the basicAuthRequired UI state appears, taps Retry Detection,
and confirms the instance lands in the Sources list.
2. state assertion: types a URL, taps Detect, and verifies the form
transitions into the basicAuthRequired state (Retry Detection button
present, no detected type) when no credentials were supplied.
3. proxied login: ensures the instance exists, then drives the standard
Invidious login flow with the proxied account credentials. Confirms
the SID Cookie auth coexists with the per-client Authorization
header on the basic-auth-aware HTTPClient.
Test infrastructure additions:
- spec/ui/support/config.rb: env-driven accessors for the basic-auth URL
and proxied-account credentials. No secrets committed.
- spec/ui/support/instance_setup.rb: helpers
add_invidious_with_basic_auth, remove_and_add_invidious_with_basic_auth,
find_basic_auth_text_fields (mirroring find_auth_text_fields), and
fill_field for tapping a discovered field by frame and typing into it.
All three specs skip cleanly when the relevant env vars are not set.
Install
Features
Playback
- 4K video with custom MPV-based player (H.264, H.265, VP9, AV1)
- Picture in Picture, background audio, fullscreen
- Playback queue, history, resume from last position
- Chapter navigation, playback speed, subtitles and captions
- Gesture controls (seek, volume, brightness)
- Seek preview with storyboards
Content Sources
- YouTube via Invidious, Piped, or self-hosted Yattee Server
- PeerTube instances (federated video)
- Local files, SMB network shares, WebDAV servers
Integrations
- SponsorBlock (configurable skip categories)
- DeArrow (crowdsourced titles and thumbnails)
- Return YouTube Dislike
Privacy
- No tracking, no ads, no account required
- All traffic goes through your chosen instances
Library
- Subscriptions with per-channel notifications
- Bookmarks with tags and notes, playlists, watch history
- Unified search across all configured sources
- Import/export subscriptions (JSON, CSV, OPML)
Downloads & Sync
- Offline video and audio downloads with quality selection
- iCloud sync for bookmarks, subscriptions, history, and settings across devices
- Handoff continuity between iPhone, iPad, Mac, and Apple TV
Apple Ecosystem
- iOS 18+ / macOS 15+ / tvOS 18+
- Native SwiftUI on every platform
- Customizable home layout, accent colors, player controls, and app icon
- Clipboard URL detection and deep linking (
yattee://) - Remote control between devices on your network
Yattee Server
A self-hosted backend powered by yt-dlp that gives Yattee superpowers.
- Direct stream URLs — gets fresh YouTube CDN URLs, bypassing Invidious/Piped blocks and rate limits
- Play from 1000+ sites — Vimeo, TikTok, Twitch, Dailymotion, Twitter/X, and anything else yt-dlp supports
- Invidious-compatible API — drop-in replacement, works alongside existing Invidious/Piped instances
- Self-hosted & private — run on your own hardware, no data leaves your network
- Fast parallel streaming — yt-dlp parallel downloading streams video while it downloads
- Admin panel — web UI for settings, credentials, and monitoring
- Docker ready — single container deployment
Check out the yattee-server repository to get started.
Documentation
Contributing
Browse the issues list or open a new one to discuss your idea. Every contribution is welcome.
See AGENTS.md for developer setup and project architecture.
Join Discord or the Matrix channel if you need advice or want to discuss the project.
Translations
Help make Yattee accessible to everyone by contributing translations.
Localization hosting provided by Weblate.
License
Yattee is shared under the AGPL v3 license.
Languages
Swift
99.4%
Ruby
0.6%
