How mickey2266/aiostreamstvos works
AIOStreams for Apple TV wraps the AIOStreams web app in a tvOS app, routes Siri Remote input and page messages through a native bridge, and plays video with AetherEngine. The central workflow is page playback commands → native player channel → engine playback → video, audio, and subtitles, with status returned to the page. The graph also shows search input, persistent web storage, picture-in-picture, and Top Shelf. Some subsystems are documented in the README or named in the source index; their internal wiring is shown only where that evidence supports it.
Main entry points: MainViewController.swift App coordinator · BridgeScript.swift Page bridge · AetherPlayer.swift Aether player · PlayerChannel.swift Player channel
Components 20
Web experience
- AIOStreams page
App/Web/WebApp.swift - Web view
App/Web/AIOWebView.m - Page bridge
App/Web/BridgeScript.swift - Web storage
App/Web/WebStorage.swift
tvOS application
- App coordinator
App/MainViewController.swift - Remote input
App/Input/RemoteInput.swift - Search keyboard
App/Input/SearchKeyboard.swift
Playback
- Player channel
App/Player/PlayerChannel.swift - Player protocol
App/Player/PlayerProtocol.swift - Aether player
App/Player/AetherPlayer.swift - AetherEngine
Packages/AetherHost/Sources/AetherHost/AetherHost.swift - Audio output
App/Player/AudioOutput.swift - Subtitle rendering
App/Player/SubtitleOverlay.swift - ASS renderer
App/Player/AssRenderer.swift - Subtitle fonts
App/Player/SubtitleFonts.swift - Picture in picture
App/Player/PictureInPicture.swift
tvOS features
- Top Shelf publisher
App/Support/TopShelf.swift - Top Shelf store
Shared/TopShelfStore.swift - Top Shelf provider
TopShelf/ContentProvider.swift
Other components
- Viewer
Connections 21
- Viewer → Remote input: presses
README.md - Remote input → AIOStreams page: sends keys
README.md - AIOStreams page → Page bridge: sends messages
README.md - Page bridge → App coordinator: routes messages
README.md - App coordinator → Web view: loads page
App/MainViewController.swift - App coordinator → AIOStreams page: sends updates
README.md - App coordinator → Web storage: restores and saves
App/MainViewController.swift - App coordinator → Player channel: creates and routes
App/MainViewController.swift - App coordinator → Search keyboard: shows
App/MainViewController.swift - Page bridge → Search keyboard: opens for search
App/Web/BridgeScript.swift - Player channel → Player protocol: validates commands
App/Player/PlayerChannel.swift - Player channel → Aether player: dispatches commands
App/Player/PlayerChannel.swift - Aether player → AetherEngine: controls playback
App/Player/AetherPlayer.swift - Aether player → Audio output: configures output
App/Player/AetherPlayer.swift - Aether player → Subtitle rendering: updates cues
App/Player/AetherPlayer.swift - Subtitle rendering → ASS renderer: renders ASS
App/Player/SubtitleOverlay.swift - Subtitle rendering → Subtitle fonts: uses fonts
App/Player/SubtitleOverlay.swift - App coordinator → Picture in picture: configures
App/MainViewController.swift - Page bridge → Top Shelf publisher: publishes watch-next
App/MainViewController.swift - Top Shelf publisher → Top Shelf store: saves items
App/Support/TopShelf.swift - Top Shelf provider → Top Shelf store: reads items
TopShelf/ContentProvider.swift