2026.11.11.2213-nightly
- chore(web): link to the docs at aiostreams.org (cec88d1)
- chore(frontend): link to the docs at aiostreams.org (b7aa386)
- chore(core): link to the docs at aiostreams.org (49fbbb9)
- docs: move the site to aiostreams.org (515a40d)
- docs: add the latest app changes to the v2.38 post (616beea)
- feat(web): add the desktop app's picture-in-picture overlay (f5aa125)
- feat(desktop): add picture-in-picture on Windows (cf30093)
- fix(web): lift the player time over the seek bar's press area (f2cc78a)
- docs: describe AllVersions, MediaSourceFields and the release key (0e440d8)
- feat(web): ask version lists for only the fields they read (e08b1b8)
- feat(jellyfin): add MediaSourceFields to PlaybackInfo (4c114c7)
- feat(web): send AllVersions with PlaybackInfo (21be777)
- feat(frontend): show the app's version limit (4a95bc7)
- feat(jellyfin): add AllVersions to list versions past the version limit (ccc0abb)
- feat(web): remember a version's release and stand in for it when gone (a93a834)
- feat(jellyfin): add a release key to versions (9159392)
- fix(android): let mpv.conf's hwdec override the app's (a3b243b)
- feat(desktop): send the system's 24-hour clock setting to the page (75cd7cd)
- feat(android): send the system's 24-hour clock setting to the page (7bfc19a)
- feat(web): add a time format setting (58b9dd8)
- feat(web): add a picture-in-picture button and an HDR output setting (45ebf3e)
- build(web): update @aiostreams/webgpu-player to 0.4.0 (c7f5e12)
- feat(android): add a pip message that enters picture-in-picture (985b028)
- fix(web): skip reopens for live links the browser says it can't play (71846b9)
- docs: write up browser playback and trailers in the v2.38 post (78f39e0)
- docs: describe the usage statistics (7b9a22b)
- ci: pass the Aptabase settings and the TV app version to the web builds (2f7ecdd)
- feat(web): send daily and monthly usage counts to Aptabase (ff660c6)
- docs: describe declaring catch-up in the manifest (56957c4)
- feat(server): declare the addons' catch-up days in the manifest (5d793a5)
- feat(core): read the guide's catch-up range from addon manifests (a2b21ab)
- docs: add the trailer and opened card hooks (8c95a85)
- feat(web): play trailers by themselves in cards, the hero and title pages (0a72f90)
- docs: describe the Live TV view's guide flag (6b612fa)
- fix(web): offer the Live TV guide when its view is marked as having one (e99ebe3)
- feat(jellyfin): mark the Live TV view when one of its catalogs is a guide (49ac2b0)
- fix(web): leave channels without details out of recent channels (8995518)
- fix(jellyfin): mark a channel no addon has details for (15c7c65)
- build(web): update @aiostreams/webgpu-player to 0.3.0 (eb239c1)
- feat(web): list WebGPU-Player and the decoders it ships on the licences page (675b9a3)
- feat(web): make WebGPU the browsers' default engine and first choice (26b7d92)
- feat(web): take a Matroska file's subtitle blocks from the WebGPU engine as it reads them (c73264f)
- fix(web): hurry a file's subtitle reads while lines near the playhead are unread (b4dc1d2)
- refactor(web): move createLive to lib/live-value and use it for the app's one-value stores (79da6d7)
- chore: add issue templates for the app, Jellyfin apps, the Usenet engine and the marketplace (24083c8)
- docs: add v2.38 changelog (599114b)
- docs: add terms and privacy pages and a footer with a disclaimer (fe41da8)
- docs: point the Usenet guide at the dashboard's current pages (8db82fd)
- docs: describe the WebGPU engine and subtitles in the browser and on TVs (23d3fb1)
- refactor(web): move the subtitle delays and auto sync out of usePlayer into useSubtitleTiming (43a71ed)
- refactor(web): list the file's own subtitles and wait for them in EmbeddedSubtitles (2d1687e)
- fix(server): check a resume's ticket against the live party before the join lock (3a038e4)
- refactor(web): share how the page players pick and draw subtitles (0c8238d)
- refactor(web): move usePlay into features/player and the version helpers into lib/playback/sources (13a401b)
- refactor(web): rename the artwork image helpers to lib/artwork/urls (e028a1a)
- chore(web): drop unused imports (df2fa0e)
- refactor(web): split the party sheet into its state, joining, in-party and chat parts (45525d9)
- refactor(web): move the settings store and its sync into lib/settings/store (b44d9b7)
- refactor(web): split the version list and its prompts out of the version picker (871a975)
- refactor(web): move the playback info, history and watch-state hooks out of the Jellyfin queries (6c5661b)
- refactor(web): split the item page into its header, actions, seasons and sections (2166cac)
- refactor(web): split the shell layout into its nav bars and page helpers (874ecb9)
- refactor(web): split the artwork module into drawn copies, reads and the shrink queue (b60cd6b)
- docs: describe the web app's folders in CLAUDE.md (a9db446)
- refactor(web): give each page a folder under app/ and group code by feature (845dbd5)
- feat(web): give the page players the file's subtitle index and lines (1e722d4)
- feat(web): run anime upscaling and the user's shaders in the WebGPU engine (ac71454)
- feat(web): add WebGPU-Player as a browser engine (c527e8d)
- refactor(web): read an engine's stats as rows the page draws (0422c86)
- perf(web): hold the controls' visibility and the subtitle lift in live values (33049ac)
- feat(web): resolve YouTube trailers on LG and Samsung TVs (ef9696f)
- feat(web): read files past CORS through the webOS service (4f83513)
- feat(smart-tv): add a webOS service that fetches past CORS (d2fc882)
- feat(web): read a Matroska file's own subtitles and draw ASS and PGS (d0832e1)
- fix(server): allow the Range header in cross-origin requests (78986ca)
- fix(web): use the wide item backdrop in landscape (0d8f535)
- docs: document the variant work budget (c841c23)
- docs: document who gets an addon or catalog and back-to-back selectors (6fde9ca)
- feat(frontend): add who gets this to addons and catalogs (80ea872)
- feat(server): send the variant work budget in status (e5cdb0a)
- feat(core): replace variant length and instruction limits with a work budget (865ee09)
- feat(core): combine back-to-back variant selectors (d69009a)
- docs: describe the RunTimeTicks playback report field (2693547)
- feat(web): send the player's duration as RunTimeTicks in playback reports (039640a)
- feat(jellyfin): read RunTimeTicks from playback reports and UserData (0ed472a)
- fix(core): prefer the watch row's duration for PlayedPercentage (00a5f1b)
- docs: add WebSite and SoftwareApplication structured data to the home page (c828943)
- feat(server): send X-Robots-Tag noindex unless ALLOW_SEARCH_INDEXING is on (eb0dd32)
- ci: run the docs workflow when the release-please manifest changes (decfa22)
- docs: add a download page and show the app's features on the home page (363ffa1)
- fix(android): read mpv's versions once and close it off the main thread (9b04b52)
- fix(web): start the back slide only when Back leaves the page (2e25752)
- build(android): update libs for 32-bit unwind tables and Mbed TLS 3.6.7 (687faed)
- fix(web): clear now playing when leaving the trailers (76f7af9)
- fix(web): focus the item menu's first entry when keys open it (3a4b481)
- fix(web): mark the card whose menu is open and leave it unblurred (ca63731)
- fix(web): blur unstarted episodes in the calendar (edd0b42)
- feat(jellyfin): add anime ids to films fetched on their own (de255a2)
- feat(core): look up a film's anime ids from the anime database (4ac9da6)
- fix(android): keep live links out of the stream cache (fe4f916)
- feat(web): add a launch splash to the standalone build (f2da9cf)
- feat(android): show the starting logo until the page draws its splash (b9cb133)
- docs: describe anime upscaling in the desktop app (9b45889)
- feat(web): offer anime upscaling in the desktop app (4b23594)
- feat(desktop): apply the upscaling shader in mpv (443c4e8)
- docs: describe anime upscaling and mpv shaders in the Android app (b5a444f)
- feat(web): add anime upscaling and mpv shaders to the Android app (3c00dac)
- feat(android): apply the upscaling network and the user's shaders in mpv (cbe3b3e)
- feat(android): add an upscaling network and run ExoPlayer's video through it (8efcbbc)