2026.11.12.1534-nightly
- build(web): fix dockerfile (591b712)
- chore(desktop): release 0.24.0 (#1754) (76a5d6d)
- perf(web): stop re-rendering the player page on unchanged state reports
- fix(web): reopen live sources that end, fail or stall
- feat(web): tell the app's player when a source is live
- feat(web): add a start page setting
- feat(web): list every page in the bottom bar and its menu
- fix(web): drop a live playback's unsent stop
- feat(web): add a Live TV page
- feat(web): add a live mode to the player
- feat(web): list channels on Home and in Favourites
- feat(web): find channels in search
- feat(web): add a programme guide to Live TV
- feat(web): offer many Live TV groups in a searchable picker
- fix(web): take Back on the player's failure screen
- feat(web): play earlier programmes from the guide
- fix(web): place the app's small video by the page's zoom
- feat(web): remind of later programmes
- feat(web): go to a channel by its number on Live TV
- feat(web): reopen Live TV on the channel it was left on
- fix(web): keep Live TV's group when going up from the channels
- perf(web): order the artwork queue by distance from the screen
- perf(web): clip TV rows instead of scrolling them
- perf(web): mark loading boxes with a ref instead of data-nav-wait
- perf(web): memoize row slides and Home's library row cards
- feat(web): show Live TV's guide only when its channels have programmes
- feat(web): centre the hero and item heading on phones
- feat(web): fade what's over the art as a phone scrolls
- fix(web): skip the fade on item art that's ready at once
- feat(web): open titles in a view transition on touch devices
- feat(web): move the page with Android's back swipe
- fix(web): ignore a new page's jump in the bars' scroll tracking
- fix(web): cancel sideways hero swipes so they don't fling
- fix(web): swap the Play icon and size restart with Resume
- fix(web): set the trailer embed's referrer policy
- feat(web): hide the mini player's video while it loads or stalls
- fix(web): count only listboxes outside a page as overlays
- fix(web): move within an entered box before taking the way back
- fix(web): clamp the subtitle lift's easing progress
- fix(web): skip seek thumbnails for live streams
- perf(web): reuse date formatters
- perf(web): keep Live TV key focus in the guide and the list
- perf(web): parse each artwork address once
- fix(web): search for the last channel only when there is one
- perf(web): take controller buttons from the app instead of polling
- feat(web): bind the channel keys to next and previous chapter
- feat(web): add a setting to blur episodes not started
- fix(web): let popovers hide the app's video only where they cover it
- fix(web): go up from the guide to the programme's buttons
- feat(web): pick the group picker's last group again when the keys come back to it
- feat(web): start live TV without subtitles and keep track picks per channel
- feat(web): log live recovery's reopens, give-ups and version switches to the app
- feat(web): send SkipSubtitles on version list requests
- chore(l10n): update Portuguese (Brazil) translation
- chore(l10n): update Norwegian Bokmål translation
- chore(l10n): update Spanish translation
- chore(l10n): update translation files
- chore(l10n): update Italian translation
- chore(l10n): update Portuguese (Brazil) translation
- chore(l10n): update Italian translation
- chore(l10n): update Portuguese (Brazil) translation
- chore(l10n): update translation files
- chore(l10n): update Portuguese (Brazil) translation
- chore(l10n): update Indonesian translation
- chore(l10n): update Polish translation
- chore(l10n): update Italian translation
- chore(l10n): update French translation
- chore(l10n): update Portuguese (Brazil) translation
- chore(l10n): update German translation
- chore(l10n): update Greek translation
- chore(l10n): update Malay translation
- feat(web): add anime upscaling and mpv shaders to the Android app
- feat(web): offer anime upscaling in the desktop app
- feat(web): add a launch splash to the standalone build
- fix(web): blur unstarted episodes in the calendar
- fix(web): mark the card whose menu is open and leave it unblurred
- fix(web): focus the item menu's first entry when keys open it
- fix(web): clear now playing when leaving the trailers
- fix(web): start the back slide only when Back leaves the page
- feat(web): send the player's duration as RunTimeTicks in playback reports
- fix(web): use the wide item backdrop in landscape
- feat(web): read a Matroska file's own subtitles and draw ASS and PGS
- feat(web): read files past CORS through the webOS service
- feat(web): resolve YouTube trailers on LG and Samsung TVs
- perf(web): hold the controls' visibility and the subtitle lift in live values
- refactor(web): read an engine's stats as rows the page draws
- feat(web): add WebGPU-Player as a browser engine
- feat(web): run anime upscaling and the user's shaders in the WebGPU engine
- feat(web): give the page players the file's subtitle index and lines
- refactor(web): give each page a folder under app/ and group code by feature
- refactor(web): split the artwork module into drawn copies, reads and the shrink queue
- refactor(web): split the shell layout into its nav bars and page helpers
- refactor(web): split the item page into its header, actions, seasons and sections
- refactor(web): move the playback info, history and watch-state hooks out of the Jellyfin queries
- refactor(web): split the version list and its prompts out of the version picker
- refactor(web): move the settings store and its sync into lib/settings/store
- refactor(web): split the party sheet into its state, joining, in-party and chat parts
- chore(web): drop unused imports
- refactor(web): rename the artwork image helpers to lib/artwork/urls
- refactor(web): move usePlay into features/player and the version helpers into lib/playback/sources
- refactor(web): share how the page players pick and draw subtitles
- refactor(web): list the file's own subtitles and wait for them in EmbeddedSubtitles
- refactor(web): move the subtitle delays and auto sync out of usePlayer into useSubtitleTiming
- refactor(web): move createLive to lib/live-value and use it for the app's one-value stores
- fix(web): hurry a file's subtitle reads while lines near the playhead are unread
- feat(web): take a Matroska file's subtitle blocks from the WebGPU engine as it reads them
- feat(web): make WebGPU the browsers' default engine and first choice
- feat(web): list WebGPU-Player and the decoders it ships on the licences page
- build(web): update @aiostreams/webgpu-player to 0.3.0
- fix(web): leave channels without details out of recent channels
- fix(web): offer the Live TV guide when its view is marked as having one
- feat(web): play trailers by themselves in cards, the hero and title pages
- feat(web): send daily and monthly usage counts to Aptabase
- fix(web): skip reopens for live links the browser says it can't play
- build(web): update @aiostreams/webgpu-player to 0.4.0
- feat(web): add a picture-in-picture button and an HDR output setting
- feat(web): add a time format setting
- feat(web): remember a version's release and stand in for it when gone
- feat(web): send AllVersions with PlaybackInfo
- feat(web): ask version lists for only the fields they read
- fix(web): lift the player time over the seek bar's press area
- feat(web): add the desktop app's picture-in-picture overlay
- chore(web): link to the docs at aiostreams.org
- build(web): update @aiostreams/webgpu-player to 0.4.1
- fix(web): fade the home hero's backdrop out at its bottom edge
- fix(web): take a trailer's original language from its original audio
- fix(web): switch an engine's track pick that misreads the user's languages
- chore(l10n): update translation files
- chore(l10n): update Portuguese (Brazil) translation
- chore(l10n): update Portuguese (Brazil) translation
- chore(l10n): update Portuguese (Brazil) translation
- chore(l10n): update German translation