Releases: JJDizz1L/NuvioLinux-unofficial
Release list
nuvio-linux v0.1.21-alpha-2 (AUR -bin gap fix + libstdc++ dep fix)
nuvio-linux 0.1.21alpha-2
Upstream 0.1.21-alpha — unchanged. This is a packaging-metadata fix
release (pkgrel 2); no application changes.
The gap
AUR nuvio-linux-bin 0.1.21alpha-1 shipped without a package()
function. The PKGBUILD downloaded the release tarball and correctly
verified it (sha256 + GPG signature), then discarded the extracted tree —
so every AUR install produced a 0-file package (0.00 MiB installed).
The release package attached here was always complete: the v0.1.21-alpha-1
smoke test validated it directly. What was never validated was the AUR
repack path — that verification step is now part of the release checklist
(makepkg -f in the AUR clone, then confirm the built package is
non-empty before pushing).
Fixes in this release
- AUR
nuvio-linux-bin— added the missingpackage()(copies the
auto-extractedopt/+usr/trees into the package). Verified: 296
entries, 235 MiB installed, desktop entry + icon present. - All packages (
nuvio-linux,-bin,-git) — dropped the
libstdc++dependency. It is not a vanilla-Arch package:gcc-libs
provides the C++ runtime, and only CachyOS repos ship a package by that
name — so dependency resolution failed on non-CachyOS systems. pkgrelbumped to 2 across all three so package managers pick up
every change.
Verify
sha256sum -c SHA256SUMS.txt
sudo pacman-key --add nuvio-linux-gpg-key.asc
sudo pacman-key --lsign-key 9201A54A09675CBEBAD08647EDDA55C8236D6C88
sudo pacman -U nuvio-linux-0.1.21alpha-2-x86_64.pkg.tar.zstAUR users: yay -S nuvio-linux-bin (now 0.1.21alpha-2) or build
nuvio-linux-git from upstream source.
nuvio-linux 0.1.21-alpha-1 — upstream source, Arch Linux packaging only
nuvio-linux 0.1.21alpha-1 tracks the official upstream NuvioDesktop 0.1.21-alpha release. It is built from that source unmodified — with only the Arch pkgrel added.
A change in direction for this repository
NuvioLinux began as a hard fork of NuvioDesktop, carrying Linux-specific playback work, a rebrand, and additional package formats. Upstream has since implemented proper libmpv and GTK3 integration natively, delivering smoother, fully hardware-accelerated playback that passed all of our testing. The fork and its divergent code are therefore no longer needed — the hard-fork era is over.
Arch Linux packages only, from now on
Effective immediately, NuvioLinux-unofficial publishes Arch Linux packages exclusively. AppImage, Flatpak, RPM and DEB builds will no longer be released from this repository — those formats are built and released by upstream, and we ask all users to switch to the official upstream packages:
- Upstream releases page: https://github.com/NuvioMedia/NuvioDesktop/releases/latest
- The matching 0.1.21-alpha release: https://github.com/NuvioMedia/NuvioDesktop/releases/tag/0.1.21-alpha
Upstream ships AppImage, Flatpak, DEB and RPM packages for Linux x86_64, plus DMG installers for macOS and MSI for Windows. This repository will keep building Arch Linux packages that track upstream releases until upstream adopts Arch packaging of its own — at that point this repository will retire.
What is in this package
- Built from the unmodified upstream 0.1.21-alpha source release
- Bundled Temurin 21 runtime — no system Java required
- Playback via the system libmpv (mpv dependency), with hardware-accelerated decoding through your usual VA-API/VDPAU setup
- P2P streaming included (bundled TorrServer)
- Installs to /opt/Nuvio; launcher at /usr/bin/nuvio
Upgrading from previous NuvioLinux releases
This package is signed with a new packaging key (9201A54A09675CBEBAD08647EDDA55C8236D6C88); trust it once using the commands below. The AUR packages nuvio-linux-bin (0.1.21alpha-1) and nuvio-linux-git (r2605.g785df9c3-1) have been updated accordingly and now build upstream source directly — a simple AUR upgrade moves you over.
Install (from URL)
sudo pacman-key --add nuvio-linux-gpg-key.asc && sudo pacman-key --lsign-key 9201A54A09675CBEBAD08647EDDA55C8236D6C88
sudo pacman -U https://github.com/JJDizz1L/NuvioLinux-unofficial/releases/download/v0.1.21-alpha-1/nuvio-linux-0.1.21alpha-1-x86_64.pkg.tar.zst
Verify
sha256sum -c SHA256SUMS.txt && gpg --verify *.pkg.tar.zst.sig *.pkg.tar.zst
Thank you
Thank you to everyone who used, tested, reported issues, and supported Nuvio Linux throughout the hard-fork period. Your feedback genuinely shaped this project, and it would not have reached this point without you. Nuvio on Linux is in a better place now — it simply lives directly upstream.
0.1.20-alpha-5
Nuvio Linux 0.1.20-alpha-5 — render-pipeline upgrade + interaction fixes
This release rebuilds the desktop playback pipeline end-to-end and fixes three
long-standing interaction bugs. All packages are built from the same source
(render-pipeline-upgrade merged to dev), verified per-format before upload.
Render pipeline
- Direct-write frames: mpv now writes video straight into Skia pixel memory
(stride-aware viaGL_PACK_ROW_LENGTH/SW_STRIDE), deleting the per-frame
CPU copy (~800 MB/s at 4K24) and one of three per-slot allocations. - Event-driven frame pump: the frame producer sleeps until mpv signals a new
frame (bounded 50 Hz pull) instead of polling at ~1000 wakeups/s — roughly a
93% reduction in timer wakeups per playing surface, with cadence still locked
to video FPS (verified 24.0 fps on 24 fps content, both AMD and NVIDIA). - Playback-quality telemetry: under
NUVIO_MPV_DEBUG=1the per-second line
now reportsmpv-fps, measuredbitrate, decoder drops, mistimed/delayed
frames; decoder transitions (vaapi→vaapi-copy, etc.) are logged
unconditionally the moment they happen. - Compatibility Rendering toggle (Settings → Playback → Decoder): forces the
software render path while keeping decode on the GPU (auto-copy) — a last
resort for broken GPU driver stacks.
Fixes
- Preferred audio/subtitle tracks now apply reliably on slow-opening
sources: selection retries key on mpvFILE_LOADEDand re-apply opportunistically
until they latch, instead of giving up after ~3 s from player open
(previously the container-default track — e.g. French on MULTI releases —
played for the whole session). - Volume slider / seek / track switching latency: queued mpv commands now
apply within ~1–2 ms instead of waiting up to 250 ms in the event loop;
slider drags no longer trail the pointer audibly. - Cursor idle-hide: hero/trailer preview surfaces no longer fight the main
player over the window cursor — the idle timeout is deterministic even while
previews play.
Notes
- If your
~/.config/mpv/mpv.confsetsalang=…, mpv's own default selection
masks Nuvio's per-track selection; language preferences are applied by the app
after load either way. - Dolby Vision HEVC sources that fail zero-copy import now fall back to
vaapi-copyautomatically (existing behavior, verified on RDNA4 with this release).
All commits since 0.1.20-alpha-4
521cf7d fix(player): cursor idle-hide ownership — passive surfaces opt out @JJDizz1L
c5ec5da perf(player): wake event loop on queued commands — immediate apply @JJDizz1L
8ec773a fix(player): apply preferred audio/subtitle tracks whenever tracks appear @JJDizz1L
a9a0671 feat(player): Compatibility Rendering toggle — SW render + copy-back decode (render-pipeline phase 4) @JJDizz1L
c7010d2 feat(player): event-driven frame pump via mpv update callback (render-pipeline phase 2) @JJDizz1L
0d8d8e0 feat(player): direct-write render into Skia pixel memory (render-pipeline phase 1) @JJDizz1L
f1ab550 feat(player): playback-quality telemetry + decoder transition logging (render-pipeline phase 3) @JJDizz1L
0.1.20-alpha-4
0.1.20-alpha · Release 4 — The Stability Milestone 🚀
This is the largest hardening pass Nuvio Linux has ever had. Under the hood, an entire layer of the app was rebuilt: playback timing, player teardown, memory management, hardware decoding resilience, and a long list of races and crashes that have been lurking since the early builds. If Nuvio ever felt almost great but occasionally weird — stuttering 4K, mystery crashes, RAM creeping up over a long session — this release is for you.
What was broken (the honest version)
4K HDR playback was "smooth but jittery." Frames averaged the right rate but arrived scattered — the async frame-transfer path we added for weak integrated GPUs was quietly scattering frame delivery on powerful discrete GPUs. We bisected it frame-by-frame on real content, proved the old model itself was the problem, and replaced it with an adaptive engine: deterministic synchronous reads by default, escalating only when measurements prove your GPU needs the async path. Result: locked, judder-free cadence — verified on AMD RDNA4 and NVIDIA across packaged builds.
Closing a popped-out video could crash the whole app. When mpv took over playback outside the app window (for example Dolby Vision content via your own mpv config), closing that window killed the app with it. Root cause: a shutdown race in our native bridge that aborted the process during cleanup. Fixed properly, pinned by a regression test.
Trailer playback was fragile by construction. The old logic preferred live-HLS variants whose streams could degrade into decoder corruption storms. Trailers now prefer proper progressive/adaptive MP4 (H.264 + AAC) chains and only fall back to HLS as a last resort.
Hardware-decode failures spammed errors every single frame, forever. When zero-copy decoding couldn't map surfaces (certain codecs/GPU driver combos), the bridge retried and failed endlessly. There's now a runtime fallback: after a short burst of failures it switches to copy-mode decoding automatically and carries on. Hybrid-GPU laptops also no longer risk decoding on one GPU while the other tries to import the frames.
Memory was held together by strings. Metadata caches grew without limit, a streaming-cache setting was silently doubled by a back-buffer bug, the torrent engine ignored its cache-size setting entirely and stayed resident in RAM all session, and image caching claimed a quarter of your heap by default. All of it is bounded, wired, and measured now — plus blocking subprocess calls were removed from the UI thread, so settings toggles can't freeze the window anymore.
A pile of races and sharp edges, fixed one by one: a use-after-free between rendering and disposal, stale window sizes causing wrong-scale frames, plugin refresh jobs racing each other, Trakt progress maps publishing half-updated snapshots, cookie jars appending duplicate entries, an updater that kept downloading after you cancelled it, and more.
Troubleshooting & reporting
Using a Nuvio online account? Having login/library/sync weirdness?
Please log out and sign back in first — it rebuilds your credentials and re-syncs library state, and resolves the majority of account-related reports on its own.
If playback misbehaves, give us data. Launch from a terminal with debug logging:
# Native package (Arch/deb/rpm/AppImage):
NUVIO_MPV_DEBUG=1 nuvio-linux
# Flatpak:
flatpak run --env=NUVIO_MPV_DEBUG=1 io.github.jjdizz1l.NuvioLinuxExtra knobs for specific problems:
| Flag | Use for |
|---|---|
NUVIO_MPV_DEBUG=1 |
Everything playback: renderer init, hwdec status, frame cadence (render cadence:), readback health (readback stats[...]) |
NUVIO_READBACK=sync |
Stutter/judder triage — forces the deterministic path |
NUVIO_MPV_HWDEC=auto-copy |
Suspected hardware-decode issues |
NUVIO_MPV_NO_AUTOFALLBACK=1 |
Keeps decode from auto-switching, so we can see the raw failure |
NUVIO_TRAILER_DEBUG=1 |
Trailer extraction problems |
NUVIO_WINDOW_DEBUG=1 |
Window sizing/fullscreen issues |
nuvio-linux --nvidia-diag |
Prints an NVIDIA driver/GPU diagnostic block and exits |
Please report issues on GitHub — with data from the application, not just sentences describing the problem. A report we can act on includes: the terminal output from the commands above (especially any [mpv/...], readback stats, or render cadence: lines), your GPU + driver (nvidia-smi or lspci), which package format you run (Arch/deb/rpm/AppImage/Flatpak), your desktop environment, and exact steps to reproduce. Reports with logs get fixed; reports without them usually can't be reproduced.
Full commit history for this release:
8b5e1e28 chore(aur): bump bin to 0.1.20alpha-4, refresh git seed r2319.g17dd43a2
17dd43a2 chore(pkg): release 4 package rebuild (0.1.20alpha-4)
48ac2716 fix(player): survive mpv core self-shutdown during dispose
810e180f fix(player): adaptive readback — deterministic sync by default, ring on demand
8e126c87 feat(player): NUVIO_READBACK diagnostic knob (fence|legacy|sync)
f9d61db6 feat(player): consumer-side presentation telemetry for the frame pump
c2c5cf12 fix(player): fence-guarded PBO copy-out cures HDR playback jitter
ef7e75f8 fix(player): @Volatile on pendingSource
877ceb3b fix(player): back off when installPixels fails instead of hot-spinning
00e01334 perf(player): memoize NVIDIA GPU-name lookup for the process lifetime
3e659387 fix(player): null-safe header collection in create() JNI
985865c1 fix(updater): stop download when caller is cancelled
4f03a006 refactor(player): narrow event-loop locking; drop superseded nvdec stub
33f7ae99 feat(player): runtime copy-mode fallback + GL-device-matched DRM nodes
f19962e1 fix(trailer): prefer progressive/adaptive streams over HLS DVR variant
bfd802fc test(watched): fix scheduling-dependent assertion in store stress test
8e2e31d5 feat(storage): map-style operators on BoundedLruCache
63807605 fix(sync): wire metadata-cache clears into wipe + profile switch
66acacb0 fix(trailer): cookie jar replaces by name+path instead of appending
be3083cb perf(memory): bound Trakt mapping/related/comments caches
c2abcc08 perf(memory): bound TmdbMetadataService's nine caches
e994bbe2 feat(storage): BoundedLruCache — LRU cap + age/idle expiry for singleton caches
58adfc03 fix(trakt): publish show-progress maps as one volatile snapshot
67e24203 fix(plugins): make refresh-job dedup atomic; clean finished jobs
b51d2a07 chore: ignore local review notes
873c7327 refactor(player): single applyCommonOptions helper; drop dead goto blocks
c274da85 fix(library): stop calling ensureLoaded on the UI thread; bound reload loop
c34138db fix(player): validate PBO ring allocation; report raw buffered end
ae7b59fa fix(player): read live AWT window size in video frame pump
c71236b8 fix(player): close renderFrame/dispose use-after-free race
cc8fb891 perf(player): PBO async readback for weak iGPUs (issue #13)
7b198482 fix(rpm): build in a Fedora container, gate on rpm -K
7208b204 chore(aur): bump to 0.1.20alpha-2 / r2287.g713a18f9
0.1.20-alpha-2
Nuvio Linux v0.1.20-alpha (release 2)
Aligned with upstream NuvioDesktop 0.1.20, plus everything below. I've worked very hard to get NVIDIA working in the flatpak build, it should be stable, please report issues if you experience any with this build. It's always best to use a native package or AppImage over flatpaks.
Highlights
- Flatpak rebuilt on GNOME Platform 50 with VA-API hardware decoding on every vendor — including NVIDIA VA-API (via the bundled nvidia-vaapi-driver shim). The Flatpak no longer uses CUDA/NVDEC; native packages keep plain NVDEC through the regular NVIDIA driver.
- Memory fixes: the Streaming Cache Size setting is now actually respected (the back-buffer no longer doubles it), trailer previews no longer stack extra full players, TorrServer honors the Torrent cache size setting and shuts down when idle, and the image cache is capped.
- Smoother playback: a new producer/consumer frame pump renders 4K without stalling the UI, fixes judder at 24 fps, and fixes a crash when resizing during playback.
- Trailer improvements: in-app YouTube extraction survives rate-limiting, separate-audio streams play correctly, and poster hover previews are more reliable.
- Bundled JRE updated to Temurin JDK 25 (baseline x86-64 portable).
- Tested on AMD Radeon RX 9070 (Mesa 26.2.1) and NVIDIA GeForce RTX 3070 (driver 610.57.04) — hardware decode verified on both, including 4K HDR10.
All changes
c985e88 feat(flatpak): GNOME Platform 50 runtime, VA-API-only decode @JJDizz1L
531bf02 perf(memory): enforce cache limits across players, TorrServer, images @JJDizz1L
a52bc5c feat(bridge): Flatpak vaapi shim hwdec, cache back-buffer cap, DRM gating @JJDizz1L
b8f8653 feat(player): 3-slot frame pump, separate audio, --nvidia-diag @JJDizz1L
676591a fix(trailer): survive YouTube bot gate, honor mute before ready @JJDizz1L
9a55105 fix(simkl): do not provide fully-watched series keys @JJDizz1L
a46660f feat(discord): configurable client id, S1, E2 episode label, Viewing presence @JJDizz1L
f4fa707 feat(home): add poster hover preview with trailer playback @JJDizz1L
a3926d1 feat(trailers): in-app YouTube extraction and mpv hero trailer playback @JJDizz1L
775a297 fix(subtitles): restore custom styling toggle and libass offset @JJDizz1L
5f1eef3 fix(desktop): unify startup overlay color and prevent maximized flash @JJDizz1L
ba2f1c0 fix(ui): gate disintegration animations behind explicit requests @JJDizz1L
3045ae5 revert: drop Skia GIF decoding on home cards @JJDizz1L
3c00278 feat(collections): add TMDB Discover exclusion filters @JJDizz1L
1c40876 fix(watched): port upstream watched-state persistence and Trakt snapshot caching @JJDizz1L
11ac41c feat(player): add automatic skipping controls @JJDizz1L
47adb75 fix(player): prevent addon subtitle carryover between episodes @JJDizz1L
fc2a078 feat(player): add binge-group fallback toggle for manual auto-play @JJDizz1L
001557b fix(player): persist desktop volume across launches @JJDizz1L
608009c fix(plugins): bind __native_fetch as async to stop provider freezes @JJDizz1L
Checksums & signing
Verify downloads against SHA256SUMS.txt. The Arch package ships a detached GPG signature (pacman -U fetches it automatically); trust the signing key once with:
sudo pacman-key --add nuvio-linux-gpg-key.asc && sudo pacman-key --lsign-key 6702DBAB3E41EDE1Reminder: We now push to the Arch User Repository (AUR)
yay -S nuvio-linux-binyay -S nuvio-linux-git0.1.17-alpha-7
Full GPU acceleration for NVIDIA
This release makes the app fly on NVIDIA graphics cards. If you have an NVIDIA GPU, the whole app — the interface and video playback — now runs on your GPU instead of your CPU.
What changed
- GPU-powered video decoding (NVDEC). Videos are now decoded by your NVIDIA card's dedicated hardware instead of your CPU. High-resolution and 4K content plays smoothly without pegging your processor.
- GPU-rendered interface. Windows, menus, posters and controls are now drawn by your GPU too, so the whole app feels smoother and snappier.
- Zero-copy video path. Decoded video goes straight from the GPU to the screen — no more wasteful CPU round-trips.
- One graphics system for everything. This is the important change under the hood that made the rest possible: NVIDIA doesn't allow two different graphics stacks inside one app, and previously that forced the video player onto the CPU whenever the interface was on the GPU. The player now uses the same graphics path as the interface, so both run on the GPU together.
Flatpak users
- The Flatpak now supports hardware video decoding: NVDEC on NVIDIA, VA-API on AMD/Intel. Previously it could only decode on the CPU even when your hardware supported GPU decoding — that's fixed.
- One caveat: HDR tone-mapping isn't available inside the Flatpak sandbox. Use the native Arch / RPM / DEB / AppImage packages for HDR content.
A note on AV1 hardware decoding
AV1 is the newest video format, and not every GPU has a hardware decoder for it yet:
- NVIDIA — AV1 needs a GeForce RTX 3000 or newer (desktop or laptop). H.264 and HEVC decode on any NVIDIA card from the GTX 750 onward.
- AMD — AV1 needs a Radeon RX 6000 or newer (e.g. RX 6600 / 6700 / 6800 / 6900), or a Ryzen 6000-series processor or newer for laptops and handhelds (like the Steam Deck). RX 5000 cards and older don't have it.
- Intel — AV1 needs 11th-generation Core or newer (Tiger Lake / Rocket Lake and later, including Core Ultra) or an Arc discrete GPU. Older Intel integrated graphics don't have it.
If your hardware isn't listed, AV1 videos still play fine — the app just decodes them on your CPU instead.
Downloads
Arch package, RPM, DEB, AppImage and Flatpak are all attached below, along with the full checksums (SHA256SUMS.txt).
0.1.17-alpha-6
Fixes the 4K lag on NVIDIA (issue #13).
NVIDIA GL renderer fallback (issue #13)
The GL renderer previously failed to initialize on NVIDIA — eglMakeCurrent rejects surfaceless contexts on NVIDIA's X11/Wayland platform displays — so playback silently fell back to the CPU software renderer. That CPU color-conversion/scaling of 4K p010 frames was the real cause of the lag, even with NVDEC hardware decoding active. The bridge now falls back to a 1×1 PBuffer surface when surfaceless make-current fails, restoring GPU rendering and correct nvdec selection on NVIDIA in one change.
Full commit list:
ca6870b fix(player): EGL pbuffer fallback when surfaceless make-current fails (issue #13) @JJDizz1L
0.1.17-alpha-5
Hotfix release. Fixes two issues:
KDE screen-sleep during playback (issue #12)
The Flatpak previously held an inhibitor that Plasma 6's PowerDevil silently dropped. The sandbox path now routes through the standard XDG Desktop Portal Inhibit API (org.freedesktop.portal.Inhibit v3) via a bundled helper, which xdg-desktop-portal-kde bridges to a real logind idle inhibitor on the host. Native installs are unchanged (logind via systemd-inhibit).
4K / decode hardening (issue #13)
Hardware-decode selection is now vendor-aware (nvdec on NVIDIA, vaapi on AMD/Intel) instead of the generic auto-copy list, so mpv no longer probes CUDA/drmprime-overlay on non-matching hardware. The app also logs frame drops and a one-time warning when playback falls back to software decode, so lag reports are self-diagnosing.
Full commit list:
1f12c27 fix(power): route Flatpak inhibit through XDG portal Inhibit (issue #12) @JJDizz1L
2f42241 fix(player): vendor-aware hwdec + frame-drop/software-decode logging @JJDizz1L
ddc340e fix(power): use KDE PolicyAgent AddInhibition for the Flatpak inhibit (issue #12) @JJDizz1L
c3da3ed fix(power): KDE Solid suppress methods take a why arg and return a cookie @JJDizz1L
a0f2bbb fix(power): use KDE Solid suppress for screen-blank inhibit (issue #12) @JJDizz1L
7ddaf58 feat(aur): add nuvio-linux-bin (prebuilt) package + README AUR options @JJDizz1L
0.1.17-alpha-3
This is release 3 of 0.1.17-alpha; it supersedes v0.1.17-alpha (release 2, published 2026-08-07) and includes additional sync/auth fixes, the Flatpak screen-sleep fix, and the release-notification toast. It restores the upstream server identity for cross-app sync parity.
⚠️ Important: sync identity change (please read)
0.1.17 restores the upstream sync identity — client-id prefix nuvio-mobile-, device name "Nuvio Desktop", user agent NuvioMobile. Earlier 0.1.16.x builds used a rebranded identity (nuvio-linux-, "Nuvio Linux", NuvioLinux).
If you signed in with a 0.1.16.x build, your device can conflict with the sync service — add-ons may stop loading and settings/progress may not sync.
Fix: in the app, go to Settings → Account → Account and Sync Status → Sign Out, then log back in to your Nuvio account. This re-registers the device with the correct identity.
Fresh installs are unaffected.
Highlights
- New AUR package —
nuvio-linux-git(VCS, builds thedevbranch). - New AUR package —
nuvio-linux-bin(compiled fromdevbranch). - 0.1.17 upstream alignment — player UI, subtitles & libass styling, watched/projection refinements, provider-credential sync, merged translations, cache-control-aware image loading, and a plugin cache split (see "All changes").
- Screen no longer sleeps during playback (issue #12) — the app holds a logind inhibit (native), and in the Flatpak sandbox it now talks to
org.freedesktop.PowerManagement/ScreenSaver(previously blocked by the sandbox D-Bus filter). - Release notification toast — the disabled in-app updater banner is replaced by a toast that surfaces new releases and links to the releases page. It never downloads or installs anything.
- Sync & auth stability — serialized Trakt/Simkl auth mutations, volatile client-id / credential-sync state, tolerance for malformed remote credential rows, atomic 0600 storage, and account-wipe clearing the sync identity.
- Packaging hardening — all five formats rebuilt with a baseline x86-64 Temurin JRE (no AVX-512 requirement), TorrServer source checksum pinning, DEB/RPM version-revision fixes, and portability checks covering the full runtime.
How this release was built & tested
- All five packages (Arch, RPM, DEB, AppImage, Flatpak) built from the same commit with a baseline x86-64 JRE (Eclipse Temurin 21.0.12) — no AVX2/AVX-512 requirement.
- Each package smoke-tested for playback; the Flatpak was verified with VA-API zero-copy in the sandbox.
- The Arch package is signed with key
54B66A801C9B0D3D471E01376702DBAB3E41EDE1(short id6702DBAB3E41EDE1); trust it withpacman-key. - GitHub Actions pinned to commit SHAs; the Flatpak CI job runs on a self-hosted runner (a documented trust boundary).
- Published manually: the
desktop-releaseworkflow requires the version bump to be the final application commit, which wasn't the case for this release.
Known issues
- The app runs under XWayland (no native Wayland backend in the desktop toolkit).
- Alpha status applies — expect breaking changes.
All changes
6cbac7f feat(arch): AUR VCS package (nuvio-linux-git) @JJDizz1L
07e41a8 feat(updater): toast-only release notification linking to releases page @JJDizz1L
dde45ce feat(toast): make the toast optionally open a URL on tap @JJDizz1L
20ae218 feat(updater): persist last-notified release tag @JJDizz1L
3a6dd96 feat(updater): expose asset-less latest-release fetch @JJDizz1L
947943b feat(updater): add updateNotificationEnabled feature flag @JJDizz1L
2e89220 fix(power): prefer PowerManagement inhibit for KDE sleep lock @JJDizz1L
46cb191 fix(flatpak): allow screensaver/power-management inhibits in the sandbox @JJDizz1L
4052b59 refactor(player): remove dead updateControls/requestFocus no-op chain @JJDizz1L
bed74d6 fix(branding): restore upstream server-facing identity strings @JJDizz1L
64e713d fix(packaging): pin TorrServer source checksum and fail on bad downloads @JJDizz1L
bbfb1ea fix(packaging): refresh desktop/icon caches after removal, not before @JJDizz1L
93a2206 fix(packaging): cover libawt/libapplauncher/in-jar bridge in portability check @JJDizz1L
526c8eb fix(packaging): all formats ship the same release build variant @JJDizz1L
5280ced fix(packaging): DEB control Version carries the release revision @JJDizz1L
6cd8990 fix(versioning): sync PKGBUILD/spec/metainfo from set-version.sh @JJDizz1L
72944bf fix(release): emit v-prefixed tags matching the fork's convention @JJDizz1L
ef911b1 refactor(core): remove zero-consumer platform API surface @JJDizz1L
8cc5457 refactor(player): drop the dead controls-page export chain @JJDizz1L
221f1c2 Revert 'refactor(streams): delete unused StreamsTabletLayout' @JJDizz1L
80e142d refactor(streams): delete unused StreamsTabletLayout @JJDizz1L
4a822ad fix(branding): prefix sync client ids with nuvio-linux @JJDizz1L
3fbd361 fix(branding): register devices as 'Nuvio Linux' @JJDizz1L
98ced5a fix(branding): identify as NuvioLinux in the Supabase user agent @JJDizz1L
6d541d2 refactor(player): remove dead native event-sink callback path @JJDizz1L
1a990ae fix(sync): drain the pending watch-progress source after remote blob apply @JJDizz1L
3c56767 fix(simkl): scope auth and sync storage explicitly by profile @JJDizz1L
04aef34 fix(sync): tolerate non-primitive elements in synced string sets @JJDizz1L
08578ad fix(auth): only treat structured backend errors as session invalidation @JJDizz1L
578accd fix(sync): skip malformed remote credential rows instead of aborting @JJDizz1L
d49c31e fix(tracking): atomic provider re-registration in tracking registry @JJDizz1L
5e7c3af fix(tracking): publish Trakt scrobble dedup stamp safely @JJDizz1L
0b3939f fix(tracking): serialize Trakt/Simkl auth state mutations @JJDizz1L
b314d0c fix(sync): make cachedClientId volatile @JJDizz1L
7e572b7 fix(sync): mark ProviderCredentialSync.isApplyingRemote volatile @JJDizz1L
a26d79c fix(sync): guard periodic pull job/profile under pullStateLock @JJDizz1L
f1f6bd3 fix(network): serialize probes and bound their socket timeouts @JJDizz1L
fdd8692 fix(storage): account wipe clears cache dir and sync client identity @JJDizz1L
f67705e fix(auth): persist Supabase session in app-owned 0600 storage @JJDizz1L
302e9d8 fix(storage): atomic 0600 persistence for desktop preference stores @JJDizz1L
0316273 fix(player): 0.1.17 UI parity — drop action-button shadow, align API defaults @JJDizz1L
326cc87 fix(simkl): port anime-movie classification and poster res parity (0.1.17) @JJDizz1L
d65fe64 fix(player): keep cursor visible while sources/episodes panels are open @JJDizz1L
58668a2 feat(i18n): merge upstream translations for 0.1.17 @JJDizz1L
e247a23 feat(images): HTTP cache-control aware Coil fetcher (upstream 0.1.17) @JJDizz1L
6b11585 fix(desktop): upstream locale, device registration and version alignment (0.1.17) @JJDizz1L
d944823 fix(desktop): restore maximized window placement across restarts (upstream PR #309) @JJDizz1L
74294a5 feat(plugins): split scraper source cache from metadata + QuickJS loading (0.1.17) @JJDizz1L
9cd5a75 refactor(desktop): extract runtime assets into the XDG cache dir (0.1.17) @JJDizz1L
a7383b3 feat(player): port upstream player UI, subtitles and libass styling (0.1.17) @JJDizz1L
133f124 feat(tracking): port upstream watched/projection/watching refinements (0.1.17) @JJDizz1L
0ae1d68 feat(sync): port upstream provider credential sync (0.1.17) @JJDizz1L
Note (2026-08-13): the Flatpak asset in this release was replaced in place with a build that fixes issue #12 (KDE screen-sleep). It now uses org.kde.Solid.PowerManagement.PolicyAgent.AddInhibition instead of the ineffective ScreenSaver/PowerManagement cookies. Other formats are unchanged and will be rebuilt in the next full release.
0.1.17-alpha
⚠️ Deprecated — superseded by v0.1.17-alpha-3This release is ~40 commits behind and is missing critical sync/auth fixes, the
Flatpak screen-sleep fix, and the release-notification toast. It also predates
the sync-identity restore — if you installed it, upgrade to release 3 and follow
the sign-out/sign-in steps in the release 3 notes.
0316273 fix(player): 0.1.17 UI parity — drop action-button shadow, align API defaults @JJDizz1L
326cc87 fix(simkl): port anime-movie classification and poster res parity (0.1.17) @JJDizz1L
d65fe64 fix(player): keep cursor visible while sources/episodes panels are open @JJDizz1L
58668a2 feat(i18n): merge upstream translations for 0.1.17 @JJDizz1L
e247a23 feat(images): HTTP cache-control aware Coil fetcher (upstream 0.1.17) @JJDizz1L
6b11585 fix(desktop): upstream locale, device registration and version alignment (0.1.17) @JJDizz1L
d944823 fix(desktop): restore maximized window placement across restarts (upstream PR #309) @JJDizz1L
74294a5 feat(plugins): split scraper source cache from metadata + QuickJS loading (0.1.17) @JJDizz1L
9cd5a75 refactor(desktop): extract runtime assets into the XDG cache dir (0.1.17) @JJDizz1L
a7383b3 feat(player): port upstream player UI, subtitles and libass styling (0.1.17) @JJDizz1L
133f124 feat(tracking): port upstream watched/projection/watching refinements (0.1.17) @JJDizz1L
0ae1d68 feat(sync): port upstream provider credential sync (0.1.17) @JJDizz1L