0.4.0 Beta 14 - Paused playback, episode artwork, and Android fixes
Install this over any earlier build. Beta 14 adds another focused round of Apple playback repairs, fixes stale and missing episode artwork, makes the phone's source controls readable, and brings Android fixes into the same release. Apple build 247; Android version code 237. All Beta 12 changes are retained; its already-published packages and tag have not been replaced.
Beta 13 remained an unpublished draft. This release bundles its completed work with the final reviewed profile, Discover, and Android title-relation changes, all built from the same new source revision.
What's fixed on Apple
Returning to the app no longer reconnects a deliberately paused video. Foreground recovery previously treated a playhead that had not moved during a pause as a reason to refresh a debrid link or remount a local server connection. A delayed local-server check could do the same after a pause. Those checks now wait for Play, retain the suspension context, and belong to the exact current load. Changing source, episode, or player retires the old request. Real connection recovery remains available when you resume; this does not simply disable the recovery path. Apple TV, iPhone, and iPad.
A fresh-link response respects the latest Pause or Play press. On iPhone, iPad, and Mac, a debrid refresh remembered the transport state from before its network request. Pausing while that request was running could therefore start the replacement playing. The accepted replacement now explicitly applies your current intent, whether paused or playing. Apple TV retains its existing load-bound transport handoff.
A failed native player initialization reports an error instead of exiting the app. Allocation or initialization failure now reaches the current playback error path. A late failure from a retired load cannot appear on a newer title. This repairs a concrete process-exit path; it is not a claim that every reported launch crash has the same cause.
Episode artwork and metadata can recover after the first response. Episode heroes and thumbnails try the episode image, series background, and poster in order, without retrying the same failed candidate indefinitely. A late image result cannot overwrite a newer request. Apple TV's cached episode rows now refresh when the actual episode metadata changes, not only when the episode count changes. That also fixes same-count corrections to titles and season membership. Series watched rollups and season validity refresh on metadata changes across Apple platforms, while a valid manual season selection remains selected. Spoiler protection is retained.
The phone hero is taller, and the source controls no longer squeeze into vertical text. Portrait phone detail heroes use approximately 78% of the viewport. Play has its own row; Quality, Player, and Audio wrap below it at readable sizes. Tablet and landscape sizing remain separate. This is a targeted layout repair, not a claim that the entire planned phone or Mac redesign is finished.
Normal source rows preserve the add-on's formatting. Authored names and descriptions retain their line breaks, Unicode, emoji, and spacing instead of being replaced by a truncated parsed filename. Missing descriptions still have a filename fallback. The optional compact presentation remains compact.
Android
Android returns after the Apple-only betas. The Android packages also include the retained work since the last public Android build, Beta 1. Both APK variants contain phone and Android TV interfaces; "Full/MPV" and "Play/Media3" describe the player/distribution variant, not separate phone and TV apps.
Progressive native Usenet playback and safer cancellation. The retained Android NZB/NNTP work adds progressive playback, bounded parsing and assembly, credential ownership, and cleanup of cancelled or superseded playback leases. Back or a source change cannot let a late fetch revive the abandoned session. The cancellation regression now tests a genuinely stalled HTTP response body. Live-provider speed and device-specific buffering still require testing.
Source handoffs and split audio are better coordinated. Resolver results are fenced to the current playback request, source and player switches cannot accept obsolete completions, and MPV teardown drops retired failure callbacks. Split audio is configured before the new video load, avoiding an audio command racing against the outgoing item. Audio-health checks re-arm when a valid track list arrives.
MPV teardown no longer mutates a live observer list during dispatch. Observer callbacks use a stable snapshot, so a callback that removes an observer during close or recovery cannot invalidate that iteration. Callbacks run outside the registry lock.
Unavailable audio metadata is not mistaken for a video with no audio. Null, malformed, and incomplete track snapshots retain the last valid state. A genuinely empty track list is handled separately. The final audio-health check no longer cancels itself while refreshing metadata, so the existing recovery path can act on an unavailable or failed audio output.
Failed-source controls are reachable with a TV remote. Focus moves to a usable source or the close control after source results or failure. Focused controls have a visible border, and Cancel stays available while a replacement is resolving. Back and cancellation retain their existing request-ownership checks.
Source details remain readable on narrower screens. Badges wrap instead of competing for one oversized row. Phone and TV source rows keep the add-on's authored description and line breaks; the optional compact phone view remains parsed and short.
Missing primary artwork has a fallback. Phone heroes and episode images, plus TV detail backdrops, can fall back to other available artwork. Failed or outdated image callbacks cannot advance a newer request. TV's background gradient and episode spoiler blur remain in place.
Plex manual linking requests a compatible short code. The Android manual-link flow now requests the code type expected by plex.tv/link, matching the existing Apple flow.
The retained interface and profile work is included too. Android gains the rotating phone Home hero, TV ambient-hero lifecycle repair and poster-style preferences, source-scoped player selection, detail-source audio selection, and debrid-cloud access from Search. Discovery settings are profile-scoped, overlay watched mutations retain their recency, and the TV scrubber and player controls have explicit remote-focus handling. These are incremental parity improvements, not a finished one-to-one Apple redesign.
Declared prequels and sequels are reachable on phone and TV. Supported add-on relation links open internal movie or series detail pages, including namespaced anime IDs carried by supported series routes. Invalid links, unsupported types, self-links, and duplicate entries are skipped. This does not infer a chronology or add support for every custom add-on media type.
Movie collections offer dated release neighbors. Previous and next titles use valid release dates and the exact current collection member. These are explicitly labeled release order, not narrative prequels or sequels; undated titles remain available in the full collection.
Discover's collections setting now controls Discover. TV previously read the Home visibility switch, and phone Discover had no collections-hub consumer. Both now use an independent Discover model, load artwork, react to provider and region changes, and cancel obsolete refresh work. A regression test also covers a settings notification arriving during initial loading, before the previous implementation had subscribed.
Profiles
Collections visibility stays with the selected profile on Apple and Android. Home and Discover visibility now travel in the profile's discovery preferences instead of leaking through global settings. Partial sync documents retain existing choices; switching to a profile without a saved value uses the default. Apple views and the open Android settings screen refresh when the active profile changes.
Updates and install feeds
Latest beta publication and update feeds now agree. The authenticated feed receiver accepts the release coordinator's explicitly selected Latest-beta channel while retaining its signature, asset, source, checksum, and generation checks. Publication proves the release became public before requesting Latest, and records that exact publication immediately so a failed Latest step can compensate the correct release. Ordinary prereleases still do not take over Latest. Beta 12's public feeds were separately repaired and verified; this build retains those fixes.
Verification and remaining limits
Both Android application unit suites passed after the final Discover changes; the MPV-seam suite passed earlier in this release cycle. The new relation, release-neighbor, profile-isolation, and initial-refresh regressions passed. Apple profile isolation passed 25 checks, and the changed Apple source compiled for iOS Simulator and tvOS Release. Apple verification includes executable playback/remux, episode-identity, deferred-foreground recovery, and native-debrid contracts, together with platform compilation. The release workflows independently verify the actual packaged engines, signing, checksums, and feed provenance before publication.
Physical playback still matters. These are specific implemented repairs, not a blanket promise of zero DV stalls, zero dropped frames, or flawless live NNTP throughput on every device and provider. Full Apple-to-Android feature/design parity and the broader phone/Mac redesign remain ongoing work. A separately identified Android rapid-title-selection race is recorded for the next work session; it was not bundled as an untested last-minute change.
Please test
- Pause an Apple TV video, leave the app, return, and confirm it stays paused. Then press Play and confirm a moved local-server connection or stale provider link can recover without selecting the episode again.
- Pause or resume while a debrid source is reconnecting on iPhone or Mac; the replacement should follow your latest choice.
- Open an anime or series whose episode artwork arrives late. Images and corrected episode metadata should update without changing seasons first.
- On iPhone, check the larger hero, the Play row and filters, and your add-on's original multi-line source descriptions.
- On Android TV, test HTTP add-ons, MPV audio, repeated source refresh, failure recovery, and closing the player using only the remote. Report remaining failures with a diagnostic log and the selected player.
Install
Android update-check limitation: the new signed Beta 14 APKs are published below, but the Android in-app update feed is still serving the earlier Beta 1 entry. Install the matching APK directly from this release for now. Apple appcast and install feeds have been verified on Beta 14. The Android feed correction remains separate work; the release APKs have not been relabeled or replaced.
Mac (.dmg). Download VortX-macOS-v0.4.0-beta.14-ci.dmg, drag VortX into Applications, and use System Settings > Privacy & Security > Open Anyway if macOS asks. Full guide: Install on Mac.
iPhone, iPad, and Apple TV. Sideload the matching IPA using your usual signing service. Full guide: Installing on iPhone, iPad, and Apple TV. The verified VortX install feed is updated with publication.
Android phone and TV. VortX-0.4.0-full-mpv-universal.apk includes VortX Player/MPV. VortX-0.4.0-play-media3-universal.apk is the Media3 variant. Both APKs include the supported architectures; choose the variant you already use to retain its normal update path. The Play bundle is also attached for its distribution workflow.
Check SHA256SUMS-ci.txt for Apple downloads and SHA256SUMS-android.txt with SIGNING_PROVENANCE.txt for Android.