The Windows runner's redirect target served a 200 response with a 29KB
error page instead of the real ~80MB archive. download.videolan.org is
VideoLan's own origin, not the geo-mirror load balancer.
The checksum comparison kept failing even with retries, most likely because
not every mirror in VideoLan's round-robin hosts the .sha256 sidecar file.
fetch-libmpv.sh already trusts HTTPS from its source without a checksum;
do the same here.
The warm-cache workflow only fired on pushes touching build.yml, so a
quiet week let GitHub's 7-day cache eviction kick in and the next
Windows release build paid a ~20min cold vcpkg ANGLE rebuild (v0.1.28).
Downloads and verifies (checksum) the libVLC 3.0.23 runtime for
Windows/macOS/Linux CI jobs and copies libvlc + its plugins next to
the app binary, alongside the existing libmpv bundling — needed now
that libVLC renders embedded instead of via a system install.
AppImage now keeps libgst*/liborc* libs instead of stripping all .so files, and deb/rpm packages declare gstreamer1.0-plugins-base/good as dependencies.
FLUXA_ANILIST_CLIENT_ID/SECRET were never passed to the CI build
jobs, so release builds compiled ANILIST_CLIENT_ID to empty and
users saw "FLUXA_ANILIST_CLIENT_ID is not set." in Settings.
libGLESv2.dll depends on a third DLL (z.dll, vcpkg's zlib build) that
this step never copied into src-tauri/lib/. Combined with the
find_and_load_dll() search-path bug fixed in the previous commit, that
made ANGLE/EGL context creation fail on every Windows install built by
this workflow, regardless of the code fix, since the file simply
wasn't in the bundle. Copy the whole vcpkg bin/ output instead of
naming individual DLLs, and check for z.dll explicitly in the
verification step so this can't silently regress again.
The ANGLE cache pointed at ${{ env.VCPKG_INSTALLATION_ROOT }}, which is a
runner machine variable invisible to the env expression context, so the
paths expanded empty and ANGLE rebuilt from source on every Windows run.
Hardcode C:\vcpkg paths.
Add a create-release job so the three build jobs upload into one existing
draft instead of racing to create it. Gate all release steps on tag pushes
so workflow_dispatch produces plain builds with uploaded artifacts instead
of a release named after the branch. Add concurrency cancellation, job
timeouts, a macOS libmpv otool/lipo check mirroring the Linux ldd check,
a Windows bundled-DLL presence check, and a LIBMPV_TAG env knob for
pinning the libmpv fetch.
The path from find was relative to the repo root, but the script cd'd
into a tmpdir before using it, so the appimage-extract call resolved
against the wrong directory and failed with "No such file or
directory". Resolve to an absolute path up front.
Tauri's bundler hardcodes linuxdeploy --plugin gtk for AppImage
builds, which bundles a full GTK3/WebKit2GTK stack built against
whatever Ubuntu's CI image ships. That bundled WebKitGTK version
(Ubuntu 24.04's ~2.44.x) behaves differently than a typical desktop's
system WebKitGTK when the player surface reparents the webview into
a GtkOverlay at runtime — confirmed locally that stripping it and
falling back to the host's WebKitGTK (matching dev mode, which never
had this bug) fixes the player controls overlay not rendering.
libmpv/ffmpeg/codec libraries are unaffected — they live in a
separate app-specific resource directory, not Tauri's own bundling,
so they stay bundled since codec ABI genuinely varies across distros
in ways system packages can't be relied on for.
actions/checkout's fetch-depth: 0 doesn't reliably fetch other tag
refs on its own, so git describe found no previous tag and the
release notes silently fell back to the entire repo history.
Removes the manual round-trip of tagging a fork release, then coming
back here to bump MPV_FORK_TAG and cut another release. Safe since
this repo is the fork's only consumer.
A timed-out install() call left the original thread running and let a
later call spawn a second one, racing both over the same mpv render
context and segfaulting. install() is now single-flight per process.
Also gate release publishing on all three platform builds succeeding,
not just the first one to finish.
apt has no cache between runs; on a slow mirror day this turned into a
20+ minute step. Point apt's archive cache at $HOME (avoids permission
issues with the root-owned default path) and persist it via
actions/cache so a slow mirror only costs once.
The KhooLy/mpv fork's libmpv.so.2 links libass, libavfilter, and
libplacebo (needed for the gpu-next render path) -- none of which were
in the apt install list, so the post-fetch ldd check failed.
fluxa-core is public now -- the workflow was pointing at a repo name
(KhooLy/FluxaCore) that never existed, gated behind a PAT secret that
was never set, which is why every release build job failed at checkout.
- Render backend now sources prebuilt libmpv from KhooLy/mpv (gpu-next),
fetched via src-tauri/fetch-libmpv.sh; video-sync switched to
display-resample with vsync-paced render loops on all platforms.
- CI (build.yml) updated to fetch the fork instead of building/bundling
mpv per-platform.
- Fix: next-episode auto-skip countdown kept ticking while paused.
- Fix: addon HTTP fetches had no timeout, so a hung (not just refused)
connection could block the home feed load forever, leaving a blank
screen with no error.
- Fix: Nuvio offline banner overlapped the player's top bar instead of
pushing it down.
- Add F11 as a fullscreen toggle in the player, alongside F.
- Restyle Skip Intro/Outro button: flat surface instead of native
button chrome bleeding through, icon, hover/focus state, progress bar.