Changes
What is New
Litefin is now on Android (TV, Firestick and mobile), Windows, Linux, macOS, and Web Plugin! All under the same codebase with all the great customizations, with 2 new player backends joining the family: ExoPlayer for Android, Movi player for the new platforms, and direct playing for almost everything along the way, along with a lot of bug fixes and performance improvements to webOS and Tizen, and some new cool features.
Notes:
-
On the web plugin, you can't use the Movi player unless your Jellyfin server is on HTTPS, or if you are using localhost, if you are using http you will be stuck with the HTML player, use desktop builds to avoid this.
-
The auto player backend option was removed, instead, it now shows what is selected and marks it as recommended. Just in case the fallback fails, double-check on your end which player is selected. The recommended player backend for each platform is as follows: Tizen: Avplay, webOS: webOS Player, Android: Exo Player, all the rest: Movi player
I am very tired at the moment, i will update the changelog tomorrow morning, do look at the mess below if you want to figure it out yourself.
New Features:
- Support Android, Windows, Linux, macOS with Tauri v2, along with a new way to access Litefin on the web via a server plugin (This has so much more potential in the future).
- update about tab to include links and QR codes to most of Litefin stuff
- support multiple intro items
- add channel and continue watching data to Android launcher
- support mobile layout on web as well, with support for scaling
- display scale setting to change the whole app's scale at one go, dynamic scaling on by default
- include new web plugin build of Litefin, to access Litefin directly from the server with auto updates
- allow user control over when an item is considered watched
- add a back button on navbar to make navigation easier
- Expand Hungarian locale
- route anime series to dedicated Sonarr profile and directory
- switch to landscape mode on player enter, and switch back on exit
- redesign settings for mobile screens
- add mobile navbars in portrait mode
- initial support for mobile UI
- scale the focused OSD button
- add web/desktop adapter and and fullscreen and debugging to windows build
- add auto server discovery and wol support for android tv and desktop builds
- add android adapter for better control support
- add seerr recommendations row to details page
- support exo player for android.
- implement MoviVideoPlayer backend powered by movi-player
- add MoviPlayer direct play profile and prewarm support
- add desktop detection and movi backend player settings
- add subtitle shifting when osd is on/off for text subtitles
- support Bazarr and SubBuzz plugins badges
- allow disabling the player seek acceleration
- add custom collection rows and fix season title resolution in trending rows
- add resume rewind feature, to rewind slightly back when resuming
- add new OSD layout, stealth / anti-spoiler mode
- scroll to item instead of re-querying after clicking a letter from alphabetic selector (only in infinite scroll mode)
- add an option to reset seek speed when going the other direction during a seek
- add the option for infinite scrolling for library pages
- add an option to switch to a right-side alphabetic selector in library
- add Manrope to the bundled font list
- add optional streaming availability via Seerr
- more persistent remember track for seasons, now remembers them for as long as possible
Bug fixes:
- focus: fix next items not loading on focus restoration to a media row
- library: fix scrolling on the side menu in the filter modal
- sidebar: fix sidebar not scrolling when overflown in tizen
- player: increase the height at which subtitles are pushed up when using subtitle dodging
- tizen: restore the lock on eac3 for now, as it has no audio when copied in a remux in tizen <6
- settings: hide languages tabs from preferred language setting when there is no favorite languages
- player: before applying zoom, restore to auto mode
- tizen: add back zoom effect to tizen avplay
- webos: fix transparent player background
- home-page: correctly display info for recently added tv shows in home page like jellyfin
- settings: improve preferred audio selection ux
- trailers: many improvements and bug fixes to remote trailer player
- details: hide tags from rich meta-data table by default, was causing massive lag spikes, also improve their performance a tiny bit
- web: fix fonts not being loaded
- home-screen: experimental fixes to scrolling lag on home screen
- home-screen: improve scrolling performance
- home-screen: fix carousel height when window height is smaller than usual
- player: fallback correctly when selected player is not included in the build
- player: remove auto option, instead show recommended players
- web: default to movi player instead of html
- webos: fix an error from an older commit for audio track transcoding support badge
- webos: fix zoom and stretch aspect ratio by using geometry calculation instead of css object-fit
- user-switcher: rename logout button to forget server to avoid user confusion
- tizen: add "PLAYER_DISPLAY_MODE_AUTO_ASPECT_RATIO" as a selectable aspect ratio in player
- player: add unsupported badge to playback speed depending on player backend, but still allow users to pick them just in case
- movi: disable click interception to fix android mobile not having an osd
- mobile - desktop: fix back behavior inside the player
- desktop: show scrolling arrows for desktop
- adapt language menu text in settings/details page to focused/filled button states
- seerr: keep user-picker rows and request-as button legible on focus
- seerr: adapt request modal text to focused/filled button states
- mobile: final touches to UI fixes on android mobile
- mobile: improve details page on mobile
- mobile: improve homepage user experience
- subtitles: fix libass-wasm subtitle position on some aspect ratios
- subtitles: fix libass-wasm subtitles flickering on webos
- android: always full screen mode to avoid colliding ui
- osd: use document.contains for the overlay click guards
- player: improve dialogs and fix subtitle size
- osd: let a highlighted skip prompt handle the OK press
- player: auto transcode on playback failure, can be disabled from settings
- login: add server information on auto discovery, show if saved servers are actually currently on
- exo-player: fix libass-wasm not working
- osd: resolve the focused overlay button reliably on OK
- osd: keep play/pause as the focus target while the OSD is hidden
- player: fix resume flashing in exo-player showing older frames and hiding loading too early
- exo-player: fix audio track switching
- tizen: fix player restarting mid play, force remux option and remove eac3 restrictions
- app: improve device information in about tab, fix a focus bug in homepage
- exo-player: fix aspect ratio, av1 transcoding
- android: exo player now works ! picture is showing
- player: override audio codec support list for the new player backends
- html-player: apply the same remux - transcoding fallbacks for resume failure as webos player
- player: improve the audio codec transcoding detection logic
- skip-intro: fix skip intro getting stuck in a loop on the same intro
- library: fix view mode not changing for certain libraries
- home-screen: fix initial focus not sticking the home screen carousel
- movi: fix movi video rendering with WebGL1, not good performance tho
- android: fix app scale on android tv
- library: keep loading screen active until focus restoration completes
- movi: fix flac and trueHD audio codecs failing to start playback
- player: remove the chapter fallback images if there is no chapter thumbnails
- app: remove movi player from tv builds to save on size, actually check if browser supports webcodecs, fallback to html if it doesn't
- osd: recognize Movi Player in PlaybackInfo and safeguard resume progress
- player: fix remuxing failing to resume in correct position and seek bar getting locked at old value
- home-screen: respect max days in next up setting when merge continue watching and next up is enabled
- trailers: update trailer playback method for web/desktop to fix trailers not working
- app: allow disabling refresh on app restoration, this is now disabled by default for web/desktop
- player: fix audio track changing doesn't restore direct playing after remuxing
- player: fix subtitle track selection being forgotten after a playback mode switch
- player: improve hls stability and audio de-sync issues
- music: fix some music files failing to start
- home-screen: fix home screen carousel on emby
- home-screen: improvements to home screen carousel performance
- player: don't ignore audio track preference when selecting the best audio to direct play
- homepage: restore the defensive filtering on next up and continue to watch
- library: fix genres filter on jellyfin 12
- tizen: hide zoom aspect ratio on tizen, doesn't work
- sidebar: fix more issues with the sidebar
- webos: fix issues with resume showing frames too early
- sidebar: more fixes to sidebar coloring
- player: fix seeking player behavior with stealth mode osd
- queue: smarter queue window method instead of the static 500 items
- tizen: fix some hevc content transcoding
- player: fix multiple issues with live tv
- osd: improve new osd layout
- sidebar: fix always hidden sidebar mode on legacy devices
- osd: fix subtitle offset not working with d-pad
- library: test fix for infinity loading lazy loader
- tizen: fix player being stuck after some seeks
- library: improve infinite scrolling
- live-tv: fix osd being stuck on some live tv items
- sidebar: fix sidebar libraries menu opening in the wrong place
- library: fix focus restoration failing sometimes
- player: fix player resuming playback before seeking
- player: size the webOS video box to the stream's aspect ratio
- sidebar: fix floating island taking more space than it should
- sidebar: fix sidebar background in settings with ambient glow theme
- ui: fix multiple visual issues in legacy and ultra-legacy
- player: confirm seek with ok in default seek behavior to avoid resume bug
- tizen: fix transcoding aac5 audio failing to seek
- player: fix transcode audio codec preference not being respected
- sidebar: add support to old classic sidebar settings to the modern layouts
- login: fix adding 2 users with passwords removes other users
- tizen: fix aac 5.1 audio always transcoding
- wol: fix hex is not a function on older devices
- tizen: semi fix to player always falling back to remux
- seerr: improve request dialog error message
- home: fix merged up next and continue to watch rows having seasons
- mdb-list: fix user choices not being respected
🌐 Web & Server Plugins
Extend Litefin with enhanced features (Seerr discovery, Where to Watch streaming availability, MDBList ratings) and access Litefin directly inside your web browser:
🔌 Server Plugins (Features & Integrations)
- Litefin Plugin for Jellyfin: Required on Jellyfin server for Seerr integration, per-season requests, and TMDB streaming availability.
- Litefin Plugin for Emby: Companion plugin for Emby server setups.
📦 Which Version Should I Choose?
Litefin is available across Smart TVs, Android devices, Desktop environments, and as a Jellyfin Web plugin. Pick the build matching your hardware below:
📺 Smart TVs (Samsung Tizen & LG webOS)
Smart TV packages come in 4 performance tiers to squeeze maximum performance out of both modern and vintage hardware:
| Build Variant | Recommended Hardware | OS / Platform Target | Package Format |
|---|---|---|---|
| Modern | High-end / Recent TVs (2021+) | Tizen 6.5+ / webOS 22+ (6.0+) | .wgt / .ipk
|
| Normal | Most Smart TVs (2019–2021) | Tizen 5.0+ / webOS 5.0+ | .wgt / .ipk
|
| Legacy | Mid-lifecycle TVs (2017–2018) | Tizen 4.0+ / webOS 4.0+ | .wgt / .ipk
|
| Ultra-Legacy | Older & vintage TVs (Pre-2017) | Tizen 3.0 & below / webOS < 4.0 | .wgt / .ipk
|
Tip: If you're unsure which tier your TV needs, start with Normal. If it fails to launch, switch to Legacy.
For vintage Tizen 2.4 TVs, use the dedicatedUltra-Legacy (No-Service)build.
- Samsung Tizen: Sideload
.wgtusing Apps2Samsung or Tizen CLI. - LG webOS: Install
.ipkvia webOS Homebrew Channel or Try Scoty's lg-dev-manager.
📱 Android (Android TV, Google TV, Fire TV & Mobile)
Android builds are native packages powered by Media3 ExoPlayer with hardware decoding and audio passthrough:
| Package | Target Hardware & Devices |
|---|---|
*-Android-arm64.apk
| Most Modern Devices (Recommended): Android TV / Google TV boxes, Nvidia Shield, Fire TV Cube (3rd gen), and modern Android phones / tablets (64-bit ARM). |
*-Android-arm.apk
| 32-bit Devices: Fire TV Stick (Basic, 4K, 4K Max 1st gen), budget Android TV sticks, older Android mobile devices (32-bit ARM). |
*-Android-x86_64.apk / x86.apk
| Android emulators, Intel-based Android hardware, and Chromebooks running Android runtime. |
- Sideload via ADB (
adb install <file>.apk), Downloader app, or Send Files to TV (SFTV).
🖥️ Desktop (Windows, Linux, macOS)
Native desktop builds powered by Tauri v2 with low resource usage and hardware-accelerated playback:
| OS | Available Formats | Notes |
|---|---|---|
| Windows | *.exe, *_x64-setup.exe, *.msi
| Standalone executable, setup wizard, or MSI enterprise installer (Windows 10/11 64-bit). |
| Linux | *.AppImage, *.deb, *.rpm
| Universal standalone (AppImage), Debian/Ubuntu (.deb), or Fedora/RHEL/openSUSE (.rpm). |
| macOS | *.dmg
| Drag-and-drop disk image installer. |
⌨️ Keyboard Controls (Desktop & Web)
| Key / Shortcut | Action |
|---|---|
Space / K
| Play / Pause toggle |
J / L
| Seek backward / forward 10 seconds |
← / →
| Navigate UI items or seek timeline during playback |
↑ / ↓
| Navigate UI items, menus, and OSD controls |
Enter
| Select / Activate focused item or reveal OSD |
Esc / Backspace
| Go back / Close modal / Exit player |
F / F11
| Toggle Fullscreen |
M
| Mute / Unmute audio |
| Media Keys | Hardware Play, Pause, Next, Previous, Stop |
🌐 Litefin Client Plugin (Web Client in Browser)
Integrates Litefin Client directly into the official Jellyfin web client, giving you the Litefin experience in any browser.
Option 1: Via Repository Manifest (Recommended)
- Copy this manifest repository URL:
https://github.com/MoazSalem/litefin/releases/latest/download/litefin-plugin-manifest.json - In your Jellyfin Server, navigate to Dashboard > Plugins > Repositories.
- Click Add (+), enter a name (e.g.
Litefin Plugins), and paste the URL. - Switch to the Catalog tab, locate Litefin Client Plugin under General, and click Install.
- Restart your Jellyfin Server.
- After restart, Litefin Client is available in your browser at
http://<Jellyfin-IP>:<Jellyfin-Port>/litefin.
Option 2: Manual Installation
- Download the
Litefin.Client.Plugin_*.ziparchive from the Releases page (or compile from source). - Extract the archive (specifically
Litefin.Client.Plugin.dllandmanifest.json) into your server's plugin folder:- Windows (Service):
C:\ProgramData\Jellyfin\Server\plugins\Litefin_Client\ - Windows (Portable):
<Jellyfin-Directory>\data\plugins\Litefin_Client\ - Linux / Docker:
/config/plugins/Litefin_Client/
- Windows (Service):
- Restart your Jellyfin Server.
New Contributors
- @nick322 made their first contribution in #455
- @kaiffeetasse made their first contribution in #470
- @silentpager-rocks made their first contribution in #475
- @Gabor2180 made their first contribution in #481
- @chwps made their first contribution in #482
Full Changelog: v1.9.0...v2.0.0