OmniSlide TV is a SwiftUI-based tvOS slideshow engine built for a premium, Apple Photos-like experience on Apple TV. The long-term goal is to integrate this package into Immich-Gallery for richer, cinematic slideshows. This is an early work in progress, more to come, and contributions are welcome.
- tvOS-first slideshow engine with Siri Remote focus and navigation in mind
- Hardware-accelerated transitions and smooth playback at 60 FPS
- Clean MVVM architecture that is easy to integrate and extend
- High-performance SwiftUI slideshow playback on tvOS 16+
- Robust transition system with complementary outgoing/incoming pairs
- Native tvOS focus interactions and pause shelf controls
- Support for local image and video assets with async loading
- Transition manager that maps transition types to SwiftUI transitions
- Core Image transition pipeline for cinematic effects
- Pause shelf UI with focusable controls
- Portrait/landscape-aware media layout
Transitions are defined as complementary pairs: outgoing animations for the current slide and incoming animations for the next slide. This enables cohesive effects like fade-to-black followed by fade-from-black, or wipe-out followed by reveal-wipe.
See docs/TRANSITIONS_PRD.md for full timing and behavior specs.
The app uses MVVM with a dedicated SlideshowViewModel driving the SlideshowView. The TransitionManager resolves the correct AnyTransition and animation pairing per transition type.
See docs/ARCHITECTURE.md for the full structure and data flow.
- Work in progress
- Target integration: Immich-Gallery slideshow experience
- Feedback and contributions welcome
docs/PRD.mddocs/ARCHITECTURE.mddocs/TRANSITIONS_PRD.md
Feel free to open issues or submit pull requests. If you are integrating with Immich-Gallery or have ideas for transitions, please share context so we can align on requirements.