github VortXTV/VortX v0.4.0-beta.12
0.4.0 Beta 12 - Apple playback recovery, add-on sync, and Usenet

one hour ago

0.4.0 Beta 12 - Apple playback recovery, add-on sync, and Usenet

Install this over any earlier build. Beta 12 brings together the Apple fixes and features landed since Beta 10: playback-state recovery, more reliable add-on ordering and watch-state sync, artwork repairs, multiple Usenet servers, direct NZB indexers, and related titles. Apple build 245.

Beta 11 did not publish: its packaging run ran out of disk space. This release uses a fresh tag and fresh packages from current source, including the later fixes. It is promoted as Latest while retaining its beta name. Apple TV, iPhone, iPad, and Mac are included; Android is not attached.

What's new

Keep more than one Usenet server. Save, edit, disable, remove, and prioritize multiple NNTP servers. Existing single-server settings migrate. The resolver preserves the servers supplied by your add-on, then tries your ordered saved servers, then the existing TorBox cloud fallback when configured. Credentials stay in account-scoped secure storage. TorBox cloud fallback requires its API key and may need to prepare an uncached job; it is not a promise of instant playback from every provider.

Search NZBGeek and other Newznab indexers directly. Indexer settings now feed the normal Apple source lists. A series search uses the episode you selected, not a stale watched episode, and completed empty searches do not keep restarting. Requests and results are scoped to the active account, profile, and configuration. HTTPS credentials and NZB links are excluded from diagnostics and settings backups.

Open prequels, sequels, and collection neighbors. Apple detail pages now expose explicit related-title links supplied by add-ons. Known TMDB movie collections also show adjacent releases by date. This is not a complete anime relationship database or an inferred story chronology.

What's fixed

An interrupted AVPlayer seek can recover instead of silently hanging. A current seek could return “not completed” after its recovery deadline had already been cancelled, leaving neither a successful landing nor a recovery owner. The completion now checks the exact request, item, and load first. An interrupted current seek uses the existing target-owned remux recovery; a direct asset reports a retryable seek error. Old callbacks cannot cancel a newer seek, restore an obsolete position, or manufacture an episode ending. Committed pause state and track choices are retained.

Paused seeks show the position and subtitle cue where the player actually landed. AVPlayer can land slightly away from the requested time. The producer's buffer accounting already used that actual landing, but the paused controls and cue could keep showing the requested position until another clock tick. They now use the same accepted landing.

A rejected retry no longer leaves the old video under a new spinner. Apple TV used to clear the live surface and start a fresh load timeout even if the engine refused the replacement. State resets, selection restoration, and the new timeout now belong only to an accepted load. A refused load also retains the current resume-seek watchdog instead of cancelling the last recovery owner.

Pause, Play, and old end-of-episode work stay with their own playback session. Play during a paused remux recovery publishes the resumed intent before waiting for restoration. Rewinding cancels the previous paused EOF and its tail recovery; an old same-item callback cannot restart from the wrong point or jump to the next episode. Blocked seek admission has a request-owned deadline, and successful seeks immediately reconcile the producer's retained buffer even while paused. These are targeted state and liveness fixes, not a longer generic stall timer.

Changing players uses the current source. AVPlayer and VortX Player handoffs retain the selected URL, request headers, episode, position, and transport intent. A late frame from the old mount cannot cancel a fresh-link recovery. Selecting an already-mounted engine with a newly resolved URL issues that load instead of silently ignoring it. This includes the provider-reconnect path used by TorBox.

Startup keeps a valid video surface intact. The drawable is sized before mpv initialization. The first layout no longer tears down an already-valid decoder with a video-track reset; a genuinely unsized surface still has its one-shot recovery. Mac backing-scale changes use the native resize/wake path. This removes a concrete source of avoidable startup work without pretending every reported ten-second start has the same cause.

Hardware decoding has a second hardware route before software. Apple devices try direct VideoToolbox, then VideoToolbox copy-back when direct surface import is unavailable. Explicit decoder overrides remain respected. Simulators retain their separate direct-only policy because their upload limitation is different. Diagnostics refresh codec and pixel-format evidence after reconfiguration so later fallback reports describe the active state.

Native subtitle backgrounds respect the selected style more closely. Both text-background attributes are now set explicitly: the enclosing subtitle window is transparent, while the selected outline, shaded, or box style controls the character background. This preserves the earlier single-renderer fix. Authored or bitmap subtitles and system accessibility overrides can still affect the result.

NNTP reads are allowed to keep making progress. A continuously downloading article could be cancelled by an absolute 20-second timer. Nonempty incoming data now renews the inactivity timer, with a separate overall safety bound and article-size ceiling still enforced. Completion, cancellation, and failure retire both timers. Healthy foreground pauses retain useful NNTP data. Existing archive, byte-range, seek, reopen, and provider-failover protections remain in place; live throughput and article availability still matter.

Continue Watching can repair its episode list without losing the selected episode. Refresh accepts a valid initially unloaded model and binds returned metadata to the exact series and episode request. Stale refresh callbacks cannot overwrite a newer request. Temporarily missing metadata no longer discards a matching watched-completion intent; a later explicit unwatch cancels that intent rather than having it replay unexpectedly.

Your add-on order is an explicit choice, not response timing. A routine sync cannot replace a newer peer order with this device's stale applied order, and a partial engine snapshot cannot shrink the saved roster. Failed uploads retain pending reorder intent; delayed acknowledgements cannot erase a newer edit. Source groups follow the app's add-on order, and reordering invalidates the live source cache so slow responses do not determine placement.

Removed add-ons stay removed, and missing owned add-ons can recover. Snapshot decoding retains the last valid roster on failure. Account restoration respects removal/reinstall receipts and can repopulate a partially hydrated engine from the already-fetched current document without requiring a restart. Older documents and stale account credentials are rejected. All devices should be updated: an older client still contains its old sync behavior.

Turning off Stremio mirroring actually keeps VortX-owned changes local. Installing, restoring, removing, and replacing app-owned add-ons use local collection actions when mirroring is disabled. Routine refresh respects the setting, while deliberate Stremio import remains available. Changing an add-on URL validates the replacement before removing the working descriptor and preserves its slot.

QR add-on pairing keeps the authority issued by the relay. Claim and acknowledgement use the correct paired-session authority instead of losing it between steps.

Library progress and watched actions merge as complete observations. Episode, position, duration, and timestamp travel together. Newer peer progress can update Continue Watching cards and resume selection without overriding active playback or explicit local rewinds. Owner and profile watched/unwatched actions carry causal receipts, badges read the merged state, and whole-season marking writes the history carrier once. Durable watched history is kept separately from the short Continue Watching rail.

Late artwork reaches the screen, including episode images and heroes. Same-title updates now publish changed posters, backgrounds, logos, episode inventories, thumbnails, and trailers after the original model has appeared. Large-image decode permits remain held for the full load. This fixes publication and resource-accounting defects, not absent upstream images.

Trakt Continue Watching can resolve its supplied artwork. Scheme-less image URLs are accepted, local library art is available as a fallback, and cached aliases join only the exact title instead of unrelated same-name entries.

Apple TV contribution receipts stop growing an oversized preferences value. Successful source receipts move into an atomic file, with verified migration and a small recovery marker, instead of accumulating tens of thousands of entries in UserDefaults.

Seek-preview failures no longer trigger a retry storm. Generation-aware cancellation and bounded backoff preserve later recovery without repeatedly hammering an unavailable preview source. A missing community preview is still reported honestly rather than invented.

Website and account

The separately deployed vortx.tv dashboard update is retained: one-time Stremio import uses the official API directly, preserves the entered password exactly without storing it, and distinguishes credentials, network, and malformed-response failures. Cancellation or account changes invalidate older attempts. Dashboard add-on edits are serialized, preserve ownership and order, and refresh from the encrypted account document.

An account save is not proof that every device installed a manifest. The separately hosted manifest proxy and any remaining cross-device conflict still need their own evidence; this release does not claim to have repaired an unidentified proxy deployment.

Verification and limits

Focused production-policy and source-contract tests cover the repaired ownership, pause/seek, source ordering, watch-state, artwork, QR, indexer, and NNTP paths. Real loopback fixtures cover streaming articles, raw/archive byte ranges, cancellation/reopen, and two-provider fallback. Apple engine and platform builds are checked separately from those protocol tests.

Public packaging is bound to the immutable tag, build number, package metadata, checksums, and signed feed receipt. The workflow verifies the install-feed routes before publishing and checks the public assets afterward. It reclaims finished build inputs before creating the Mac disk image and verifies the Mac ad-hoc signature.

Physical Apple TV testing remains essential for sustained Dolby Vision playback, real-provider NNTP throughput, frame pacing, pause/seek/source switching, and the exact ten-second-start report. The separate iOS pre-player crash report has no captured stack establishing its cause and is not labelled fixed by this beta. Passing synthetic fixtures is not a guarantee that every field playback failure is resolved.

Android

No Android package is attached to this Apple-priority beta. The source retains the bounded split-audio trailer-loading correction, but broader Android MPV/audio stability, remote focus, Back handling, Shield testing, and Apple-style detail/hero and feature parity remain follow-up work. No unverified percentage-complete claim is made.

Please test

  • Resume a series from Continue Watching, seek backward while paused, press Play, then use Next and Previous. Confirm the right episode, position, and watched mark.
  • Pause a compatible Dolby Vision title, resume it, and switch players or sources. Export this build's diagnostic if it freezes, reconnects, or falls back.
  • Test fresh starts and high-bitrate playback, including a source that uses VideoToolbox copy-back.
  • Reorder, remove, reinstall, and replace add-ons on two updated devices, including offline changes and relaunch. Check source-group order as well as the add-on list.
  • Test watched/unwatched changes and library/CW progress across TV, phone, and Mac.
  • Try your prioritized NNTP servers and NZBGeek/Newznab searches, including an episode advance, pause, and backward seek.
  • Check the previously missing anime artwork, Trakt thumbnails, related-title links, QR pairing, and native subtitle background style.

Install

Mac (.dmg, easiest, never expires). Download VortX-macOS-v0.4.0-beta.12-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. Full guide: Install on Mac.

iPhone, iPad, Apple TV (sideload the IPA). The IPAs are unsigned distribution packages; re-sign them with Sideloadly, AltStore / SideStore, Signulous, or your sideloading service. No jailbreak is required. For updates, add the VortX install source. Full guide: Installing on iPhone, iPad, and Apple TV.

Each Apple asset has an entry in SHA256SUMS-ci.txt so you can verify the download against the public release workflow.

Don't miss a new VortX release

NewReleases is sending notifications on new releases.