Commit graph

96 commits

Author SHA1 Message Date
KhooLy
aabea628ce fix: prepare updater flow for 0.1.19 release 2026-06-27 21:27:13 +03:00
KhooLy
7f0d6165cd chore: bump version to 0.1.19 2026-06-27 20:55:02 +03:00
KhooLy
ef455f48b3 feat: prepare desktop release updates 2026-06-27 20:47:10 +03:00
KhooLy
c19c90e825 fix: resolve AppImage path before cd in the GTK-strip CI step
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.
2026-06-20 20:54:31 +03:00
KhooLy
243cbd5bd9 chore: bump version to 0.1.18 2026-06-20 20:35:58 +03:00
KhooLy
021590613e fix: strip bundled GTK3/WebKit2GTK from the Linux AppImage
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.
2026-06-20 20:35:15 +03:00
KhooLy
272adf8c52 chore: bump version to 0.1.17 2026-06-20 19:28:10 +03:00
KhooLy
c5a5563e76 fix: wrap ReactPlayerOverlay in the existing ErrorBoundary
ErrorBoundary was imported in App.tsx but never actually used. An
uncaught render error in ReactPlayerOverlay unmounts the whole React
tree with no boundary to catch it, and since the webview background
is transparent during native playback, that looked exactly like
"video plays, no controls" instead of surfacing any error. Also log
caught errors via debug_log so they land in the app log file too.
2026-06-20 19:14:45 +03:00
KhooLy
dc99e24285 chore: bump version to 0.1.16 2026-06-20 16:52:50 +03:00
KhooLy
64bbd172fd debug: instrument native-player-show emit/receive to find the overlay bug
Playback itself now works on Linux, but the React controls overlay
doesn't appear. nativePlayerActive only flips on the native-player-show
Tauri event, so log both sides: whether Rust actually emits it, and
whether the App.tsx listener is registered in time to receive it.
2026-06-20 16:52:34 +03:00
KhooLy
68d49f4a18 chore: bump version to 0.1.15 2026-06-20 16:30:36 +03:00
KhooLy
eb5b96122f fix: don't fail player init when mpv lacks the osc option
Found via the new debug_log checkpoints: the bundled Linux libmpv was
built without lua, so mpv_set_option_string("osc", "no") returned
"option not found" and player_init bailed out entirely before ever
creating a renderer. We only set this to turn OSC off, which is moot
if OSC doesn't exist in the first place, so treat it as a warning
instead of a fatal error.
2026-06-20 16:28:38 +03:00
KhooLy
96c723c67f chore: bump version to 0.1.14 2026-06-20 16:06:51 +03:00
KhooLy
c081f184e0 debug: add checkpoint logging through the play-trigger flow
player_load already logs but player_init never did, and handlePlay had
no top-level error handling, so a failure anywhere before the
playInEmbeddedMpv try/catch silently dropped the player back to the
previous screen with nothing in any log. Add debug_log checkpoints
through handlePlay and log player_init's outcome, to find where the
AppImage build actually fails since it isn't where we assumed.
2026-06-20 16:04:28 +03:00
KhooLy
c446080918 chore: bump version to 0.1.13 2026-06-20 15:34:36 +03:00
KhooLy
40c0a5a162 fix: find bundled libmpv at the actual Linux package resource path
find_libmpv_path() only checked <exe_dir>/lib, but Tauri's Linux
packaging (deb/rpm/AppImage) puts bundled resources at
<exe_dir>/../lib/<ProductName>/lib per the FHS convention, since /usr/bin
can't hold arbitrary app files. The executable sits at /usr/bin/fluxa-desktop
while libmpv was actually at /usr/lib/Fluxa Desktop/lib/. That mismatch
made every AppImage build silently fall back to a system libmpv.so.2 that
doesn't exist on most distros, so the player never loaded. Scan /usr/lib's
subdirectories for the bundled lib instead of assuming a fixed layout.
2026-06-20 15:32:04 +03:00
KhooLy
0c9afb5779 fix: stop bumping Cargo.toml version, read app version from package.json
Bumping the crate's own version touched Cargo.lock on every release,
busting Swatinem/rust-cache's key (which hashes Cargo.lock) and forcing
a full from-scratch dependency rebuild on every single release across
all three platforms. Tauri natively supports reading the app version
from package.json, so pin Cargo.toml's version and let that carry it.
2026-06-20 15:09:22 +03:00
KhooLy
f455261458 chore: bump version to 0.1.12 2026-06-20 14:58:57 +03:00
KhooLy
3fad2f9057 fix: restore controls and native cursor visibility on activity/resize
Controls could get stuck hidden after a fullscreen transition since they
only re-show on a mousemove. Also hide the OS cursor via Tauri's window
API when controls auto-hide on idle: the CSS cursor:none class only
affects the webview, but on Windows the video renders into a separate
native child window that doesn't know about it.
2026-06-20 14:47:20 +03:00
KhooLy
09b7840ce0 ci: explicitly fetch tags before computing release note range
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.
2026-06-18 22:36:42 +03:00
KhooLy
25ba100863 chore: bump version to 0.1.11 2026-06-18 22:14:01 +03:00
KhooLy
0c0d352573 ci: fix apt cache ownership, use a real mirror redirect 2026-06-18 22:13:11 +03:00
KhooLy
85fddc0d17 ci: switch off the slow Azure apt mirror on the Linux build 2026-06-18 21:50:36 +03:00
KhooLy
ddfbc409c1 ci: strip commit type prefix and capitalize release note entries 2026-06-18 21:41:28 +03:00
KhooLy
0f85d77d70 ci: list each commit with its hash/link in release notes instead of GitHub's auto-summary 2026-06-18 21:38:05 +03:00
KhooLy
1882ee2488 ci: fetch latest mpv fork release instead of a pinned tag
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.
2026-06-18 21:34:27 +03:00
KhooLy
1120126c3a docs: trim implementation details from README features, add DEVELOPMENT.md 2026-06-18 21:34:27 +03:00
KhooLy
01cd9e4b4c chore: bump version to 0.1.10, add a one-command version bump script
tauri.conf.json no longer carries its own version -- it now inherits
from Cargo.toml, so a release bump only touches package.json and
Cargo.toml (scripts/bump-version.sh handles both plus Cargo.lock).
2026-06-18 21:34:27 +03:00
KhooLy
584603fbd5 fix: route skip intro/outro/recap labels and remaining hover texts through i18n 2026-06-18 21:34:27 +03:00
KhooLy
2a31b8b810 style: remove comments added while debugging, drop leftover verbose mpv logging 2026-06-18 21:34:27 +03:00
KhooLy
0785735c92 fix: optimistically update mute/pause icon state instead of waiting for the status poll 2026-06-18 21:34:27 +03:00
KhooLy
78c5db123c fix: poll seek/load completion instead of blind fixed sleeps for thumbnails
Previously every thumbnail request paid a fixed 200ms (and 500ms on
first load) regardless of how fast the actual seek was. Polling exits
as soon as it's actually ready, capped at the same ceilings as before.
2026-06-18 21:34:27 +03:00
KhooLy
0cc8e68217 fix: create the thumbnail renderer's software render context eagerly
vo=libmpv requires a render context to exist before any loadfile/seek
command runs (unlike vo=null, which needs nothing). The context was
previously created lazily inside render_thumbnail(), called after
load/seek already failed with 'error running command'.
2026-06-18 21:34:27 +03:00
KhooLy
fa0ae9af7c fix: use vo=libmpv instead of vo=null for the thumbnail renderer
vo=null discards all decoded video frames before they can reach any
render API, so render_thumbnail() always got a black/empty buffer
despite the render call itself reporting success.
2026-06-18 21:34:27 +03:00
KhooLy
879d81d06f fix: sync seek-thumbnail-enabled to the backend at app startup, not just on Settings mount
The backend flag previously only got set when SettingsScreen mounted,
so a user who enabled the preference in a past session and never
revisits Settings would silently get no thumbnails -- the backend
default stays false with no error, since it returns early before
ever touching the renderer.
2026-06-18 21:34:27 +03:00
KhooLy
fb726e5fcd fix: detect no-video-track deterministically instead of guessing with a timeout
video-codec reflects the container's track list, available right
after the file opens, independent of decode/buffering progress.
Replaces the previous fixed-timeout heuristic, which was firing
early for legitimately slow torrent buffering and revealing a black
player view before the real frame was ready.
2026-06-18 21:34:27 +03:00
KhooLy
9d8feecd7d fix: log seek thumbnail invoke failures instead of swallowing them 2026-06-18 21:34:27 +03:00
KhooLy
67536ecb55 fix: check mpv_render_context_render's return code in render_thumbnail
This is the actual function the seek-thumbnail flow calls -- render_frame
(fixed earlier) is a separate, similar function used elsewhere.
2026-06-18 21:34:27 +03:00
KhooLy
bbe7bd0342 fix: check mpv_render_context_render's return code in the sw/thumbnail path too
Same bug as the OpenGL path: the return code was discarded and a
black buffer was reported as a successful frame regardless.
2026-06-18 21:34:27 +03:00
KhooLy
7b20ebbf96 fix: hold audio until the first video frame is ready instead of starting early
load() now stays paused; the frontend unpauses once vo-configured
(or a 4s safety timeout for video-less streams) is observed, so
audio no longer plays ahead of the picture during the loading screen.
2026-06-18 21:34:27 +03:00
KhooLy
6f22377e48 fix: block briefly for the player_renderer lock in player_command
User commands like pause must actually take effect; try_lock() was
silently failing with 'player renderer busy' whenever it collided
with the render thread's per-frame lock, requiring multiple clicks.
2026-06-18 21:34:27 +03:00
KhooLy
e39329206f Revert "debug: log player_status invoke failures instead of swallowing them"
This reverts commit 88d6c4242798858d1a2a4995657d6b07db0b3aca.
2026-06-18 21:34:27 +03:00
KhooLy
8e912493a6 Revert "debug: TEMP log player_status values to find why first-frame never fires"
This reverts commit bac816ddad8044ffa7656207b4adcf686705777b.
2026-06-18 21:34:27 +03:00
KhooLy
e4b8bd92b2 Revert "debug: TEMP log native-player-show listener registration and firing"
This reverts commit bcb5d57523175604b1d1cfd24eb85284c051c27d.
2026-06-18 21:34:27 +03:00
KhooLy
fc8bf89aee Revert "debug: TEMP log on every App() render to confirm edits are loading at all"
This reverts commit 625ff26b455009fcef0b9459dff82a116032976a.
2026-06-18 21:34:27 +03:00
KhooLy
7ce1a75b9d fix: pump Win32 messages for child_hwnd on its owning thread
child_hwnd is created on the render thread via CreateWindowExW, but
nothing ever ran a message loop for it. Windows expects the thread
that creates a window to process its message queue; without that,
compositor/system messages sent to the window go unanswered, which
plausibly explains both the freeze after WS_CLIPSIBLINGS removal made
this window actively participate in compositing, and the crash when
moving the parent window (synchronous WM_WINDOWPOSCHANGING messages
propagate through the window hierarchy including this child).
2026-06-18 21:34:27 +03:00
KhooLy
bab3734df6 debug: TEMP log on every App() render to confirm edits are loading at all 2026-06-18 21:34:27 +03:00
KhooLy
fc4164bc33 debug: TEMP log native-player-show listener registration and firing 2026-06-18 21:34:27 +03:00
KhooLy
869c0e2d05 debug: TEMP log player_status values to find why first-frame never fires 2026-06-18 21:34:27 +03:00
KhooLy
b9cceb7337 debug: log player_status invoke failures instead of swallowing them 2026-06-18 21:34:27 +03:00