Atmos now leaves the box for real, the disk cache stops filling your Apple TV, panels that had wedged themselves grey recover without a reboot, and a pile of sync bugs that made progress jump backwards are gone. Full breakdown below.
🔊 True Dolby Atmos passthrough
The last release got Atmos recognised; this one actually passes it through on MKV. The old sample path decoded Atmos to PCM, so a receiver never lit up. There is a new direct path that takes the selected E-AC-3 / AC-3 track, re-muxes it to fragmented MP4 and hands it to AVPlayer as Dolby MAT 2.0, including the JOC complexity index that FFmpeg's muxer leaves out. Video stays on the frame-accurate sample layer and is kept locked to the AVPlayer audio clock.
- On by default, and free when a title isn't Atmos — the gate only fires for E-AC-3/AC-3 tracks the file or release name declares Atmos, on an HDMI route. Any failure quietly restores normal audio.
- Profile 7 Dolby Vision is brighter by default now (except on the 2 GB A8), fixing P7 rips that played only the dark HDR10 base layer. Maximum Fidelity still forces it.
🎞️ A calmer picture
- Match frame rate is actually honoured. With it off (the default) the app keeps your panel's current rate and changes only dynamic range, avoiding the 60↔24 renegotiation that some panels answer by going grey.
- A wedged panel can now be rescued with triple-⏯, or remotely over the network, even with no player open.
- ⏯ always means play/pause — the "skip intro while paused" shortcut that made pausing take two presses is gone.
- Changing speed while paused no longer restarts playback. Auto-advance always picks the best link. External players return you to Home when they finish.
- Subtitle tracks are no longer capped at 25 per add-on, and a slow episode switch can't hijack the session back to the previous episode.
💾 The cache stops eating the disk
- The storage floor is raised from 1.5 GB to 4 GB, re-checked every five seconds. Full-file mode now stands down rather than filling the disk, and if free space can't be read the app refuses to cache at all instead of gambling on an unbounded download.
- Cache stall timeouts cut from 25/20 s to 12 s, so playback fails over cleanly before the decoders' own timeout kills the read — this is the "most sources just fail" fix.
- Add-on request headers now reach the origin server, fixing 403s from header-gated CDNs.
🔄 Sync that stays put
- Pending edits are tracked per profile, so switching profiles mid-sync no longer drops what the previous one had queued.
- A sync row with no timestamp can no longer retire a live Continue Watching episode.
- The library push won't delete keys it just uploaded; a stale background load can't repopulate a store you cleared.
- AllDebrid keys are validated properly (bad keys were reported as good), and Real-Debrid token refreshes are serialised so they can't invalidate each other.
🎨 Screens and settings
- New language pickers cover the full ISO 639-1 set rather than twelve fixed languages.
- Diagnostics can be captured on Release builds now, behind a toggle.
- Light themes (White/Lavender/Mint) no longer hide white-on-white labels and switch knobs.
- Home reseeds its hero when the source changes, Next Up refreshes hourly so a newly-aired episode appears without a relaunch, and Detail shows an "N episodes left" / "Airs in…" read-out.
- Mark an episode watched from its Continue Watching card.
🔧 Under the hood
- The in-app torrent/magnet helper can no longer be pointed at arbitrary URLs, is capped at eight live torrents, and its range handling follows RFC 7233 instead of returning broken 206s.
- IPAs are built with
make-ipa.sh, which now trusts the compiler's own exit status instead of a timestamp heuristic.
Which IPA?
OrivioTV-V8.5.Sideloadly.ipa— updating an existing sideloaded Orivio. Keeps the historical bundle id, so it replaces in place and your library, progress, add-ons and profiles survive.OrivioTV-V8.5.Sideload.ipa— installs alongside as a separate app with its own data.
Both are the same build and both get re-signed by Sideloadly / AltStore with your own Apple ID.