2.38.0 (2026-11-14)
Features
- core: add a background lane and an abort signal to catalog walks (71603f4)
- core: add an Xtream builtin (283dc42)
- core: build Live TV channels and programmes from live catalogs (ee60ccd)
- core: combine back-to-back variant selectors (d69009a)
- core: keep the programmes of guide catalogs (99ae11d)
- core: look up a film's anime ids from the anime database (4ac9da6)
- core: mark the Live TV view as grouping channels by its genres (d01f75c)
- core: play programmes from their channel's archive (652f5a4)
- core: read Live TV guides by channel id (07a8812)
- core: read the guide's catch-up range from addon manifests (a2b21ab)
- core: replace variant length and instruction limits with a work budget (865ee09)
- core: search channels by name or number (7251b10)
- core: size memory caches in bytes (eb07f6c)
- frontend: add who gets this to addons and catalogs (80ea872)
- frontend: show the app's version limit (4a95bc7)
- jellyfin: add a release key to versions (9159392)
- jellyfin: add AllVersions to list versions past the version limit (ccc0abb)
- jellyfin: add anime ids to films fetched on their own (de255a2)
- jellyfin: add MediaSourceFields to PlaybackInfo (4c114c7)
- jellyfin: default Mark unaired episodes to off (62dd084)
- jellyfin: find channels in an item search (f61e4d3)
- jellyfin: mark the Live TV view when one of its catalogs is a guide (49ac2b0)
- jellyfin: play programmes from their start (4c114ed)
- jellyfin: read RunTimeTicks from playback reports and UserData (0ed472a)
- jellyfin: serve Live TV (45ac597)
- jellyfin: skip the subtitle lookup when PlaybackInfo sends SkipSubtitles (5d5f3f0)
- jellyfin: sort Next Up by the later of the last watch and the next episode's airing (38d97d3)
- jellyfin: stop catalog and collection walks when the client leaves (26f6f24)
- posters: add custom poster URL service (#1739) (dd620f5)
- presets/newznab: add SearchNZB indexer (#1701) (07b9861)
- presets: add cinemeta preset (#1740) (4c806af)
- server: declare the addons' catch-up days in the manifest (5d793a5)
- server: mark and explain a title no addon has details for (a34df0c)
- server: mount the Xtream builtin (43364cd)
- server: pass guide catalogs on to Stremio (cfc9236)
- server: send the variant work budget in status (e5cdb0a)
- server: send X-Robots-Tag noindex unless ALLOW_SEARCH_INDEXING is on (eb0dd32)
- server: sort watch-state lists by the request's SortBy (aa0be05)
- ui: give confirmation dialogs a name and a focus return (28939e3)
- ui: open a combobox's list with the keys on its filter (ecadc4d)
- ui: take a colour typed without its # (f728833)
- variants: add a move instruction (676e642)
- watch-state: default the minimum resume percentage to 0 (c723b85)
- web: add a background taken from the title's artwork (cd0784d)
- web: add a launch splash to the standalone build (f2da9cf)
- web: add a live mode to the player (57924ae)
- web: add a Live TV page (2627720)
- web: add a mini player that plays on over the pages (087fc48)
- web: add a picture-in-picture button and an HDR output setting (45ebf3e)
- web: add a programme guide to Live TV (96cb7f5)
- web: add a setting for how long the hero stays on each title (bbf8b5c)
- web: add a setting to blur episodes not started (688bb80)
- web: add a start page setting (008eae2)
- web: add a time format setting (58b9dd8)
- web: add anime upscaling and mpv shaders to the Android app (3c00dac)
- web: add sorts and more filters to libraries and favourites (f4908e4)
- web: add the desktop app's picture-in-picture overlay (f5aa125)
- web: add WebGPU-Player as a browser engine (c527e8d)
- web: approve another device's Quick Connect code from Account settings (f8fc954)
- web: ask for a metadata addon on a title without details (d042e8a)
- web: ask version lists for only the fields they read (e08b1b8)
- web: bend the liquid glass bar's backdrop toward its middle like a lens (f665a2b)
- web: bigger icons in the bottom bar without names (95d151a)
- web: bind the channel keys to next and previous chapter (9b22d92)
- web: centre the hero and item heading on phones (11020b4)
- web: draw liquid glass as a lens around its middle line, with a lit rim (ccfc496)
- web: fade what's over the art as a phone scrolls (8bca50b)
- web: fill the phone's title row in a set order, and keep tablets on the inline row (5a4c9da)
- web: find channels in search (f38beb6)
- web: follow the user's download and preference permissions (44cbf78)
- web: give shows Play and More info in the rotating hero (bb5e92a)
- web: give the page players the file's subtitle index and lines (1e722d4)
- web: go to a channel by its number on Live TV (4b27821)
- web: hide the mini player's video while it loads or stalls (ceedd28)
- web: list channels on Home and in Favourites (63814d6)
- web: list every page in the bottom bar and its menu (2c77b3e)
- web: list WebGPU-Player and the decoders it ships on the licences page (675b9a3)
- web: log live recovery's reopens, give-ups and version switches to the app (e1249ac)
- web: make WebGPU the browsers' default engine and first choice (26b7d92)
- web: mark the open season with a sliding bar (40fcd06)
- web: mark unaired episodes the server still lets play, and ask before playing one (3acdd4d)
- web: move the page with Android's back swipe (004e1bd)
- web: move the player into a Document Picture-in-Picture window (afd7466)
- web: offer anime upscaling in the desktop app (4b23594)
- web: offer many Live TV groups in a searchable picker (534bd8c)
- web: offer the in progress, watched and favourite filters on stock servers only (972244f)
- web: open titles in a view transition on touch devices (0edabee)
- web: pick a tab on a press, waiting only out a held key (aee1023)
- web: pick the group picker's last group again when the keys come back to it (2f4564f)
- web: play a server's transcode where the player can't take a version (80a74ad)
- web: play a title's only version without listing it (0e1f8df)
- web: play any HLS link through hls.js where the browser has no HLS (a0fdee8)
- web: play earlier programmes from the guide (44f44f5)
- web: play or pause with Select while the player's controls are hidden (cfe54b8)
- web: play trailers by themselves in cards, the hero and title pages (0a72f90)
- web: put a server subtitle's title on a line of its own (e2d778b)
- web: put a title's actions in a labelled row and a More sheet on touch screens (d70929b)
- web: put card grids under the preview host (fd0c5ca)
- web: put the window buttons in the player's top bar (790f107)
- web: read a Matroska file's own subtitles and draw ASS and PGS (d0832e1)
- web: read files past CORS through the webOS service (4f83513)
- web: remember a version's release and stand in for it when gone (a93a834)
- web: remind of later programmes (3fdc386)
- web: reopen Live TV on the channel it was left on (db8b035)
- web: resolve YouTube trailers on LG and Samsung TVs (ef9696f)
- web: run anime upscaling and the user's shaders in the WebGPU engine (ac71454)
- web: scroll a title's backdrop and the rotating hero at half speed (609cdfa)
- web: search collections and episodes on servers without extensions (951cb0f)
- web: send AllVersions with PlaybackInfo (21be777)
- web: send daily and monthly usage counts to Aptabase (ff660c6)
- web: send SkipSubtitles on version list requests (a51d1d2)
- web: send the player's duration as RunTimeTicks in playback reports (039640a)
- web: ship a web app manifest in the standalone build served on the web (ba790d5)
- web: show episodes title first, with their air date and a menu button (dc7f8b0)
- web: show Live TV's guide only when its channels have programmes (c7d51af)
- web: show the player's chapters in a sheet with pictures (3a7d2f2)
- web: show the time in the player's top bar (d98ca36)
- web: slide the bottom bar away while scrolling down (8f891da)
- web: sort Continue watching by the later of the last watch and the next episode's airing (9281714)
- web: sort home library rows newest first on servers without extensions (e06c4d5)
- web: start live TV without subtitles and keep track picks per channel (7734333)
- web: take a Matroska file's subtitle blocks from the WebGPU engine as it reads them (c73264f)
- web: tell the app's player when a source is live (049cd02)
- web: treat titles with an Anime genre or tag as anime (f0757c6)
- web: use the server's chapters and trickplay pictures in the player (6488279)
Bug Fixes
- core: ask live catalogs that take a search for channel matches (8203fc8)
- core: close idle live sessions without recording them (e7d4512)
- core: only set indexer/addon mediaInfoQuality when languages were returned (#1538) (ed74a3b)
- core: prefer the watch row's duration for PlayedPercentage (00a5f1b)
- core: read and send archive parts as [url, bytes] pairs (e2292d1)
- core: read OpenSubtitles' Chinese bilingual codes as Chinese (234d9f3)
- core: send no playback events to a pull-only watch-state addon (71c71b9)
- core: skip stream metadata for ids the parser can't read (e6c6c6b)
- desktop: add --device=input to the Flatpak (c219455), closes #1578
- frontend: replace opacity modifiers on CSS variable colours (ea236b3)
- jellyfin: date progress reports on arrival and drop ones after their stop (e6c58c3)
- jellyfin: mark a channel no addon has details for (15c7c65)
- jellyfin: rebuild movie-kind watch rows as movies (26a72b6)
- jellyfin: send UserDataChanged to sockets on every replica (47e767b)
- jellyfin: tell live playback by its item when its version is unknown (c0723d9)
- knaben: dedupe hits, use upload date for age, include subcategories (#1656) (10e0f56)
- parser: resolve ISO 639-2/B codes in convertISO6392ToLanguage (#1792) (09b565a)
- presets/meteor: migrate to current config format and improve stream parsing (#1735) (93c27f0)
- presets/meteor: skip "donate" placeholder stream (859e30d)
- presets/meteor: skip "no results" placeholder stream (#1736) (3fc8968)
- presets: update Doctor Who URL and add missing Torrentio/TorrentsDB providers (#1762) (73e85ef)
- server: allow the Range header in cross-origin requests (78986ca)
- server: check a resume's ticket against the live party before the join lock (3a038e4)
- server: open live playback sessions as live (2e566da)
- therarbg,torrent-galaxy: normalise imdb ids, keep keywords first in URLs, share code (#1650) (1908994)
- torrent-galaxy: use torrentgalaxy.online as default domain (#1738) (f651b79)
- ui: keep typed colour text while it names the stored colour (5932afa)
- ui: patch Radix Select's onPlaced to a stable callback (233ba8f)
- ui: replace opacity modifiers on CSS variable colours (43a4a7d)
- watch-state: skip a buffered tick once the title was played after it arrived (a11746d)
- web: add useSearchParam to keep a page's choices in its address (9157f2f)
- web: blur unstarted episodes in the calendar (edd0b42)
- web: cancel sideways hero swipes so they don't fling (14ce38c)
- web: clamp the subtitle lift's easing progress (c287e1c)
- web: clear now playing when leaving the trailers (76f7af9)
- web: clear the following heroes' shades and trailer veil over the artwork background (a837713)
- web: count only listboxes outside a page as overlays (55afdf8)
- web: drop a live playback's unsent stop (b475694)
- web: drop chapter titles that are only a timestamp (f11b4a0)
- web: end a remote's scrub from the bar's Play button (#1774) (e83befc)
- web: fade the home hero's backdrop out at its bottom edge (bcd899e)
- web: fade the version list's art out with a mask (8b9cec2)
- web: fall back to Safari's prefixed fullscreen API and hide the button without one (50685a2)
- web: focus the item menu's first entry when keys open it (3a4b481)
- web: format date-only air dates on their own day (ff993f5)
- web: give a page swiped back a copy of the artwork wash (f5bcfd3)
- web: go up from the guide to the programme's buttons (6450590)
- web: hide the side rails' scrollbars (e5a2f95)
- web: hold the next episode prompt until the episode plays, and play on once (#1773) (9d7a8ac)
- web: hurry a file's subtitle reads while lines near the playhead are unread (b4dc1d2)
- web: ignore a new page's jump in the bars' scroll tracking (ee02cfd)
- web: keep Live TV's group when going up from the channels (76f552e)
- web: keep the skip flash in place while skips add up (6bc1f6c)
- web: leave channels without details out of recent channels (8995518)
- web: let popovers hide the app's video only where they cover it (5820c19)
- web: let webOS open its keyboard on a text field (#1585) (d69882f)
- web: lift the player time over the seek bar's press area (f2cc78a)
- web: limit episode highlights to key focus and pointers that hover (8a96385)
- web: mark the card whose menu is open and leave it unblurred (ca63731)
- web: move within an entered box before taking the way back (bca3fac)
- web: name tracks by language and kind, with their own title on a line below (db063fb)
- web: offer Live TV groups only where the view marks its genres as groups (065465c)
- web: offer the Live TV guide when its view is marked as having one (e99ebe3)
- web: open a TV's keyboard from an open list's filter (6130ba5)
- web: open versions through the stream route of servers without extensions (a591766)
- web: place the app's small video by the page's zoom (8ee5362)
- web: put the favourites sort beside the tabs and Random pick at the end (48a2289)
- web: reopen live sources that end, fail or stall (efb11f3)
- web: replace opacity modifiers on CSS variable colours (1332031)
- web: replace the guide and calendar loading skeletons (f9165fe)
- web: search for the last channel only when there is one (a0ffd9e)
- web: send ApiKey on the session socket (58e9e51)
- web: send planned skips to the Android app only (f8da8c8)
- web: set the trailer embed's referrer policy (b16a94d)
- web: skip reopens for live links the browser says it can't play (71846b9)
- web: skip seek thumbnails for live streams (9684105)
- web: skip the fade on item art that's ready at once (a192560)
- web: start keys on a tab list's selected tab when nothing is focused (dc2b5f4)
- web: start the back slide only when Back leaves the page (2e25752)
- web: swap the Play icon and size restart with Resume (ea6a1bd)
- web: switch an engine's track pick that misreads the user's languages (d4ace43)
- web: take a trailer's original language from its original audio (5491ac6)
- web: take Back on the player's failure screen (7ff922f)
- web: use the wide item backdrop in landscape (0d8f535)
- web: word settings help for servers without addons (8bd83d9)
Performance Improvements
- core: remember item id hashes (a21a0e3)
- core: share config key derivation between sign-ins (c43c51f)
- ui: reuse the number formats formatBytes makes (7a93e31)
- web: ask for 20 items in a grid's first page (8db44c2)
- web: clip TV rows instead of scrolling them (2b2f2b4)
- web: hold the controls' visibility and the subtitle lift in live values (33049ac)
- web: keep Live TV key focus in the guide and the list (79f92b0)
- web: mark loading boxes with a ref instead of data-nav-wait (a661122)
- web: memoize row slides and Home's library row cards (e80c41f)
- web: order the artwork queue by distance from the screen (145fdd2)
- web: parse each artwork address once (210293f)
- web: reuse date formatters (d2e7532)
- web: stop re-rendering the player page on unchanged state reports (37ab20f)
- web: switch settings tabs as soon as one takes focus (ba0888c)
- web: take controller buttons from the app instead of polling (cb2f176)