mirror of
https://github.com/yattee/yattee.git
synced 2026-10-29 16:07:20 +00:00
21a6238a16fd8177d021ddafd3618329531c7d07
Every mpv time-pos tick updated PlayerState.currentTime and bufferedTime, re-rendering the invisible player controls, progress bar and chapter segments several times per second while the app played in the background, which drained the battery during long audio-only sessions. - PlayerState keeps currentTime/bufferedTime current for readers but stops notifying observers while publishesTimeUpdates is off; PlayerService turns it off on entering the background and back on (with one catch-up notification) before returning to the foreground - MarqueeText pauses its animation timeline outside the active scene - Replace the 100 ms polling loops in RemoteControlCoordinator and ToastManager (iOS/tvOS) with observation-driven waits Main-thread samples during 30 s of background audio-only playback on an iPhone 12 mini went from 1289 to 248.
Yattee 2 is in the works! A new version of the app is being built with a refreshed experience. It pairs with the new Yattee Server — a self-hosted backend powered by yt-dlp that supports 1000+ sites. Join the TestFlight beta to try early builds, and check the new documentation site at docs.yattee.stream for guides, roadmap and changelog.
Features
- Native user interface built with SwiftUI with customization settings
- Player queue and history
- Player component with custom controls, gestures and support for 4K playback
- Fullscreen, Picture in Picture and background audio playback
- SponsorBlock, configurable categories to skip
- Automation with the
yattee://URL scheme, x-callback-url, Shortcuts and Siri
License
Yattee and its components is shared on AGPL v3 license.
Languages
Swift
96.9%
Ruby
2.6%
C
0.4%
