Skip to content

3.2.0

Choose a tag to compare

@superuser404notfound superuser404notfound released this 10 Jun 22:29
· 177 commits to main since this release

Breaking

Live telemetry moved to engine.diagnostics. The 1 Hz liveTelemetry snapshot was the last timer-driven @Published on the engine itself: the sampler rewrote it every second of every session (VOD included), so any SwiftUI view observing the engine re-rendered once per second for the whole session. On tvOS that was enough to blink an open native Menu from outside the player (reported by @ohjey in #29 after adopting the 3.0.0 clock split). liveTelemetry now lives on EngineDiagnostics, a separate ObservableObject mirroring PlaybackClock.

Migration: plain reads (engine.liveTelemetry) compile unchanged through a read-only forwarder. Combine/SwiftUI subscriptions move from engine.$liveTelemetry to engine.diagnostics.$liveTelemetry. Stats overlays should observe engine.diagnostics instead of the engine.

Added

tvOS integration note: SwiftUI Menu in custom player chrome. On tvOS 26, an open SwiftUI Menu blinks its focused row whenever any SwiftUI render transaction runs in the hosting tree, even in unrelated leaf views (SwiftUI issue, reported to Apple). The README now documents the UIKit-owned menu-button pattern (UIButton + button.menu in a UIViewRepresentable that replaces the UIMenu only on real item changes), courtesy of @ohjey (#29).

Credits

Thanks @ohjey for the follow-up investigation on #29: the elimination repro for the Menu flicker, spotting the remaining 1 Hz publisher, and the menu-button pattern.