0.5.0 Beta 1 — Native core, Cinema, and durable watch state
Update every device using the same VortX account. Beta 1 brings VortX's own native account and streaming core, a more consistent Cinema experience across Apple and Android, durable profile and Watchlist edits, history-preserving migration, and further repairs to episode preparation, pause/resume and subtitles. Your existing controls, integrations, downloads and add-ons remain; this is not a feature reset.
Apple build 260, Android version code 241, app version 0.5.0. These advance Beta 21's build 259 / code 240. Update your existing installation rather than deleting it or resetting your account.
What's new
VortX has its own native account, catalog and streaming path. The native core handles profiles, add-on resources, catalogs, metadata, sources, subtitles, saved Library, Continue Watching and viewing history through the existing app surfaces. Native shipping selection is now the default. Its package path omits the legacy Stremio core and embedded Node runtime on Apple, and the legacy core library on Android. Full Apple targets use the native in-process streaming server; Mac uses a native daemon. Lite retains its no-embedded-server boundary. An optional Stremio connection remains a separate integration, not your VortX sign-in.
Account changes are saved before the interface reports success. Profile, add-on, watched and Watchlist changes are committed to an encrypted checkpoint and read back before publication. Each operation stays with the account and profile that started it. A late response after sign-out or a viewer change cannot populate the replacement viewer. Uncertain writes enter recovery instead of allowing another edit to overwrite an unknown result; offline opening uses an authenticated existing checkpoint, never an invented empty account.
Concurrent devices merge before retrying an upload. Apple and Android now advance from the cloud revision they actually merged, rather than using a later wall-clock value to overwrite another device's accepted edit. A rejected upload must pull and merge again. New accounts use a guarded create-only initial revision, and pending edits are acknowledged only for the accepted generation. These are reproduced sync-path repairs; physical multi-device convergence remains a separate acceptance check.
Profiles can keep independent streaming accounts without borrowing another viewer's history. Shared and independent accounts retain separate credentials, resources and history. Connecting or replacing a profile's account requires its verified source identity and accepted binding; old data from account A cannot be relabelled as account B. Sparse website edits preserve unrelated profile settings and bindings. The selected viewer remains local to each device.
Watchlist is separate from saved Library and viewing history. Native Watchlist membership is stored per title and profile, committed, then confirmed before its button changes. Removals retain their own records so an older list cannot silently restore a removed title. Existing authenticated lists seed missing titles without overwriting newer edits. The 1,000-title limit reports capacity instead of deleting an older title. Remote Trakt/SIMKL lists retain their separate behavior.
Older watched history is migrated from evidence, not guessed. Compressed watched bitmaps are decoded against episode inventories from the original configured provider and the exact account/profile/source. The original encrypted snapshot is retained. Unavailable or ambiguous history stays visibly pending with Retry, rather than becoming empty history or fabricated progress. Retry continues to use its historical source even after the current configuration changes; it cannot import that history into a replacement account. Pending independent-account links preserve the active binding and can resume after restart.
Cinema keeps the useful routes together. Apple Home, Browse/Search, Library, Watchlist, History and Downloads share a consistent hierarchy on iPhone, iPad and Mac. Quick View keeps Watch Now, Add to Watchlist and Details reachable on the initial phone viewport. Cards retain artwork, ratings, facts and synopsis; episode detail retains fuller metadata. Source badges wrap on narrow screens and add-on groups remain readable. Mac keeps horizontal navigation, a visible Search field, native close/minimize/zoom and one detail Back.
Android phone and TV gain the same navigation structure. Featured Home and Browse can share a destination while respecting the separate-Browse preference. See All opens the selected row, including client-generated rows and paging. Library exposes Downloads, Watchlist and Previously Watched without confusing them with saved membership. Continue Watching uses an exact one-shot resume action or falls back to Details when no matching saved stream exists. TV restores the invoking shelf or Library entry on return, and ordered source tabs jump to the chosen add-on group.
Choose Local, Trakt or SIMKL Continue Watching for each profile. One primary source is selected rather than silently mixing services. The default is Local with 20 items; choose Last 90 days or 20/40/60/80/100 items. Account/profile, service selection and foreground refresh stay attached to the request, so an older response cannot replace a newer choice. Source-only and unsupported cards retain truthful supplied facts without claiming an unavailable resume action. Home and Apple Top Shelf respect the captured selection and private-artwork ownership.
Local Continue Watching retains the full resumable inventory. The native inventory includes resumable titles beyond the first 30, including titles not saved to Library, and survives cold reopening. Exact episodes, known aliases, explicit rewinds to zero and positive progress with unknown viewing dates are preserved without inventing timestamps. Inert legacy zero-offset records with no viewing event remain excluded. Date windows can exclude unknown dates; this does not turn provider snapshots into native watched history.
Each profile controls add-on visibility and source ranking. A viewer inherits account defaults until explicitly changing visibility or order. Disabled add-ons remain profile-scoped; accepted reorders and replacements are durable, ordered changes. Failed or stale work cannot publish a misleading successful list.
Website add-on changes have durable acknowledgements. Deliberate install, remove and reorder edits carry their account-bound event through the native hosts' checkpoint and matching receipt. Newer removals and account changes remain visible conflicts instead of being falsely acknowledged as restoration. Unsupported work stays pending without blocking independent valid edits. The matching website is deployed, reads native state after migration and validates optional manifest fields while preserving supported defaults and safe extensions. Deployment is not proof of authenticated multi-device or live-provider success.
What's fixed
Next-episode preparation stays with the viewer, episode and chosen preference. Continue Watching preparation is bounded and captures account/profile, episode, source generation and chosen release. Leaving the route, switching viewer or replacing a source/account retires the old result. Next, Previous, preloading and batch downloads carry the chosen add-on/release preference or tie-break while respecting current availability, expiry and allowed fallback. Android Continue Watching dismissal checks the authoritative captured-owner result instead of assuming that a completed request has removed the card.
Fresh shows start with regular episodes, while explicit specials still work. Default Play and initial season selection prefer season 1 or the first regular inventory. A selected special, exact Continue Watching target or resumed special remains authoritative; specials-only shows remain supported. This fixes default selection, not watched tracking after an external-player return.
Binge playback remembers the audio language actually selected. Accepted in-player changes update the captured series choice. Next-episode warming prefers compatible language metadata while retaining the chosen add-on/release tie-break. A late outgoing track inventory cannot teach the next episode the wrong language. Missing compatible evidence can defer preparation or fall through to allowed alternatives, rather than calling an incompatible warmup confirmed.
Pause and accepted seek targets survive recovery and replacement. Same-media source/player replacement carries the viewer's pause intent; rejected replacements leave the current player intact. Recovery retains the current seek's target through a slow reopen, including zero and near-start NNTP positions. Manual seeks retire older automatic resume work. Old callbacks cannot apply an obsolete target or turn a paused replacement into unsolicited playback; a newer Play or different episode remains authoritative. Preview return retains the original owned position and pause choice.
Dolby Vision startup gets a real decoding opportunity. On Apple TV, bounded metadata preparation is separate from the unchanged active decoding allowance. That allowance begins at the exact item's attachment rather than expiring while metadata is still loading. Late metadata, an old source, Stop or terminal failure cannot reattach a retired item. Explicit remux Off remains authoritative. This addresses the reproduced pre-attachment race, not every Dolby Vision rejection, stall or output path.
HLS startup can finish its first playlist before parking production. Before playback can consume anything, startup temporarily borrows unused history space instead of stopping at the steady forward limit too early. The grant ends on durable master publication or an admitted positive playback receipt, restoring the unchanged 160 MiB ceiling and 136 MiB resume line. Seeking, pausing and prepared adoption cannot regrant it. Preparation requires an actual closed-boundary park receipt, not just a requested pause. Readiness deadlines and the 1 GiB physical cap are unchanged; arbitrary oversized media boundaries are not promised to fit.
Apple VortX Player cache recovery uses the state actually reported by mpv. Typed native cache statistics expose the low-level seek counter needed for bounded reanchor recovery. Recovery checks current source, command and pause ownership; an optimistic time position is not proof of a completed seek. The temporary cache option is restored after success, rejection, cancellation or timeout. Memory-pressure limits remain in force, and this does not change decoder policy or promise unlimited throughput.
Apple seek diagnostics keep native evidence attached to the current source. Diagnostics record native seekability, demuxer byte position, source size and codec profile under the current source/command ownership. Unavailable or malformed properties remain labelled rather than being guessed. Demuxer position is not an HTTP Range request offset or returned Content-Range; these diagnostics do not themselves fix a stall or establish a hardware-decoder cause.
A blocked HTTP read no longer holds the reproduced native seek path behind an old response. The reviewed Apple player dependency interrupts obsolete I/O for the accepted seek generation and reopens only that source's AVIO state with its captured request options/cookies. Interrupted MKV Cues remain retryable, so a rapid newer seek does not inherit an incomplete index. The assembled Mac player passed the seven controlled native seek/Stop/replacement cases, and all nine Apple slices were rebuilt and byte-verified. This proof covers top-level seekable HTTP(S) GET, not nested HLS/curl, Android's separate player dependency, historical AIOStreams causes or physical decoder behavior.
Apple request headers and User-Agent stay with their source. The Apple mpv controller sets complete sanitized header values—including commas, quotes and backslashes—through a typed array rather than a parser that could split one field. Rejected header admission cannot retire the current load or dispatch a replacement. A later source with nil/empty headers or User-Agent restores the immutable configured Safari default and clears the old referrer/header list; a first source's custom or trailer identity cannot become the next source's default. Explicit identities remain supported.
Terminal errors cannot restart an old item underneath the error screen. Queued recovery/property callbacks are retired after terminal failure. Retry remains tied to the episode whose resolution failed, including timeout, duplicate outgoing-source and rejected-command cases. Old native recovery cannot dismiss the useful error or start the previously played episode.
Subtitle background choices affect the real mpv renderer. Existing background styles now drive the subtitle box. External captions activated or retimed while paused refresh at the achieved remux source position without waiting for a periodic tick, seeking or resuming. Native fallback remains untouched while external captions are off. Track selection, timing, styling, file-matched subtitles and pinned transport remain. Accent controls stay inside their shapes, with opaque presentation under Reduce Transparency.
An explicit Apple Stremio reconnect can restore deliberately imported add-ons. Owner/shared sign-in imports authenticated add-ons additively into the native roster, including a deliberately re-imported same-URL descriptor. Passive authentication or ordinary reopening does not resurrect removals. If credentials save but the import cannot be confirmed, the app distinguishes that result and requests refresh/Retry instead of claiming complete success.
Native Usenet read-ahead uses bounded concurrent work. Article batches now warm through the same validated single-flight path rather than serial small reads. Seeking cancels old warming before waiting for the replacement; stale completions cannot restart it. Useful nearby coverage is prioritized, cold archive caches are reclaimed before recently used playback caches, and contiguous coverage stops at a real hole. The four-connection default and memory budget remain unchanged. Saved-provider routing supports the reviewed ordered alternatives, and one article deadline covers queues and all fallback attempts instead of resetting per provider.
NZB sources keep their providers, mirrors and exact selections. Apple native Full eligibility no longer depends on a legacy listener; Lite/missing-runtime local playback remains unavailable and remote TorBox stays independent. Android preserves add-on NNTP servers and NZB mirrors, ordered saved-provider fallback and a positively confirmed cached TorBox choice. Native operations retain explicit file/episode selectors and owned cancellation. Configured Newznab results join the native source list under the actual account/profile/configuration; unknown roster state has no Owner fallback, and search results are not advertised as cache readiness.
Playback and downloads retain the Usenet operation they own. Apple captures the original account/profile before server warmup and carries the accepted operation through playback and individual/batch downloads. Cancellation, removal, replacement and authority retirement release that operation; an older completion cannot be transferred to a new owner. Bounded same-source NNTP starvation recovery retains its resume target instead of repeatedly clearing useful cache or restarting forever.
Fresh Apple player inputs and package checks replace stale assumptions. The selected MPVKit package contains rebuilt FFmpeg 9, retained Dolby Vision splitting and Apple SecureTransport. The Mac CoreAudio initialization-failure repair removes listeners before their released output context can be reused. Typed native provenance is written into actual target plists, and package-path alias handling now uses the canonical extraction root. These dependency/content and package-verification repairs do not establish final app signing, installation, launch or device playback.
Retained from Beta 21 and earlier
Apple keeps its existing player and discovery features. The iPhone/iPad startup repair, compact touch player, all fourteen seek-bar styles, pinch Fit/Fill, chapters, audio/subtitle tracks, timing and styling, file-matched subtitles, skip-times editing, configurable intro/credits countdown with Off and Cancel, source/player switching, preview return, external-player handoff, background playback and supported AVPlayer Picture-in-Picture remain. Search, Discover, Live, Library, ratings, where-to-watch, collections, profiles, pairing, diagnostics, integration settings, Trakt/SIMKL, offline downloads, watched-download controls, NZB indexers and ordered NNTP servers remain reachable. Mac retains native window controls and the repaired Search/Back behavior. Full/Lite server boundaries remain explicit.
Android keeps both phone and TV functionality. Accounts/encrypted sync, profiles and who's-watching, catalogs/source filters, debrid, detailed player controls, subtitles/audio, skip editing/countdown, background playback, Picture-in-Picture, local previews, live TV, torrent serving, offline downloads/retry, Google Cast, external-player handoff, Trakt/SIMKL, list imports, Newznab indexers, ordered NNTP servers, Home rail preferences and signed configuration remain. Full uses mpv with Media3 fallback; Play uses Media3 without the GPL player libraries. Native sorting, profile-owned rail/order edits, chosen-release continuity, downloaded-episode resume and terminal-error Retry are retained. This is not a claim of complete Apple/Android visual or feature parity.
Known limitations
- No universal playback closure. Sustained Dolby Vision pause/seek/output, redirected AIOStreams/TorBox HTTP behavior, other nonzero-offset freezes, provider-specific NNTP buffering, frame pacing, receiver output and overnight playback still need exact current artifact/device evidence. The controlled HTTP repair is not proof of every historical stall or a hardware-decoder fix.
- Provider and device acceptance are separate from source tests. Native/host regressions, complete native Linux/macOS CI, selected player-package readback and deployed website content do not establish every physical account-sync, live Trakt/SIMKL/indexer/provider or installed-device workflow. Library, Watchlist, remote integration lists and viewing history remain distinct.
- Some history must remain pending. An unavailable/ambiguous historical provider, incomplete watched evidence, unsupported edits or uncertain account link cannot be acknowledged as successful migration. Use Retry; unresolved evidence is retained rather than discarded.
- Usenet is not unlimited throughput or archive repair. Compressed/encrypted archive reconstruction and PAR2 repair remain unsupported. Larger buffers do not change those limits, and TorBox preparation needs its configured API key and may prepare an uncached job.
- Infuse return does not establish watched completion or automatically suggest the next episode. Apple PiP still requires an accepted AVPlayer path; the mpv/remux repairs do not add mpv PiP.
- Broader requested features remain unfinished: remote cross-device download control, meaningful source-similarity thresholds, broader SIMKL calendar/recommendation/rewatch/custom-list support, Library genre grouping, the complete advanced Discover/filter bundle and Windows support. They remain in scope, not removed requirements.
- Deployment boundaries remain: Mac is Apple Silicon only, not a universal Intel or notarized distribution; Apple distribution IPAs require re-signing/sideloading. Android Full and Play are different engine distributions, not different device builds.
Please test this beta
- Update all devices on one VortX account. Create/edit a profile from the app and website; confirm the full record arrives without changing another device's selected viewer. Switch shared/independent profiles and check their history, add-ons and Watchlist remain with their owners.
- Install, remove and reorder add-ons from both updated clients and the website. A rejected/conflicting change should stay visible without resurrecting a newer removal. Explicit Apple Stremio re-import is different from ordinary reopening.
- Add/remove different Watchlist titles on two devices, including an operation followed by account/profile replacement. Keep saved Library, want-to-watch membership and viewing history separate. Retry pending history against its original provider without exposing private identifiers.
- Try Local/Trakt/SIMKL and every Continue Watching window. Open a regular episode, an explicit special and a resumed special. Choose an add-on/release and actual audio language, then exercise preloading, Next/Previous and a failed candidate.
- Pause before switching source/player, resume at zero/near the start, seek elsewhere and wait beyond the former recovery interval. Failed episode Retry must stay with that episode; older recovery must not take over.
- Check Cinema/Quick View/See All/Library/Downloads and TV focus/Back during slow work. While paused after remux resume, change external captions or their delay. Export Diagnostics promptly for blank, stalled or wrong-position playback, including build, device, episode, add-on/provider and the preceding action.
Install
Requires iOS 16, tvOS 18, macOS 14 or Android 8.0 (API 26). iPhone and iPad use the same IPA; Android phone and TV use the same APK for each distribution.
| Platform | Download | Distribution |
|---|---|---|
| Apple TV Full | tvOS Full IPA | Native embedded server; re-sign/sideload |
| Apple TV Lite | tvOS Lite IPA | No embedded server; re-sign/sideload |
| iPhone and iPad | iOS / iPadOS IPA | One unsigned distribution IPA; re-sign/sideload |
| Apple Silicon Mac | macOS DMG | arm64 application with matching native daemon |
| Android Full | Full APK | Sideloaded mpv distribution with Media3 fallback |
| Android Play | Play APK | Media3 distribution without GPL player libraries |
| Android Play bundle | Play AAB | Distribution bundle, not directly installable |
Each Android APK serves phones and Android TV and includes arm64-v8a, armeabi-v7a and x86_64. The filename selects the engine/distribution, not the device type. See the Apple installation guide or Mac installation guide.
The AltStore / SideStore source and in-app update channel carry this release. Apple IPAs require re-signing/sideloading; the Apple Silicon Mac app is ad-hoc signed, not notarized. Package verification does not replace the device/provider tests described above: this is a beta, not a claim that every historical playback problem or parity gap is closed.