Changelog
Player / Playback
- Core/Player: Possibly regain compatibility with Audio Offset Manager
- Player: Adjust resume point by user setting
- Player: Embedded subtitles: Fix parsing mis-tagged Kodi subtitle offset (stream tagged as "pt (BR)" for example gets parsed by Kodi as "pt-", which is invalid)
- Player: Avoid "skipping intro" blip when starting fresh with automatically skipping behind intro on start
- Player: After playback, wait 0.5s to allow for enough time for codec teardown (might hang with a black screen due to kodi dialogs otherwise)
- Player: Don't error on close when seekdialog is already deleted
- Player: Only fix embedded subtitles by short seekback if we're not CE p3i >= T2 (T2 fixes this issue already)
- Core/Player: Don't end up with a broken UI when playback failed due to missing file (wait for the failure dialog to be dismissed by the user, for up to 10 seconds)
- Core/Player: Fix double pausing on Alternate Seek and edge case (both cosmetic)
- Core/Player: Only switch LAV modes if not already LAV Full or SB
Seek / SeekDialog
- CoreELEC/SeekFix: Store reported seek player time and use it, if it massively differs from what the player tells us
- CoreELEC/SeekFix: Stabilize fast seek fix (thanks @peaceoutt32)
- CoreELEC/SeekFix: Wait until player actually paused when pausing for seek
- CoreELEC/SeekFix: Prefer reported seek time over reported current player time if set and valid
- CoreELEC/Seek back on start/SeekDialog: Implement a blackout screen during seeking back on start
- Core/Player/Blackout: Show blackout until seek completely done
- Core/Player: SeekBackOnStart: Add delay between forward and backward seek to give decoders time to stabilize (fixes VC-1 24p HW stuttering at least); default: 500ms
- SeekDialog/Episodes/Movies: Increase scroll speed for too-long titles (5/15 to 35)
- SeekDialog: Don't react to SELECT/ENTER events on skip marker buttons during seek
- SeekDialog: Allow pressing UP on the big seek chapter list with chapters disabled to access the skip marker button
- Player/Seekdialog: Pre-skip markers before the resume point to avoid race conditions with tick()
Seamless Branching / LAV / Codecs
- Core: Detect CE U3k builds above B9 that implement the alternative LAV filters for future auto-fixing of seamless branching titles
- Core/Player: Auto switch to LAV Full/SB if possible (CoreELEC U3k B9+ detected)
- Core/SB: Update seamless branching titles (thanks @korbus)
- Core: Detect avdvplus as dynamic seamless branching fix enabled build, starting with R2
- Core: Detect CoreELEC p3i build as auto seamless branching fix capable build
- VideoInfo: Show seamless branching state on audio streams of affected videos
- Core/Codecs: Improve JOC audio detection substantially in some cases; lower JOC bitrate likelihood to 736kbit due to Plex server calculation bug (was 768)
Episodes
- Episodes: Fill episodes after deletion (thanks @andybkma)
- Episodes: Fix long scrolling episode titles cutting off remaining time pill
- Episodes: Fix deleting an episode created a pagination placeholder
- Episodes: Drastically improve initial loading time of episode view (> x10)
- Episodes: Reduce wait on initial episode select
- Episodes: Fix To Show and To Section in rare circumstances
- Episodes: Be more resilient against missing item data and hung connections when closing window
- Episodes: Delay initial busy state for 2.5 seconds
- Episodes: Use thread for changing background on initial load
- Episodes: Improve load times by batch fetching all to-be-reloaded episodes' data in one go
- Episodes: Optimize task load order
- Episodes: Improve resilience against closing during initial load
- Episode: During initial load, wait up to 4 seconds before executing user actions and debounce other input during that time
Watchlist
- Watchlist: Adhere to new plex.tv watchlist limit of 100 items (was: 300; unannounced)
- Watchlist: Fix watchlisted shows "To Show" menu option error on other than current server
- Watchlist: Fix fully watched TV Shows not properly removed from Watchlist
- Core/Watchlist: Show notification once an item has been automatically successfully removed from the watchlist
- Core/Watchlist: Check for item watchlist existence before blindly trying to remove it
- Watchlist/Movies: Don't attempt to set codec info on watchlist items
Home / Hubs
- Home: Resolve old fixme for update exit event
- Home/LibraryHubs: Use poster view for in progress TV/Movie library hubs (was 16x9 view)
- Home/LibraryHubs: Add "Remove from continue watching" option to TV/Movie library's hubs in progress items as well
- Home/Main/UserSelect: Refresh home users when receiving a 401 from plex.tv when switching home users, as its protected bit might have changed (pin set), retry two times
- Home: Fix when entering a library quickly without showing its hubs, returning would show the wrong hubs
- Home: Reinitialize properly and update hubs when GoHome action was triggered by Home button bind
- Home: Consolidate multi list iteration for no reason
- Home: Fix hub stops paginating when returning from library hubs to home hubs without clean update
Library
- Library: Add PostersCompact and PostersSmallCompact views with no text (thanks @Rick_Williams)
- Library: Go home when screensaver is activated (saves CPU usage)
- LibraryWindow: Fix chunk callback edge case resulting in infinite recursion (rare case, when closing)
Movies
- Movies: Reload video info after clearing cache or refreshing metadata PMS-side
- Movies: Skip cache when reloading video info on reinit (returning from playback) (only when cache active)
Shows / Seasons
- Show/Seasons: Don't show fully watched state when an on-deck episode is being re-watched
- Episodes/Movies/Shows: Include or exclude directors in cast lists
PostPlay
- PostPlay: Fix wrong next-up item after re-playing the previously played item (e.g. played EP2, replaying EP2 from post-play, EP4 will be next up)
Settings (AddonSettings / User Interface / Video)
- Settings: Fix 'Video play completion behaviour' options and translations
- AddonSettings: CoreELEC Resume Seek Wait: Unclamp further down to 10ms, actually set correct default of 100ms
- AddonSettings: Add "Use alternate seek" prefer reported time; default: On
- AddonSettings: Add "Use alternate seek" wait for valid player time; default: Off
- Settings: Add setting to blackout the screen while seeking back to start (Default: Off, CE/LG: On)
- Settings/User Interface: Add setting to include or exclude directors in cast lists (user-setting, default: On (include))
- Settings: Add "Ensure Kodi Addon position" (default: On)
- Settings: Add setting to return home when screensaver is activated on a library screen (default: on)
- Settings/Video: Add setting for auto seamless branching LAV mode fix
- Settings/Videoplayer: Add setting to adjust resume points negatively on resume, to avoid lost content due to keyframes/seek behaviour (default: -3.5s)
- AddonSettings: Add "Seamless branching LAV mode (CoreELEC U3k B9+)", default: LAV SB
- AddonSettings: Allow specifying a custom background color (when dynamic backgrounds are disabled); overrides preset colors if set
- AddonSettings: Make Seek back on start delay configurable
- Main: Allow not showing any played/unplayed indicators at all
- Settings: Extend User Interface/Played indicators with option "None"
Core / Internal
- Core: Ensure we're updating our lastused value by running our plugin endpoint with a stub value after exiting
- Plugin-Endpoint: Support stub-run
- Core: Do not update lastused value when ran from plugin endpoint initially
- Core: Re-jig waitForOpen
- Core/SignIn/Auth: Fix wonky first start of plugin (home shown briefly after device auth and user select)
- Core: Future-proof template engine (ibis) (thanks @tuffghost)
- Core: Fix compatibility with Python 3.14 (3.14.2) (might break certain assumptions) (U3k B10)
- Core/Mixins: Implement TasksMixin
- Core/AddonSettings: Reduce default requests cache expiry from 7 days to 3 (increasing sqlite db size could yield diminishing returns)
- Core/Plexobjects: On data retrieval error, clear cache for item(s)
- PlexObjects: ListItems() and reload(): Allow returning and using raw etree data instead of parsing elements
- Seasons/Episodes/Movies: Postpone less important tasks to speed up initial load
- Main/Core: Show busy background on user switch
Theme Music
- ThemeMusic: Only locally cache theme music if server is remote (not on local LAN nor plex.tv/watchlist)
- ThemeMusic: When fading, only use sync/wait on final setVolume value, not on the intermediates (reduces blocking)
Translations
- i18n: Update Spanish and Hungarian translations