{ "name": "VortX", "identifier": "tv.vortx.altstore", "subtitle": "Native streaming app for Apple, on stremio-core + libmpv.", "iconURL": "https://raw.githubusercontent.com/VortXTV/VortX/main/docs/logo.png", "website": "https://vortx.tv", "tintColor": "C8A24B", "apps": [ { "name": "VortX", "bundleIdentifier": "com.stremiox.app.native", "developerName": "Mamaclapper", "subtitle": "Stream movies and shows on iPhone and iPad.", "localizedDescription": "VortX is a native, open-source streaming app for Apple devices, built on the official stremio-core engine and the libmpv player. Multi-profile, HDR and Dolby Vision, skip intro and outro, stream ranking, in-app add-ons and debrid keys, and more. Sideload-friendly: this source delivers one-tap updates so you never re-download an IPA by hand.", "iconURL": "https://raw.githubusercontent.com/VortXTV/VortX/main/docs/logo.png", "tintColor": "C8A24B", "category": "entertainment", "screenshotURLs": [], "versions": [ { "version": "0.4.0", "buildVersion": "241", "date": "2026-09-05", "localizedDescription": "# 0.4.0 Beta 8 - Dolby Vision startup, Usenet playback, and safer episode recovery\n\n**Install this over any earlier Apple build.** Beta 8 focuses on the playback failures reported after Beta 2: Dolby Vision sources failing before the first picture, Usenet rows that would not start, and seek/recovery failures that could disrupt a binge session. This is an Apple-only beta, build 241. It retains Beta 2's fixes; Android and the broader sync and design work are reserved for the following beta.\n\n## What's fixed\n\nBetas 3-7 were held before publication for final integration, credential protection, and the last next-episode NNTP wiring correction. This is the next published Apple beta after Beta 2. They shipped no installable release assets. Beta 8 uses a new immutable tag for the combined source after Swift and security review.\n\n**A real cause of Dolby Vision startup failure is repaired.** Some HEVC files carry an incomplete container header and reveal their decoder setup inside the first video packet. VortX repaired that header but trusted the first provisional decode timestamp too early. The subsequent out-of-order timestamps made the MP4 writer reject the stream before it could publish a playable video segment. Startup now reads a bounded group of packets and repairs only the proven leading timestamp gap. Ordinary headers and established timestamps are left alone. This addresses the repeated remux failure captured in diagnostic 13 on Apple platforms.\n\n**The timestamp repair preserves the playable timeline.** Negative decode preroll remains in the muxed video where the decoder needs it, while the public HLS timeline starts at zero. A synthetic reproduction using the same shipped FFmpeg artifact now completes and decodes through Apple's video reader, with all 432 frames present in both the control and formerly failing cases. Audio and video retain their relative timing.\n\n**A dead remux no longer looks like healthy startup progress.** Once the current remux producer reports a terminal failure, its watchdog stops waiting on stale progress. Recovery acts on that exact item and source instead of spending another startup interval holding a stream that cannot produce a picture. This does not disable supported Dolby Vision or turn normal buffering into an automatic fallback.\n\n**A short placeholder cannot claim the next episode.** First-frame handling now checks the pending episode's stream evidence before committing its identity. An obviously mismatched short or undersized replacement is rejected before it can claim the requested episode. When incomplete evidence passes the existing bounded acceptance policy, the app consistently retires the old first-frame timeout instead of later abandoning a picture that already started.\n\n**Old recovery callbacks cannot take over a replacement player.** Delayed checks are fenced by the active controller, loaded item, and pending episode request on Apple TV and the shared iPhone, iPad, and Mac player. A callback belonging to a previous episode cannot finish or cancel the new episode's startup.\n\n**A seek-related false ending cannot silently become the next episode.** For the diagnosed mid-file EOF immediately following a seek, VortX Player now uses the duration captured before the seek and the current source's transport evidence. A qualifying single seek gets one bounded same-source reopen with its target retained. Missing or ambiguous evidence becomes a recoverable playback error, not a watched mark or an automatic episode change. Genuine near-end completion retains its normal path.\n\n**Rapid seeks fail safely instead of borrowing each other's callbacks.** When one seek supersedes another on the same source, untagged callbacks from the earlier seek cannot authorize a speculative reopen. The same protection covers a cache reanchor that replaces a pending viewer seek.\n\n**Play and Pause remain your decision during seek recovery.** A supported recovery preserves the latest explicit Play/Pause request, including a change made while the source is reopening. A new manual seek cancels the older recovery and releases its temporary forced pause rather than leaving the video parked.\n\n**Usenet playback reaches the correct embedded server.** Native NNTP playback now sends NZB control requests to the bundled Node server's actual discovered port, not the generic native media-server endpoint that does not implement that route. Explicit playback allows a short bounded startup wait while Node is becoming ready. Unsupported local-engine combinations no longer advertise a working local NZB route; TorBox's remote Usenet resolution remains available where configured.\n\n**Stremio-style NZB mirrors and server lists are retained.** Add-on responses can carry both `nzbUrl` and `nzbUrls`, plus an ordered `servers` list. These are preserved and validated before resolution. Add-on-provided NNTP servers keep their order. If their local setup fails, VortX tries the saved provider as a separate bounded attempt; it does not pool different accounts in parallel. Validated NZB mirrors also participate in cache lookup and source identity. This is compatibility for add-on-provided lists, not the separate multi-provider settings or NZB indexer feature.\n\n**NNTP now participates in Apple TV's next-episode preparation.** The TV preload gate previously skipped every raw NZB because it tested only for a cached torrent hash. It now admits NZBs into the same bounded local NNTP and TorBox resolver while keeping uncached torrents on their existing path. Next-episode preparation and cold advance on Apple TV, iPhone, iPad, and Mac also use the bounded Node readiness wait and the uncached Usenet preparation allowance, rather than treating every NZB like an instantly cached link. The overall preparation deadline and stale-episode cancellation remain in force.\n\n**Failed Usenet taps now explain themselves.** Explicit source selection distinguishes unavailable local support from an actual resolution failure, instead of silently returning without playing. Repeated Apple TV taps cannot launch overlapping NZB resolutions. A raw NZB descriptor is never handed to the video player as though it were media, and an unsupported NZB carrying torrent metadata cannot fall through into the torrent route.\n\n**The Node request contract is verified without exposing provider credentials.** The regression test exercises the real client's JSON POST, discovered port, returned key, and resulting stream URL through an injected session. Keys remain one opaque query value. Credential-bearing HTTP NZB descriptors are rejected before reaching Node, while NNTP credentials remain confined to the intended private local playback path. This test does not claim a live transfer from every Usenet provider.\n\n**TorBox Usenet requests now match its documented API.** NZB creation uses multipart form data rather than JSON. Both numeric and string download IDs are accepted. The download-link request supplies TorBox's documented, safely encoded token authentication; only the resulting validated playback URL reaches the player. Authenticated Usenet API calls now reject redirects entirely, preventing credentials from being forwarded to a redirect destination; ordinary media redirects are unchanged.\n\n**A failed local Usenet stream can try the next configured route for the same source.** The player retains whether a link came from the add-on's NNTP servers, your saved provider, or TorBox cloud. A later failure can move from add-on NNTP to the saved provider or cloud, or from saved NNTP to cloud, within the existing bounded recovery owner. It preserves the episode and resume/transport transaction, rejects stale callbacks, and does not loop back through routes already known to have failed.\n\n**Uncached NZB requests no longer use the cached-link five-second budget during a tap or episode transition.** User-selected NZBs and next-episode requests receive a bounded cloud preparation window matching the existing polling path; the next-episode pipeline still enforces its overall deadline. Cached-source fast paths retain their short budget. This does not turn an unavailable or still-downloading NZB into an instantly playable file.\n\n**NNTP hints are checked against the bundled downloader's actual parser.** Malformed server hints are rejected before they can throw inside Node. TLS schemes and credential delimiters are normalized without changing the credentials. Local requests are owned by the current account's cancellation/credential lease, so signing out cannot pass an old account's result into the new session.\n\n## Verification and please test\n\nThe targeted playback and episode-state tests, a real Apple TV simulator build, and the full existing remux/AVPlayer regression harness passed before release. The new empty-header reproduction was first observed failing in the production remux path, then passed after the timestamp repair and decoded all expected frames. The release is rebuilt from the exact tagged source by the protected Apple workflow; install feeds and artifact checksums are verified before publication.\n\n- Try the Dolby Vision title that failed in the previous beta, including starting from Continue Watching.\n- Pause, resume, seek backward, and use Next. A failed mid-file seek must not mark the episode finished or jump forward.\n- Try the Stremio NNTP/NZB source again, including an add-on-supplied server list. Full and Lite builds have different local-engine capabilities; an unsupported combination should now report that clearly.\n- Check long Dolby Vision playback and built-in subtitles. Beta 2's subtitle protections remain included, but diagnostic 13 did not establish a new duplicate-subtitle cause, and a synthetic decode test is not a physical Apple TV Dolby Vision continuity test.\n\nThis beta fixes the concrete failure mechanisms reproduced from the diagnostics and source audit. It is not a claim that every long-playback stall, provider failure, or display-specific HDR transition has been eliminated.\n\n## Android and the next beta\n\nAndroid is not attached to this Apple-only beta. Android playback and Apple-feature parity, cross-device sync and Stremio import, iPhone detail/source formatting, Mac redesign follow-up, and multi-server Usenet/NZB indexer settings remain on the follow-up plan. They are not being mixed into this playback hotfix.\n\n## Install\n\n**Mac (.dmg, easiest, never expires).** Download `VortX-macOS-v0.4.0-beta.8-ci.dmg` and drag VortX into Applications. For Apple's one-time quarantine prompt, open it once, click Done, then **System Settings > Privacy & Security > Open Anyway**. Full guide: **[Install on Mac](https://github.com/VortXTV/VortX/wiki/Install-on-Mac)**.\n\n**iPhone, iPad, Apple TV (sideload the IPA).** Download `VortX-iOS-v0.4.0-beta.8-ci.ipa`, `VortX-tvOS-v0.4.0-beta.8-ci.ipa`, or `VortX-tvOS-lite-v0.4.0-beta.8-ci.ipa`. The IPAs are unsigned and must be re-signed with Sideloadly, AltStore / SideStore, Signulous, or your preferred sideloading service. No jailbreak. Add the **[VortX AltStore / SideStore source](https://raw.githubusercontent.com/VortXTV/VortX/main/altstore/source.json)** for updates. Full guide: **[Installing on iPhone, iPad, and Apple TV](https://github.com/VortXTV/VortX/wiki/Installing)**.\n\nThe release includes `SHA256SUMS-ci.txt` to verify the downloads produced by the public [GitHub Actions workflow](https://github.com/VortXTV/VortX/tree/main/.github/workflows). Android packages are intentionally not attached to this beta.\n\n\n", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.4.0-beta.8/VortX-iOS-v0.4.0-beta.8-ci.ipa", "size": 65196862, "sha256": "33c1a0558d0f39ae51e527d5cda3903114b8d36e3583344e3abf5aae4b823b2b", "minOSVersion": "16.0" }, { "version": "0.4.0", "buildVersion": "236", "date": "2026-09-05", "localizedDescription": "Apple Beta 2: pause/resume, Dolby Vision recovery, duplicate subtitles, source switching, Continue Watching and Mac settings.", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.4.0-beta.2/VortX-iOS-v0.4.0-beta.2-ci.ipa", "size": 65113674, "sha256": "f751a9c9a63e55e28e08a3304c4e8dcfb3e8cc0875fd676022661cb75d08c670", "minOSVersion": "16.0" }, { "version": "0.4.0", "buildVersion": "235", "date": "2026-09-03", "localizedDescription": "0.4 Beta 1: AVPlayer recovery and remux synchronization, episode focus, debrid refresh, update checks, subtitles and previews. Android TV parity is planned separately.", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.4.0-beta.1/VortX-iOS-v0.4.0-beta.1-ci.ipa", "size": 65011491, "sha256": "4133383241123add3ebe25cb94947326db1d18459edee7837c09275d4f186ffe", "minOSVersion": "16.0" }, { "version": "0.3.16", "buildVersion": "234", "date": "2026-08-31", "localizedDescription": "Playback, watch-state, source loading, account ownership, and Android reliability hardening.", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.3.16/VortX-iOS-v0.3.16-ci.ipa", "size": 64881912, "sha256": "22760aade1c0bc1c3e612a11d66db9346c9072815267af3e2e60977e35004a34", "minOSVersion": "16.0" }, { "version": "0.3.15", "buildVersion": "233", "date": "2026-08-29", "localizedDescription": "VortX 0.3.15 is the cumulative stable release from 0.3.13 through the complete 0.3.14 beta line, with Apple playback reliability, Dolby Vision, subtitles, source controls, watch-state fixes, and production-signed Android Full and Play builds.", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.3.15/VortX-iOS-v0.3.15-ci.ipa", "size": 64763243, "sha256": "3345a872e545bf40ec9801ef0a2980c5ee481cfdefd21ab28c55e2831f15d026", "minOSVersion": "16.0" }, { "version": "0.3.14", "buildVersion": "232", "date": "2026-08-29", "localizedDescription": "Beta 30 fixes Dolby Vision fallback, pause and episode navigation, watched state, subtitles, seek previews, and TorBox source recovery. Android is nearly ready and follows in Beta 31.", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.3.14-beta.30/VortX-iOS-v0.3.14-beta.30-ci.ipa", "size": 64674417, "sha256": "2e354cb5e031832e0c0ba935f9896d7db0f0537908f57dd690c903d594175179", "minOSVersion": "16.0" }, { "version": "0.3.14", "buildVersion": "228", "date": "2026-08-23", "localizedDescription": "# VortX 0.3.14 Beta 26 (build 228)\n\nApple-first reliability release. The headline is the end of the repeating mid-playback stutter Apple TV owners were hitting under memory pressure. It also completes the zero-stall playback lane (the Beta 25 remux work, finished and merged), tightens debrid cached-source ranking and sync, gives the release feed proper HTTP caching, and lands the Android usenet + community-JavaScript-provider stacks in source. Android remains absent from this Apple sideload release.\n\n## What's new\n\n**The memory-pressure stutter is fixed.** On the Apple TV 4K, the device parks its available headroom at roughly 400-420 MiB - inside the band the app treats as \"pressured but recoverable\" - and tvOS posts an advisory memory warning every minute or two. The destructive cache-shed (drop buffers plus re-anchor seek) was fire-and-forget, so each warning ran it again: a burst of dropped frames and a visible stutter on a metronome, all episode long. That shed is now edge-triggered: it fires once when the app first enters the advisory band, then holds until headroom genuinely recovers above the restore bar (or you change title). Genuine low headroom never waits - the flush that keeps the app alive against memory pressure is untouched - and the ample-headroom regime behaves exactly as before. Apple TV, iPhone, iPad, and Mac.\n\n**Playback reliability (the Beta 25 remux work, now complete).** The zero-stall lane lands: the AVPlayer steady-state buffer is coupled to the remux producer's byte budget; the producer-lead park gate gets byte-level hysteresis; local-remux startup buffer rises to 8 s with a 12 s readiness floor; a seek-nudge tier and buffered-retirement gate run before any engine demote; a single same-engine playlist reload answers an otherwise-fatal mid-play CoreMedia -1008; and a proactive read-liveness soft-interrupt drives the remux input so playback does not drain into a stall. Apple TV, iPhone, iPad, and Mac.\n\n**Keep the prepared next episode across an engine demote.** Switching from AVPlayer to the mpv fallback used to drop the prepared next-episode source; it is now carried across, so auto-advance does not re-search cold. Apple TV, iPhone, iPad, and Mac.\n\n**Debrid cached sources rank and resolve faster.** A cached-source race is rank-sorted with an instant-URL short circuit, and the debrid-cache snapshot is threaded into the player's cached re-rank, so the right cached source surfaces first. Non-wanted add-on request budget is raised to avoid a false stall. Apple TV, iPhone, iPad, and Mac.\n\n**Last-stream memory is device-local on sync.** A watched position held in memory no longer bleeds across profile or device because it no longer rides into the account sync, so one device's in-progress title cannot overwrite another's. Apple TV, iPhone, iPad, and Mac.\n\n**TorBox circuits stop hammering a read-only cooldown.** A TorBox source that hits its quota now enters a cooldown fast-path and logs one suppression line per episode instead of re-asking on a loop. Apple TV, iPhone, iPad, and Mac.\n\n**Feed and update behavior.** Update eligibility is build-number-only (strict ordering, no legacy prerelease override); the release feed answers HEAD and honors If-None-Match with 304; and a prior-exit termination receipt is captured with MetricKit so a feed worker or app that died is recorded. All devices.\n\n**Android (in this build's source, not the Apple release).** Community JavaScript providers run again through a new QuickJS runtime and provider stack, and a usenet provider stack is wired into the debrid coordinator. These are the Android line; the Apple sideload release does not include them.\n\n## Please test\n\n- On the Apple TV, start a title and let it play for ten minutes or more, especially a 4K Dolby Vision or high-bitrate stream; confirm the repeated every-few-seconds stutter is gone.\n- Play sources from TorBox, AIOStreams, or AllDebrid that failed before and confirm they play.\n- With Dolby Vision or MKV remux enabled, play for several minutes and confirm no repeating stall-and-jump.\n- Auto-advance between episodes and confirm the next episode starts without a cold search.\n- On a second profile or device, confirm a watched position is not written across.\n\nIf anything still fails, share the Diagnostics log (Settings > Diagnostics).\n\n## Install\n\n**Mac (.dmg, easiest, never expires).** Download `VortX-macOS-v0.3.14-beta.26-ci.dmg`, drag VortX into Applications, then clear Apple's one-time quarantine: open it once, click Done, then **System Settings > Privacy & Security > Open Anyway** (or run `xattr -dr com.apple.quarantine /Applications/VortX.app`). Full guide: **[Install on Mac](https://github.com/VortXTV/VortX/wiki/Install-on-Mac)**.\n\n**iPhone, iPad, Apple TV (sideload the IPA).** The IPAs are unsigned, because VortX is open-source and distributed outside the App Store with no Apple Developer ID yet, so you re-sign them yourself with Sideloadly, AltStore / SideStore, or Signulous. No jailbreak. For one-tap updates, add the VortX source to AltStore / SideStore or your sideloading service so new builds appear automatically: **`https://raw.githubusercontent.com/VortXTV/VortX/main/altstore/source.json`**. Full guide: **[Installing on iPhone, iPad, and Apple TV](https://github.com/VortXTV/VortX/wiki/Installing)**.\n\nEach Apple asset lists a SHA-256 checksum (`SHA256SUMS-ci.txt`) so you can confirm your download matches what the public [GitHub Actions workflow](https://github.com/VortXTV/VortX/tree/main/.github/workflows) built from this code.", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.3.14-beta.26.2/VortX-iOS-v0.3.14-beta.26.2-ci.ipa", "size": 64615116, "sha256": "ba7959ebcfe3e31b9cf3b3f60b70b1cb351ebbd585b9ea7efb74aebb5b2d8da8", "minOSVersion": "16.0" }, { "version": "0.3.14", "buildVersion": "227", "date": "2026-08-22", "localizedDescription": "# VortX 0.3.14 Beta 25 (build 227) Apple-only reliability release. It publishes the playback and Apple TV fixes prepared for Beta 19 (which was never made public) plus the source-picker, localization, and subtitle-hardening fixes. Android remains absent. ## What's new **Playback reliability (from the Beta 19 work).** Fixes the AVPlayer/libmpv/remux ownership races, the producer-lead stalls on Dolby Vision and high-bitrate 4K, the \"source failed\" fallback loops on TorBox/AIOStreams/AllDebrid, the repeating stall-and-jump pattern when Dolby Vision or MKV remux is on, and the duplicate subtitle flash. Apple TV, iPhone, iPad, and Mac. **Two-row Apple TV detail actions.** The detail page actions are now two semantic rows with single-line labels, a stable Library focus anchor, and predictable upward focus back to the title and menu bar, fixing the wrapped-button and focus-trap defects. Apple TV (full and Lite). **Audio-language filter in the source picker.** A new Audio control next to Quality filters and re-ranks the source list by audio language, session-scoped only, without changing your saved preference. Apple TV, iPhone, iPad, and Mac. **French catalog titles.** Home and Discover rows now translate catalog titles as whole phrases instead of word by word, so Popular Shows reads Séries populaires rather than Populaires émissions, and Featured Movies reads Films à la une. French. **External subtitles use the hardened transport on every player.** The built-in player's subtitle download now resolves the host once and connects only to the exact vetted address, with size limits and no redirects, matching the other player. Apple TV, iPhone, iPad, and Mac. **AltStore and SideStore updates propagate reliably.** Release promotion is transactional end to end, so build 227 should appear in the VortX source automatically. Apple TV, iPhone, iPad. ## Please test - Play sources from TorBox, AIOStreams, or AllDebrid that failed before and confirm they play. - With Dolby Vision or MKV remux enabled, play for several minutes and confirm the repeating stall-and-jump pattern is gone. - On Apple TV, open a title and confirm the detail actions sit on two rows with single-line labels, and that Up returns you to the top and the menu bar. - Confirm external subtitles render once, without the repeated flash. - Pick an audio language in the source picker and confirm the list re-ranks. - On a French device, confirm catalog titles read naturally (Séries populaires, Films à la une). If anything still fails, share the Diagnostics log (Settings > Diagnostics). **Apple TV HD crash fix.** Fixes a crash a few seconds after playback started on some streams on Apple TV HD: the on-device trickplay frame capture could abort the process during Metal rendering on that device class. Capture is now skipped on those devices only; newer Apple TV models are unchanged. **Reinstalling a removed add-on works again.** Installing a previously removed add-on URL no longer fails with \"Install did not confirm\", and reconnecting a Stremio account now imports its add-ons again even if they were removed earlier in VortX. Removing an add-on still sticks against background sync.", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.3.14-beta.25/VortX-iOS-v0.3.14-beta.25-ci.ipa", "size": 64369656, "sha256": "725db244532ea464168113288576fb7b6bb8a6d907ab75fca2f4def0c6a3b624", "minOSVersion": "16.0" } ] }, { "name": "VortX (Apple TV)", "bundleIdentifier": "com.stremiox.tv", "developerName": "Mamaclapper", "subtitle": "Stream movies and shows on Apple TV.", "localizedDescription": "VortX for Apple TV: a native, open-source streaming app on the official stremio-core engine and the libmpv player, with an in-process streaming server for torrents. HDR and Dolby Vision, Dolby Atmos passthrough, stream ranking, in-app add-ons and debrid keys, Top Shelf, and more. This source delivers one-tap updates so you never sideload an IPA by hand.", "iconURL": "https://raw.githubusercontent.com/VortXTV/VortX/main/docs/logo.png", "tintColor": "C8A24B", "category": "entertainment", "screenshotURLs": [], "versions": [ { "version": "0.4.0", "buildVersion": "241", "date": "2026-09-05", "localizedDescription": "# 0.4.0 Beta 8 - Dolby Vision startup, Usenet playback, and safer episode recovery\n\n**Install this over any earlier Apple build.** Beta 8 focuses on the playback failures reported after Beta 2: Dolby Vision sources failing before the first picture, Usenet rows that would not start, and seek/recovery failures that could disrupt a binge session. This is an Apple-only beta, build 241. It retains Beta 2's fixes; Android and the broader sync and design work are reserved for the following beta.\n\n## What's fixed\n\nBetas 3-7 were held before publication for final integration, credential protection, and the last next-episode NNTP wiring correction. This is the next published Apple beta after Beta 2. They shipped no installable release assets. Beta 8 uses a new immutable tag for the combined source after Swift and security review.\n\n**A real cause of Dolby Vision startup failure is repaired.** Some HEVC files carry an incomplete container header and reveal their decoder setup inside the first video packet. VortX repaired that header but trusted the first provisional decode timestamp too early. The subsequent out-of-order timestamps made the MP4 writer reject the stream before it could publish a playable video segment. Startup now reads a bounded group of packets and repairs only the proven leading timestamp gap. Ordinary headers and established timestamps are left alone. This addresses the repeated remux failure captured in diagnostic 13 on Apple platforms.\n\n**The timestamp repair preserves the playable timeline.** Negative decode preroll remains in the muxed video where the decoder needs it, while the public HLS timeline starts at zero. A synthetic reproduction using the same shipped FFmpeg artifact now completes and decodes through Apple's video reader, with all 432 frames present in both the control and formerly failing cases. Audio and video retain their relative timing.\n\n**A dead remux no longer looks like healthy startup progress.** Once the current remux producer reports a terminal failure, its watchdog stops waiting on stale progress. Recovery acts on that exact item and source instead of spending another startup interval holding a stream that cannot produce a picture. This does not disable supported Dolby Vision or turn normal buffering into an automatic fallback.\n\n**A short placeholder cannot claim the next episode.** First-frame handling now checks the pending episode's stream evidence before committing its identity. An obviously mismatched short or undersized replacement is rejected before it can claim the requested episode. When incomplete evidence passes the existing bounded acceptance policy, the app consistently retires the old first-frame timeout instead of later abandoning a picture that already started.\n\n**Old recovery callbacks cannot take over a replacement player.** Delayed checks are fenced by the active controller, loaded item, and pending episode request on Apple TV and the shared iPhone, iPad, and Mac player. A callback belonging to a previous episode cannot finish or cancel the new episode's startup.\n\n**A seek-related false ending cannot silently become the next episode.** For the diagnosed mid-file EOF immediately following a seek, VortX Player now uses the duration captured before the seek and the current source's transport evidence. A qualifying single seek gets one bounded same-source reopen with its target retained. Missing or ambiguous evidence becomes a recoverable playback error, not a watched mark or an automatic episode change. Genuine near-end completion retains its normal path.\n\n**Rapid seeks fail safely instead of borrowing each other's callbacks.** When one seek supersedes another on the same source, untagged callbacks from the earlier seek cannot authorize a speculative reopen. The same protection covers a cache reanchor that replaces a pending viewer seek.\n\n**Play and Pause remain your decision during seek recovery.** A supported recovery preserves the latest explicit Play/Pause request, including a change made while the source is reopening. A new manual seek cancels the older recovery and releases its temporary forced pause rather than leaving the video parked.\n\n**Usenet playback reaches the correct embedded server.** Native NNTP playback now sends NZB control requests to the bundled Node server's actual discovered port, not the generic native media-server endpoint that does not implement that route. Explicit playback allows a short bounded startup wait while Node is becoming ready. Unsupported local-engine combinations no longer advertise a working local NZB route; TorBox's remote Usenet resolution remains available where configured.\n\n**Stremio-style NZB mirrors and server lists are retained.** Add-on responses can carry both `nzbUrl` and `nzbUrls`, plus an ordered `servers` list. These are preserved and validated before resolution. Add-on-provided NNTP servers keep their order. If their local setup fails, VortX tries the saved provider as a separate bounded attempt; it does not pool different accounts in parallel. Validated NZB mirrors also participate in cache lookup and source identity. This is compatibility for add-on-provided lists, not the separate multi-provider settings or NZB indexer feature.\n\n**NNTP now participates in Apple TV's next-episode preparation.** The TV preload gate previously skipped every raw NZB because it tested only for a cached torrent hash. It now admits NZBs into the same bounded local NNTP and TorBox resolver while keeping uncached torrents on their existing path. Next-episode preparation and cold advance on Apple TV, iPhone, iPad, and Mac also use the bounded Node readiness wait and the uncached Usenet preparation allowance, rather than treating every NZB like an instantly cached link. The overall preparation deadline and stale-episode cancellation remain in force.\n\n**Failed Usenet taps now explain themselves.** Explicit source selection distinguishes unavailable local support from an actual resolution failure, instead of silently returning without playing. Repeated Apple TV taps cannot launch overlapping NZB resolutions. A raw NZB descriptor is never handed to the video player as though it were media, and an unsupported NZB carrying torrent metadata cannot fall through into the torrent route.\n\n**The Node request contract is verified without exposing provider credentials.** The regression test exercises the real client's JSON POST, discovered port, returned key, and resulting stream URL through an injected session. Keys remain one opaque query value. Credential-bearing HTTP NZB descriptors are rejected before reaching Node, while NNTP credentials remain confined to the intended private local playback path. This test does not claim a live transfer from every Usenet provider.\n\n**TorBox Usenet requests now match its documented API.** NZB creation uses multipart form data rather than JSON. Both numeric and string download IDs are accepted. The download-link request supplies TorBox's documented, safely encoded token authentication; only the resulting validated playback URL reaches the player. Authenticated Usenet API calls now reject redirects entirely, preventing credentials from being forwarded to a redirect destination; ordinary media redirects are unchanged.\n\n**A failed local Usenet stream can try the next configured route for the same source.** The player retains whether a link came from the add-on's NNTP servers, your saved provider, or TorBox cloud. A later failure can move from add-on NNTP to the saved provider or cloud, or from saved NNTP to cloud, within the existing bounded recovery owner. It preserves the episode and resume/transport transaction, rejects stale callbacks, and does not loop back through routes already known to have failed.\n\n**Uncached NZB requests no longer use the cached-link five-second budget during a tap or episode transition.** User-selected NZBs and next-episode requests receive a bounded cloud preparation window matching the existing polling path; the next-episode pipeline still enforces its overall deadline. Cached-source fast paths retain their short budget. This does not turn an unavailable or still-downloading NZB into an instantly playable file.\n\n**NNTP hints are checked against the bundled downloader's actual parser.** Malformed server hints are rejected before they can throw inside Node. TLS schemes and credential delimiters are normalized without changing the credentials. Local requests are owned by the current account's cancellation/credential lease, so signing out cannot pass an old account's result into the new session.\n\n## Verification and please test\n\nThe targeted playback and episode-state tests, a real Apple TV simulator build, and the full existing remux/AVPlayer regression harness passed before release. The new empty-header reproduction was first observed failing in the production remux path, then passed after the timestamp repair and decoded all expected frames. The release is rebuilt from the exact tagged source by the protected Apple workflow; install feeds and artifact checksums are verified before publication.\n\n- Try the Dolby Vision title that failed in the previous beta, including starting from Continue Watching.\n- Pause, resume, seek backward, and use Next. A failed mid-file seek must not mark the episode finished or jump forward.\n- Try the Stremio NNTP/NZB source again, including an add-on-supplied server list. Full and Lite builds have different local-engine capabilities; an unsupported combination should now report that clearly.\n- Check long Dolby Vision playback and built-in subtitles. Beta 2's subtitle protections remain included, but diagnostic 13 did not establish a new duplicate-subtitle cause, and a synthetic decode test is not a physical Apple TV Dolby Vision continuity test.\n\nThis beta fixes the concrete failure mechanisms reproduced from the diagnostics and source audit. It is not a claim that every long-playback stall, provider failure, or display-specific HDR transition has been eliminated.\n\n## Android and the next beta\n\nAndroid is not attached to this Apple-only beta. Android playback and Apple-feature parity, cross-device sync and Stremio import, iPhone detail/source formatting, Mac redesign follow-up, and multi-server Usenet/NZB indexer settings remain on the follow-up plan. They are not being mixed into this playback hotfix.\n\n## Install\n\n**Mac (.dmg, easiest, never expires).** Download `VortX-macOS-v0.4.0-beta.8-ci.dmg` and drag VortX into Applications. For Apple's one-time quarantine prompt, open it once, click Done, then **System Settings > Privacy & Security > Open Anyway**. Full guide: **[Install on Mac](https://github.com/VortXTV/VortX/wiki/Install-on-Mac)**.\n\n**iPhone, iPad, Apple TV (sideload the IPA).** Download `VortX-iOS-v0.4.0-beta.8-ci.ipa`, `VortX-tvOS-v0.4.0-beta.8-ci.ipa`, or `VortX-tvOS-lite-v0.4.0-beta.8-ci.ipa`. The IPAs are unsigned and must be re-signed with Sideloadly, AltStore / SideStore, Signulous, or your preferred sideloading service. No jailbreak. Add the **[VortX AltStore / SideStore source](https://raw.githubusercontent.com/VortXTV/VortX/main/altstore/source.json)** for updates. Full guide: **[Installing on iPhone, iPad, and Apple TV](https://github.com/VortXTV/VortX/wiki/Installing)**.\n\nThe release includes `SHA256SUMS-ci.txt` to verify the downloads produced by the public [GitHub Actions workflow](https://github.com/VortXTV/VortX/tree/main/.github/workflows). Android packages are intentionally not attached to this beta.\n\n\n", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.4.0-beta.8/VortX-tvOS-v0.4.0-beta.8-ci.ipa", "size": 64758491, "sha256": "74f18bcb83a32d4652b46784b9608b084164bc90d82362f5a29ad64c74cdf9a5", "minOSVersion": "18.0" }, { "version": "0.4.0", "buildVersion": "236", "date": "2026-09-05", "localizedDescription": "Apple Beta 2: pause/resume, Dolby Vision recovery, duplicate subtitles, source switching, Continue Watching and Mac settings.", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.4.0-beta.2/VortX-tvOS-v0.4.0-beta.2-ci.ipa", "size": 64678475, "sha256": "b6b202bb2dbf9e29f856d126ee7372b8f591e6b8d2a520d8c57e9a57ee0d0c33", "minOSVersion": "18.0" }, { "version": "0.4.0", "buildVersion": "235", "date": "2026-09-03", "localizedDescription": "0.4 Beta 1: AVPlayer recovery and remux synchronization, episode focus, debrid refresh, update checks, subtitles and previews. Android TV parity is planned separately.", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.4.0-beta.1/VortX-tvOS-v0.4.0-beta.1-ci.ipa", "size": 64593483, "sha256": "82749f93f67210b96f0bb6ab8d4f7c3b09365c2148c6cc84333e059ed21e1dfb", "minOSVersion": "18.0" }, { "version": "0.3.16", "buildVersion": "234", "date": "2026-08-31", "localizedDescription": "Playback, watch-state, source loading, account ownership, and Android reliability hardening.", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.3.16/VortX-tvOS-v0.3.16-ci.ipa", "size": 64442485, "sha256": "b4515cdae2b86e5627678b0cedbce2f1c1b0d4c587e848eb5fd2bb6961de1fb9", "minOSVersion": "18.0" }, { "version": "0.3.15", "buildVersion": "233", "date": "2026-08-29", "localizedDescription": "VortX 0.3.15 is the cumulative stable release from 0.3.13 through the complete 0.3.14 beta line, with Apple playback reliability, Dolby Vision, subtitles, source controls, watch-state fixes, and production-signed Android Full and Play builds.", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.3.15/VortX-tvOS-v0.3.15-ci.ipa", "size": 64301950, "sha256": "7e4aad49f59db588f7f612795ca5602c6fee8974bd654f2377e73ecd25120628", "minOSVersion": "18.0" }, { "version": "0.3.14", "buildVersion": "232", "date": "2026-08-29", "localizedDescription": "Beta 30 fixes Dolby Vision fallback, pause and episode navigation, watched state, subtitles, seek previews, and TorBox source recovery. Android is nearly ready and follows in Beta 31.", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.3.14-beta.30/VortX-tvOS-v0.3.14-beta.30-ci.ipa", "size": 64162737, "sha256": "b2a1b5c95b05b74afa7131f65a8b73a6756edcd6f8cc91e0240f1da5f54d317e", "minOSVersion": "18.0" }, { "version": "0.3.14", "buildVersion": "228", "date": "2026-08-23", "localizedDescription": "# VortX 0.3.14 Beta 26 (build 228)\n\nApple-first reliability release. The headline is the end of the repeating mid-playback stutter Apple TV owners were hitting under memory pressure. It also completes the zero-stall playback lane (the Beta 25 remux work, finished and merged), tightens debrid cached-source ranking and sync, gives the release feed proper HTTP caching, and lands the Android usenet + community-JavaScript-provider stacks in source. Android remains absent from this Apple sideload release.\n\n## What's new\n\n**The memory-pressure stutter is fixed.** On the Apple TV 4K, the device parks its available headroom at roughly 400-420 MiB - inside the band the app treats as \"pressured but recoverable\" - and tvOS posts an advisory memory warning every minute or two. The destructive cache-shed (drop buffers plus re-anchor seek) was fire-and-forget, so each warning ran it again: a burst of dropped frames and a visible stutter on a metronome, all episode long. That shed is now edge-triggered: it fires once when the app first enters the advisory band, then holds until headroom genuinely recovers above the restore bar (or you change title). Genuine low headroom never waits - the flush that keeps the app alive against memory pressure is untouched - and the ample-headroom regime behaves exactly as before. Apple TV, iPhone, iPad, and Mac.\n\n**Playback reliability (the Beta 25 remux work, now complete).** The zero-stall lane lands: the AVPlayer steady-state buffer is coupled to the remux producer's byte budget; the producer-lead park gate gets byte-level hysteresis; local-remux startup buffer rises to 8 s with a 12 s readiness floor; a seek-nudge tier and buffered-retirement gate run before any engine demote; a single same-engine playlist reload answers an otherwise-fatal mid-play CoreMedia -1008; and a proactive read-liveness soft-interrupt drives the remux input so playback does not drain into a stall. Apple TV, iPhone, iPad, and Mac.\n\n**Keep the prepared next episode across an engine demote.** Switching from AVPlayer to the mpv fallback used to drop the prepared next-episode source; it is now carried across, so auto-advance does not re-search cold. Apple TV, iPhone, iPad, and Mac.\n\n**Debrid cached sources rank and resolve faster.** A cached-source race is rank-sorted with an instant-URL short circuit, and the debrid-cache snapshot is threaded into the player's cached re-rank, so the right cached source surfaces first. Non-wanted add-on request budget is raised to avoid a false stall. Apple TV, iPhone, iPad, and Mac.\n\n**Last-stream memory is device-local on sync.** A watched position held in memory no longer bleeds across profile or device because it no longer rides into the account sync, so one device's in-progress title cannot overwrite another's. Apple TV, iPhone, iPad, and Mac.\n\n**TorBox circuits stop hammering a read-only cooldown.** A TorBox source that hits its quota now enters a cooldown fast-path and logs one suppression line per episode instead of re-asking on a loop. Apple TV, iPhone, iPad, and Mac.\n\n**Feed and update behavior.** Update eligibility is build-number-only (strict ordering, no legacy prerelease override); the release feed answers HEAD and honors If-None-Match with 304; and a prior-exit termination receipt is captured with MetricKit so a feed worker or app that died is recorded. All devices.\n\n**Android (in this build's source, not the Apple release).** Community JavaScript providers run again through a new QuickJS runtime and provider stack, and a usenet provider stack is wired into the debrid coordinator. These are the Android line; the Apple sideload release does not include them.\n\n## Please test\n\n- On the Apple TV, start a title and let it play for ten minutes or more, especially a 4K Dolby Vision or high-bitrate stream; confirm the repeated every-few-seconds stutter is gone.\n- Play sources from TorBox, AIOStreams, or AllDebrid that failed before and confirm they play.\n- With Dolby Vision or MKV remux enabled, play for several minutes and confirm no repeating stall-and-jump.\n- Auto-advance between episodes and confirm the next episode starts without a cold search.\n- On a second profile or device, confirm a watched position is not written across.\n\nIf anything still fails, share the Diagnostics log (Settings > Diagnostics).\n\n## Install\n\n**Mac (.dmg, easiest, never expires).** Download `VortX-macOS-v0.3.14-beta.26-ci.dmg`, drag VortX into Applications, then clear Apple's one-time quarantine: open it once, click Done, then **System Settings > Privacy & Security > Open Anyway** (or run `xattr -dr com.apple.quarantine /Applications/VortX.app`). Full guide: **[Install on Mac](https://github.com/VortXTV/VortX/wiki/Install-on-Mac)**.\n\n**iPhone, iPad, Apple TV (sideload the IPA).** The IPAs are unsigned, because VortX is open-source and distributed outside the App Store with no Apple Developer ID yet, so you re-sign them yourself with Sideloadly, AltStore / SideStore, or Signulous. No jailbreak. For one-tap updates, add the VortX source to AltStore / SideStore or your sideloading service so new builds appear automatically: **`https://raw.githubusercontent.com/VortXTV/VortX/main/altstore/source.json`**. Full guide: **[Installing on iPhone, iPad, and Apple TV](https://github.com/VortXTV/VortX/wiki/Installing)**.\n\nEach Apple asset lists a SHA-256 checksum (`SHA256SUMS-ci.txt`) so you can confirm your download matches what the public [GitHub Actions workflow](https://github.com/VortXTV/VortX/tree/main/.github/workflows) built from this code.", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.3.14-beta.26.2/VortX-tvOS-v0.3.14-beta.26.2-ci.ipa", "size": 64117046, "sha256": "b95241571d57d4c502125cb3402d207765716dfb9cc20d0b9b3c2c897a030d6c", "minOSVersion": "18.0" }, { "version": "0.3.14", "buildVersion": "227", "date": "2026-08-22", "localizedDescription": "# VortX 0.3.14 Beta 25 (build 227) Apple-only reliability release. It publishes the playback and Apple TV fixes prepared for Beta 19 (which was never made public) plus the source-picker, localization, and subtitle-hardening fixes. Android remains absent. ## What's new **Playback reliability (from the Beta 19 work).** Fixes the AVPlayer/libmpv/remux ownership races, the producer-lead stalls on Dolby Vision and high-bitrate 4K, the \"source failed\" fallback loops on TorBox/AIOStreams/AllDebrid, the repeating stall-and-jump pattern when Dolby Vision or MKV remux is on, and the duplicate subtitle flash. Apple TV, iPhone, iPad, and Mac. **Two-row Apple TV detail actions.** The detail page actions are now two semantic rows with single-line labels, a stable Library focus anchor, and predictable upward focus back to the title and menu bar, fixing the wrapped-button and focus-trap defects. Apple TV (full and Lite). **Audio-language filter in the source picker.** A new Audio control next to Quality filters and re-ranks the source list by audio language, session-scoped only, without changing your saved preference. Apple TV, iPhone, iPad, and Mac. **French catalog titles.** Home and Discover rows now translate catalog titles as whole phrases instead of word by word, so Popular Shows reads Séries populaires rather than Populaires émissions, and Featured Movies reads Films à la une. French. **External subtitles use the hardened transport on every player.** The built-in player's subtitle download now resolves the host once and connects only to the exact vetted address, with size limits and no redirects, matching the other player. Apple TV, iPhone, iPad, and Mac. **AltStore and SideStore updates propagate reliably.** Release promotion is transactional end to end, so build 227 should appear in the VortX source automatically. Apple TV, iPhone, iPad. ## Please test - Play sources from TorBox, AIOStreams, or AllDebrid that failed before and confirm they play. - With Dolby Vision or MKV remux enabled, play for several minutes and confirm the repeating stall-and-jump pattern is gone. - On Apple TV, open a title and confirm the detail actions sit on two rows with single-line labels, and that Up returns you to the top and the menu bar. - Confirm external subtitles render once, without the repeated flash. - Pick an audio language in the source picker and confirm the list re-ranks. - On a French device, confirm catalog titles read naturally (Séries populaires, Films à la une). If anything still fails, share the Diagnostics log (Settings > Diagnostics). **Apple TV HD crash fix.** Fixes a crash a few seconds after playback started on some streams on Apple TV HD: the on-device trickplay frame capture could abort the process during Metal rendering on that device class. Capture is now skipped on those devices only; newer Apple TV models are unchanged. **Reinstalling a removed add-on works again.** Installing a previously removed add-on URL no longer fails with \"Install did not confirm\", and reconnecting a Stremio account now imports its add-ons again even if they were removed earlier in VortX. Removing an add-on still sticks against background sync.", "downloadURL": "https://github.com/VortXTV/VortX/releases/download/v0.3.14-beta.25/VortX-tvOS-v0.3.14-beta.25-ci.ipa", "size": 63867930, "sha256": "d72233a5b40604c912748f1f8ed387cda730b274fa555e9b059a9f488fca13aa", "minOSVersion": "18.0" } ] } ], "news": [] }