Orivio TV v4
Everything that changed since v3. Two builds are attached, both unsigned — sign them with Sideloadly or your own tool.
| Download | Use it when |
|---|---|
OrivioTV-0.7.15-tvos-unsigned.ipa |
Your sideload tool accepts a real tvOS app. |
OrivioTV-0.7.15-sideloadly-unsigned.ipa |
Sideloadly (and anything else with an iOS-only validator). Identical tvOS arm64 binary — only the Info.plist claims iOS. |
Accounts
- New Accounts hub. Settings → Accounts now holds Orivio, Stremio, sync status, add-on health and backups in one screen, instead of scattering them across Integrations.
- Stremio sync now goes both ways. Add-on collection, library, Continue Watching and Watched push back to Stremio as well as pull from it, on a 30-second auto-sync plus a Sync Now button. v3 only pulled.
- Sign in with Orivio, Stremio, or both, from the same place, by QR.
- Sync status you can actually read. A persisted log of the last 80 events (time, area, outcome), the pending queue, the last error, and a provider check you can run on demand.
- Local backups. Export your add-ons, plugin repositories, library, Continue Watching and Watched as plain JSON and paste it back on another box — no account needed.
- Add-on health check. Measures how fast every installed manifest responds, so you can find the slow or dead provider behind long Home and source loading. It only reads manifests; it changes nothing.
- Export and re-import your add-on setup as a list of manifest URLs.
Sync fixes
- Removed items stopped coming back. Library removals now go into a durable pending-delete queue with tombstones that get reasserted right before a pull. Previously a removal was only a debounced push and a 3-minute in-memory grace — kill the app, go offline, or let a token expire in that window and the next full snapshot resurrected the item permanently.
- Continue Watching stops bloating. It's rebuilt from the account snapshot instead of piling up device-local rows that nothing ever cleared.
- No more bare
tt1234567rows. Titles and artwork missing from Cinemeta are now resolved through TMDB by IMDb id and backfilled onto existing rows — without touching playback position, timestamps, or triggering a push. A real title is never regressed back to an id. - Stremio series pointers no longer fake progress. Stremio can store a series pointer with no runtime and no offset; importing those as 0/1s progress made hundreds of old library entries show up as in-play.
Playback
- Fixed: the picture never came back after a pause. Any load following a pause — switching episodes, an Up Next advance, changing source or engine while paused, a failover armed while backgrounded — swapped the URL in and never opened it, because
KSPlayerLayer.set(url:)only opens a stream while autoplay is still armed andpause()clears that flag. The 30-second watchdog fired, then every failover candidate died the same silent way until "every available source was tried". - Fixed: crashes on 4K and high-bitrate 1080p. KSPlayer's
ThumbnailControllerunrefs a packet once per pass rather than once per read, so every read after the first leaked its buffer — the leak scaled with bitrate, not file size. Replaced with our ownScrubThumbnailer, which unrefs every packet, can be interrupted mid-read through an AVIO callback, carries a wall-clock budget, and caps thread count. - Fixed: the buffer ceiling was never enforced on Auto. The Auto profile skipped the byte cap entirely and relied on a seconds cap, which is bitrate-blind — 36 seconds of "unknown" tier is a few tens of MB on an ordinary stream and hundreds on a high-bitrate 4K one, which is what got the app jetsammed. On Auto the byte budget now acts as a ceiling that can shrink the seconds cap but never inflate it; an explicitly chosen profile still wins in both directions.
- VLC audio routing. VLC never goes through KSPlayer, so a VLC-only session ran under tvOS's default
soloAmbient— the wrong ducking, interruption and route policy for long video. It sets the playback category itself now. - Exit is immediate once you confirm it. The confirmation button is still the guard against a stray Back press; after that there's no extra display-mode wait.
Browsing
- Content rating on the meta line (PG-13, R, TV-MA…) on every theme, in the APK's order: Type • Rating • Genre • Runtime • Year • IMDb.
- Per-episode cast, plus a taller description on the focused episode card.
- Up Next rows on Home, with remaining-time and new-episode badges on Continue Watching cards.
- Artwork filled in on synced rows that arrived with none, from whatever the catalogs already loaded.
- A slow add-on no longer freezes the app. Home hands over focus and sidebar input after the first frame instead of waiting for every catalog request to finish.
- Apple TV HD (A8, 2 GB) drops recurring animation and compositing cost while keeping the artwork; focus stays legible through rings and borders.
- Community Collections logo migration moved off the launch path — it runs when you open the screen, not when the app opens.
Also in v4 (landed after the v3 tag)
- Collections: account-wide library with per-profile visibility, per-folder visibility with a profile drill-down, and switching whole collections off account-wide.
- Collection focus artwork: animated GIF support with three quality modes, off by default on constrained boxes; static focus art; full-bleed covers and uniform row height.
- Catalog pages stream into the grid instead of loading everything before anything appears.
- Two-way sync propagates deletions, auto-syncs every 30 seconds, and offers a manual account sync.
- Fixed an Apple TV 4K gen 1 freeze at launch, GIF choppiness/overflow/grey squares, doubled focus-art URLs, and made the 30-second auto-sync cheap enough not to stutter on A10X.
Known gaps. Series per-episode watched history still isn't synced from Stremio (it's a compressed bitfield that needs the full episode list to decode); movies-watched, all Continue Watching and all saved items are. Top Shelf remains off — it needs an App Group, which a free Apple ID cannot grant.