Commit Graph
2183 Commits
Author SHA1 Message Date
edde746 7ec1c2ebdc fix(player): anchor libass overlay to video rect for correct zoom/cover positioning 2026-06-11 12:49:21 +02:00
edde746 7ec062deaf fix(player): pinch zoom flicker from per-tick relayout and filter churn
close #1261
2026-06-11 12:29:34 +02:00
edde746 a5c7d5b52a refactor(watch-together): host-authoritative declarative sync protocol
Replaces the imperative play/pause/seek/positionSync message soup with a
single host-authored PlaybackState (seq-ordered, anchor-extrapolated,
phase machine: loading/waitingForPeers/paused/playing) that doubles as
the heartbeat, plus guest status reports and host-applied control
requests. Fixes the guest seek-back loop while the host loads (readiness
was keyed on a pre-load !buffering snapshot and heartbeats broadcast
frozen positions), adds real group buffering coordination (stall grace,
scheduled simultaneous resumes, 15s safety timeout), rate-nudge drift
correction with passthrough-aware seek fallback, session-scoped message
handling (no lost messages during episode-switch detach gaps), and an
expected-state ledger replacing the racy remote-action flag.
2026-06-11 09:42:38 +02:00
edde746 e54bbd11f1 feat(player): passthrough state tracking + sync-layer position/passthrough getters
Includes the mpv passthrough rate-suspend wiring (passthrough cannot
scaletempo; suspended while rate != 1.0) that the new getters report.
2026-06-11 09:16:01 +02:00
edde746 38afdab2e4 fix: support mx player variants
close #1304
2026-06-11 08:35:19 +02:00
edde746 f214c50c15 fix(player): responsive double-tap skip stacking
single tap stacks while the skip pill is visible, feedback shows before
the seek (instant on transcode restarts), fade-out hide timer is tracked so
a re-shown pill isn't killed mid-spree, and tap pairing uses the platform
kDoubleTapTimeout
2026-06-11 07:15:31 +02:00
edde746 1fc081ed6b fix(player): eager timeline scrub gesture and stable slider tree
close #1302
2026-06-11 07:15:31 +02:00
edde746 cbaed8cdfb fix(livetv): tune current guide programs on tv
close #1298
2026-06-11 07:15:31 +02:00
github-actions[bot] eac0e26696 chore: update cask to 2.6.0 2026-06-10 19:45:34 +00:00
github-actions[bot] 77af810d1f chore: bump version to 2.6.0 2026-06-10 19:04:45 +00:00
edde746 1292d7ac34 fix(dovi): bump MPVKit to v1.0.2 for profile 8 DV hardware decode
close #1262
2026-06-10 20:26:11 +02:00
edde746 e75ab94eb9 fix(tv): make osk search key focus results
The TV keyboard dialog froze the field's callbacks at open time, so the
search screen's done key fell through to unfocus() once results arrived.
Resolve callbacks against the latest field widget at invoke time, and
give the search screen a TV submit handler that focuses the first result
or flushes the pending debounce.
2026-06-10 16:37:35 +02:00
edde746 804bea8e9a fix(android): keep only the active dynamic HDR metadata in DV bitstreams
close #1296
2026-06-10 15:39:51 +02:00
edde746 0502dd7ba0 fix(discover): resolve hero watch state in build 2026-06-10 15:10:52 +02:00
edde746 3221a0cb1a feat: add continue watching details navigation
close #1295
2026-06-10 12:50:32 +02:00
edde746 e7efa458e5 fix(images): preserve fallback placeholder size
close #1293
2026-06-10 09:55:22 +02:00
edde746 9b48f26463 refactor(watch): shared point-of-use resolution across consumers
Adds context.withFreshWatchState/readFreshWatchState and sweeps the
remaining session-critical readers: context menu actions, folder tree
rows, discover hero, and TV spotlight minutes-left.
2026-06-10 05:38:33 +02:00
edde746 903b8eced8 refactor(detail): drop hand-patched watch state for store resolution
Delete the per-event list patching, parent-count adjustment, and the
screen-local progress overlay; rows and the hero resolve against
WatchStateStore at build. Also backfill parentId on playable-descendant
pages so hierarchy resolution covers season detail pages.
2026-06-10 05:30:52 +02:00
edde746 3753967caf fix(watch): resolve watch state per item at cards and playback open
Cards consult the hierarchy-aware store so container marks flip episode
rows instantly and a stale per-episode patch can no longer shadow a newer
show/season mark; playback opens with the session-fresh resume offset.
2026-06-10 05:23:09 +02:00
edde746 516925cf50 refactor(watch): promote overlay to hierarchy-aware WatchStateStore
Resolution now considers parentChain ancestors (newest event wins) and
watched patches set container leaf counts, so container marks reach
descendant cards and vice versa.
2026-06-10 05:18:02 +02:00
edde746 cd9498abb8 refactor(player): centralize playback opening
close #1280
2026-06-10 02:26:26 +02:00
edde746 18642cae15 fix(tv): correct grid calculation
close #1288
2026-06-09 12:47:47 +02:00
edde746 92063bd58f fix(playback): skip redundant mark-watched
close #1287
2026-06-09 12:19:27 +02:00
edde746 726281ed44 fix(tvos): top shelf sync 2026-06-09 08:06:42 +02:00
edde746 e02daa89b8 fix(tvos): stop Home nav auto-playing continue watching
close #1281
2026-06-09 06:10:22 +02:00
edde746 7de7802368 fix(hubs): keep recently-added detail scoped to its library
close #1282
2026-06-08 22:03:28 +02:00
edde746 d44a8994ce fix(discover): open server tasks with remote
close #1272
2026-06-08 08:23:57 +02:00
edde746 42d9168941 fix(player): stabilize mobile content strip 2026-06-08 00:50:22 +02:00
edde746 38616770e5 fix(i18n): localize season & episode labels in downloads tree 2026-06-07 21:46:44 +02:00
edde746 bf7558f80d fix(i18n): localize generic season names from server
close #1271
2026-06-07 21:46:24 +02:00
edde746 381e82d61a fix(detail): highlight next unwatched ep when not in continue watching
close #1269
2026-06-07 18:42:41 +02:00
edde746 9cebcb97c5 feat(plex): add Plays and User Rating sort options
close #1264
2026-06-07 17:50:36 +02:00
edde746 eef73e6447 fix: expand home hub previews
close #1268
2026-06-07 17:35:56 +02:00
edde746 e8df18e7b2 fix(jellyfin): order continue watching + up next by recency 2026-06-07 16:34:18 +02:00
github-actions[bot] 54512b8f93 chore: update cask to 2.5.0 2026-06-07 12:45:47 +00:00
github-actions[bot] 1e0988e381 chore: bump version to 2.5.0 2026-06-07 14:19:17 +02:00
edde746 8efd8f1dc8 fix(jellyfin): upload artwork as binary 2026-06-07 13:32:07 +02:00
edde746 38868e0078 fix: use device name for companion remote
close #1256
2026-06-07 12:58:13 +02:00
edde746 273d0c7985 fix(back): don't short-circuit side-nav back chain to home
The side-nav host's onSystemBack called _handleMainBack on the system
route-pop path, jumping straight to the home tab and skipping the dpad
back chain (content -> top tabs -> sidebar). Restore the original inert
behavior: canPop:false blocks the route-pop and the key path owns the
chain; the host still closes an open sheet on back. Bottom-nav unchanged.
2026-06-07 10:05:57 +02:00
edde746 4728564e0c refactor(back): host-owned system back in main_screen
Both main_screen hosts (side-nav + bottom-nav) drop their PopScopes and
pass canPop:false + onSystemBack to OverlaySheetHost, so a system back
with a sheet open closes the sheet instead of running tab-nav/exit. Key
(dpad) back path unchanged; onSystemBack mirrors it for a pure popRoute.
2026-06-07 10:05:57 +02:00
edde746 489bf914af refactor(back): host-owned sheet back in hub + media detail
hub_detail and media_detail (TV + non-TV) drop their hand-rolled PopScopes
and pass canPop/onSystemBack to OverlaySheetHost. Keeps appbar-focus-first
and Android-keyboard block behavior; fixes system-back-with-sheet-open
leaking to a screen pop. iOS swipe-back preserved.
2026-06-07 09:20:02 +02:00
edde746 248b5fd91a refactor(back): adopt host-owned sheet back in watch-together + player
watch_together, video_player, mobile_remote and live_tv_show_schedule now
pass canPop/onSystemBack to OverlaySheetHost instead of hand-rolling a
PopScope. Restores the iOS swipe-back on watch_together and centralizes
the sheet-close-on-back logic.
2026-06-07 09:13:49 +02:00
edde746 bbf7b1f9da feat(overlay-sheet): opt-in PopScope so the host owns system back
Adds nullable canPop + onSystemBack to OverlaySheetHost. When canPop is
set, the host installs its own PopScope that closes an open sheet on a
system/route back instead of popping the screen; null keeps today's
behavior. Lets screens drop their hand-rolled sheet-back PopScopes.
2026-06-07 09:06:29 +02:00
edde746 83899a38f3 fix(tvos): sync version 2026-06-07 08:51:02 +02:00
edde746 cda4c1e78a fix(watch-together): enable dpad long-press to open recent room actions
close #1259
2026-06-07 08:51:02 +02:00
edde746 01e5814943 fix(video): consolidate auto-skip cancellation 2026-06-07 06:13:14 +02:00
edde746 3cca29512d fix: bump MPVKit to v1.0.1 for profile 8 Dolby Vision decode
Routes all single-layer DV profile 8 (incl. compat 0) through the Apple
DV decode path, so VideoToolbox decodes it in hardware as true Dolby
Vision instead of failing over to software HDR10. Refs #1262.
2026-06-06 16:06:31 +02:00
edde746 8139fc2b17 fix(tvos): make HDR toggle disable Dolby Vision
HDR-off now forces SDR display criteria for DV like it does for HDR10,
and the runtime toggle re-applies the criteria. Refs #1262 (part A).
2026-06-06 14:17:52 +02:00
edde746 1ef4032666 feat: add startup section setting
close #1240
2026-06-06 13:08:02 +02:00
edde746 4c4b18e2cd fix(i18n): localize hardcoded UI strings
close #1257
2026-06-06 11:45:34 +02:00