Releases: perpetus/stremio-native
Release list
v1.0.4
Stremio Native v1.0.4
A high-performance native Stremio desktop client with a Slint interface, embedded Rust stream server, and hardware-accelerated libmpv playback.
Release notes
Downloads
- Windows: Installer | Updater package
- Linux: Binary
- Debian / Ubuntu: DEB Package
- Arch Linux: Package
- Fedora: RPM Package
Reliable Windows self-updates
- Stages the downloaded installer first, hands it to the outer application lifecycle, and launches it only after the UI, playback engine, tray, and stream server have shut down.
- Enables Inno Setup logging and a force-close fallback for older clients that launch Setup before their shutdown completes.
- Moves fresh native installations to
%LOCALAPPDATA%\Programs\stremio-native, avoiding collisions with the official Stremio installation while preserving the registered directory for upgrades.
Native operating-system media controls
- Adds SMTC on Windows, MPRIS on Linux, and MediaRemote integration on macOS for metadata, playback status, play/pause, seeking, stop, and next-episode commands.
- Adds a Windows taskbar thumbnail play/pause control and taskbar playback progress, with a stable AppUserModelID for correct application naming and icon resolution.
- Holds an operating-system sleep inhibitor only while video is playing and releases it on pause, stop, player close, or process shutdown.
Changes since v1.0.3
Features & Enhancements
- add native media controls and reliable self-updates (a78c19b)
Full comparison: v1.0.3...v1.0.4
v1.0.3
Stremio Native v1.0.3
A high-performance native Stremio desktop client with a Slint interface, embedded Rust stream server, and hardware-accelerated libmpv playback.
Downloads
| Platform | Download |
|---|---|
| Windows installer | Download |
| Windows automatic updater | Download |
| Linux x64 portable | Download |
| Debian / Ubuntu Package | Download |
| Arch Linux Package | Download |
| Fedora / RedHat RPM Package | Download |
| SHA-256 checksums | Download |
Verify downloads against SHA256SUMS.txt.
Release notes
Browser-style smooth scrolling
- Retuned Slint's scroll physics to browser values across every scroll surface: a 100px wheel notch (was 60px), a 250ms cubic ease-out per notch (was a 180ms quadratic step), and a 1200px/s² fling deceleration (was 2000px/s²).
- Added a cubic ease-out simulation matching the Chromium impulse response, integrated incrementally so it composes with
ListView's mid-animation viewport corrections instead of fighting them. - Kept touchpad gestures tracking the fingers 1:1 by applying the notch scale only to phaseless wheel steps.
- These live in
vendor/i-slint-core; seevendor/i-slint-core/PATCHES.md.
Runtime performance and responsiveness
- Reused Turso connections and in-process Axum routers, applied connection PRAGMAs once, and moved log retention work off the write path.
- Removed the fixed 4ms state-projection delay, reused Slint stream models, and reduced image decode allocations and disk-cache syscalls.
- Shared MPV track state across high-frequency updates, parsed track metadata in one pass, rendered video before Slint composition, and moved shader filesystem preparation off the UI thread.
- Shortened the stream-row highlight transition and stopped the player buffering timer when playback is idle.
Maintenance and playback polish
- Updated the Rust dependency set, including Turso, Tokio, mlua, zip, and arboard.
- Restored player shortcut focus after automatic file transitions and improved native pointer visibility recovery.
Changes since v1.0.2
Performance
- improve responsiveness and prepare v1.0.3 (76c1b4a)
Maintenance
- save working tree before smooth scroll plan execution (7b67b5e)
Full comparison: v1.0.2...v1.0.3
v1.0.2
Stremio Native v1.0.2
A high-performance native Stremio desktop client with a Slint interface, embedded Rust stream server, and hardware-accelerated libmpv playback.
Release notes
Downloads
- Windows: Installer | Portable
- Linux: Binary
- Debian / Ubuntu: DEB Package
- Arch Linux: Package
- Fedora: RPM Package
Skia rendering and video upscalers
- Replaced the forced FemtoVG/GLES path with Slint's Skia OpenGL renderer and explicit native OpenGL context selection.
- Added typed OpenGL diagnostics and capability gating so Anime4K and FSR are enabled only on desktop OpenGL 3.3 or newer while ordinary playback remains available on older or embedded contexts.
- Made MPV shader configuration atomic, preserved Skia's OpenGL state across MPV callbacks, and exposed acknowledged shader availability and status throughout the player and onboarding UI.
- Added all six Anime4K modes plus AMD FSR with persistent preferences, download/readiness coordination, rejection handling, and safe context recreation.
Native timeline thumbnail previews
- Replaced the process-per-hover thumbnail draft with a persistent secondary libmpv worker that requires no standalone
mpv.exe, IPC socket, temporary image, or PNG decoder. - Added prewarming, coalesced keyframe seeks, delayed exact refinement, stale-request protection, rotation handling, tightly packed RGBA readback, and a bounded 16 MiB exact-frame cache.
- Added aspect-preserving seekbar presentation, loading and timestamp states, immediate settings control, legacy preference migration, and graceful fallback for live, non-seekable, and audio-only sources.
- Added ThumbFast attribution and the referenced MPL 2.0 source notice.
Onboarding and interface fixes
- Added the native onboarding flow and playback setup page, including upscaler capability status, hardware acceleration, seek duration, subtitle preferences, release highlights, and onboarding audio.
- Corrected renderer-dependent layout and hit testing across onboarding, media carousels, overlays, sliders, board cards, player controls, and settings.
- Reduced redundant image projections and strengthened stale UI update rejection during asynchronous navigation and playback changes.
Windows build and packaging
- Kept release binaries at the x86-64-v3 baseline while linking native vcpkg libraries statically against the dynamic MSVC CRT expected by rust-skia.
- Added app-local VC143 runtime staging, dependency verification with
dumpbin, and a SHA-256 runtime manifest so installer users do not need a separate redistributable installation. - Increased MSVC PDB page size for the large stream-server debug DLL, preventing nondeterministic
LNK1318: LIMIT (12)failures without discarding debug symbols. - Updated GitHub Actions triplets, caches, artifact staging, and installer inputs for the static-library/dynamic-CRT configuration.
Changes since v1.0.1
Playback
- add Skia shaders and native timeline previews (70d39bb)
Documentation
- update README with preview screenshot and app icon (b5e9788)
Full comparison: v1.0.1...v1.0.2
v1.0.1
Stremio Native v1.0.1
A high-performance native Stremio desktop client with a Slint interface, embedded Rust stream server, and hardware-accelerated libmpv playback.
Downloads
| Platform | Download |
|---|---|
| Windows installer | Download |
| Windows automatic updater | Download |
| Linux x64 portable | Download |
| Debian / Ubuntu Package | Download |
| Arch Linux Package | Download |
| Fedora / RedHat RPM Package | Download |
| SHA-256 checksums | Download |
Verify downloads against SHA256SUMS.txt.
Release notes
Downloads
- Windows: Installer | Portable
- Linux: Binary
- Debian / Ubuntu: DEB Package
- Arch Linux: Package
- Fedora: RPM Package
Packaging and Distribution
- Added Flatpak infrastructure including desktop entry, appstream metainfo, and a sandboxed Boost compilation module.
- Added Debian (
.deb) package generation. - Added Arch Linux (
.pkg.tar.zst) package generation usingmakepkg(optimized to reuse the precompiled Linux binary). - Added Fedora (
.rpm) package generation usingrpmbuild.
Lazy Loading and UI Polish
- Integrated a lazy-loaded plugin system.
- Optimized catalog updates in
board.rsandsearch.rsto use in-place updates, preventing scroll-snapping in ListView during lazy loading. - Bumped application version to
1.0.1.
Changes since v1.0.0
Features & Enhancements
- add Flatpak, DEB, Arch, and Fedora packaging configs and update docs (7948d26)
- align Core catalogs and episode playback (5ffa1e9)
CI & Build
- disable debug package generation for Arch Linux and match main release pkg (986767c)
- fix Fedora RPM spec variable expansion, add eager caching, fix dep freshness (5583a14)
- expand version variable in Fedora RPM spec template (74a5a07)
- switch release triplet to x64-windows-v3-static-release and document CPU baseline (1803255)
- move license to [package] for cargo-deb compatibility (0d7164f)
Maintenance
- sync Cargo.lock with 1.0.1 version bump (e5db855)
- bump version to 1.0.1 and implement plugin manager & viewport scroll optimizations (a852810)
Full comparison: v1.0.0...v1.0.1
v1.0.0
Stremio Native v1.0.0
A high-performance native Stremio desktop client with a Slint interface, embedded Rust stream server, and hardware-accelerated libmpv playback.
Downloads
| Platform | Download |
|---|---|
| Windows installer | Download |
| Windows automatic updater | Download |
| Linux x64 portable | Download |
| SHA-256 checksums | Download |
Verify downloads against SHA256SUMS.txt.
Release notes
Desktop lifecycle and startup
- Projects the persisted model for the active tab synchronously before starting network loads and performs tab-entry projection on Slint's UI thread, preventing an older queued snapshot from replacing newer Continue Watching, Calendar, Library, Discover, Addons, or Settings state.
- Runs Core sequential effects through a single FIFO executor instead of spawning them concurrently, so an older library/profile storage snapshot cannot commit after a newer snapshot and reappear after restart.
- Reloads only the bounded initial Board/Search catalog range when first-login profile hydration introduces addon catalogs that Core intentionally leaves unloaded, removing the former full-restart requirement.
- Invalidates Calendar's cached metadata requests only when its relevant library items or addon catalogs change; unchanged revisits reuse the ready schedule without a network reload.
- Uses Core's canonical storage-key constants at startup, retains a legacy
server_urlsread fallback, and maps the legacy JSON filename to the canonicalstreaming_server_urlsdatabase key. - Shows the Slint client and starts its event loop before icon lookup, tray/update setup, database initialization, stream-server startup, storage hydration, Core construction, or MPV initialization; the responsive loading UI is now the first startup milestone and reports
shell_ready_msfor cold-start profiling. - Runs stream-server startup and all independent Core storage reads concurrently after configuration is available.
- Configures Turso WAL through its row-returning query path, batches the remaining pragmas and schema work, migrates legacy storage in one transaction, and defers log/image-table maintenance beyond the first-frame window.
- Initializes libmpv's shared OpenGL context from the first available render callback after deferred engine startup and requests that callback explicitly, fixing audio-only playback when Slint's one-time graphics-setup event occurred before MPV was ready.
- Queues network-backed external subtitles through libmpv's asynchronous command API and cancels outstanding subtitle requests before Stop, keeping the MPV actor free to process Player Back immediately while preserving ordered
loadfile/stopsemantics. - Reprojects a matching ready Core details model immediately on every details entry path, preventing repeat visits to cached titles from waiting forever for a state event Core correctly omits.
- Keeps details-page Back navigation available during genuine metadata loading so a failed or slow request cannot trap the client on its skeleton state.
- Removes the tray component by ownership during post-event-loop shutdown instead of changing its finalized visibility property, preventing Slint's
Constant property being changedpanic on quit. - Adds a native system tray with GUI-relevant actions for opening Stremio, Settings, logs, update checks, installation, and quit; closing the window now respects the quit-on-close setting and otherwise hides to the tray.
- Queues tray-driven show/navigation operations onto Slint's event loop to avoid re-entrant Winit window borrows.
- Adds single-instance activation plus official
stremio:andmagnet:deep-link forwarding, with commands queued until Core and playback are ready. - Keeps the latest Discord activity pending while IPC is unavailable, retries connection with a bounded 2-to-30-second backoff, and treats media/pause/resume activity changes as reconnect opportunities without blocking the UI.
Native shell and UI polish
- Uses the official desktop card interaction split: one Discover click selects and loads the metadata preview, a double-click opens full details, and Library retains its one-click details route through the same shared card primitive.
- Uses the stream-server's exact
icon_48.pngandapp.icoassets for the tray, Slint window, taskbar, executable resources, and Windows installer. - Applies the official shell's
#15122bWindows caption color with white caption text while keeping the operating system's native title-bar controls. - Centers the Stremio navigation mark against the same fixed rail and header tokens used by the sidebar icons at every responsive UI scale.
- Vertically centers the details stream-row play button in a full-height action slot, including rows whose descriptions wrap.
- Adds localized tray/update strings, a web-style language selector, application/build/shell versions in their official Settings positions, and shell version
1.0.0. - Adds an official-style update notification and installer flow backed by GitHub releases through
self_update.
Playback dependency and release system
- Replaces the tracked static MPV SDK with the pinned optimized x86-64-v3
libmpv-2.dlland COFF import library from the trusted shinchiro GitHub release. - Downloads, extracts, SHA-256 verifies, caches, links, and deploys the DLL and pinned licenses directly from the Rust build script; Cargo builds no longer require PowerShell, 7-Zip, or repository-stored media binaries.
- Resolves dynamic libmpv through
pkg-configon Linux, withSTREMIO_MPV_DIRretained as an explicit local SDK override. - Pins the current Core head plus its
flate2compatibility correction fromperpetus/stremio-core, and pins the lifecycle-fixed stream-server revision through remote Git dependencies, so clean CI checkouts do not rely on sibling repositories. - Disables stream-server's standalone Windows EXE resource table only when it is embedded, preventing duplicate
VERSIONINFO/icon resources while preserving the GUI executable's own1.0.0metadata. - Preserves only OpenGL state supported by the active context and uses an ES2-compatible RGBA render target, preventing ES3-only libmpv sharing operations from leaking
GL_INVALID_ENUMinto Slint/FemtoVG on Windows. - Adds clean Windows and Linux release jobs. The Windows job also produces the Inno Setup installer and GitHub updater archive.
- Provisions the optimized static libtorrent 2.0.13 dependency on clean Windows runners through stream-server's pinned vcpkg baseline, overlay, triplet, and GitHub Actions cache.
- Publishes tagged
v*builds automatically after both platforms pass, with updater-compatible assets, the Linux binary, SHA-256 checksums, direct download links, the matching detailed changelog section, categorized commit links, and a full comparison link.
Resource baseline
- The settled
1.0.0process measured 358.6 MB private working set and 0.19% five-second CPU, 455.8 MB (56.0%) below the retained 814.4 MB official Stremio WebView2 baseline.