Skip to content

Nuvio Linux v0.1.17-alpha (release 3)

Choose a tag to compare

@JJDizz1L JJDizz1L released this 13 Aug 02:04
· 7 commits to dev since this release
b06b9c9

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 packagenuvio-linux-git (VCS, builds the dev branch).
  • New AUR packagenuvio-linux-bin (compiled from dev branch).
  • 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 id 6702DBAB3E41EDE1); trust it with pacman-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-release workflow 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