Skip to content

Releases: Moonfin-Client/Smart-TV

v2.6.0

19 Jun 18:13

Choose a tag to compare

Moonfin v2.6.0 Release Notes github

This is a big release. Moonfin now works with Emby servers as well as Jellyfin, adds a Theme Store, three new media bars, language selection, Seerr rows for your home screen, and a top to bottom performance pass. There is also a long list of playback and compatibility fixes for Tizen and webOS.

Important

The app has been submitted to LG and Samsung (for real this time) and is pending review, hopefully over the weekend it will come to the app stores. Stay up to date on Discord https://discord.gg/moonfin

Features

Emby server support. Moonfin is no longer Jellyfin only. You can now sign in to an Emby server through Emby Connect and browse, search, and play your library the same way you would on Jellyfin.

Theme Store. A new Theme Store lets you browse and install community themes right from Settings, each with its own description, on top of the existing built in and custom themes.

Note

To submit themes for the Moonfin community store, visit https://github.com/Moonfin-Client/Themes

Three new media bar styles. Alongside the existing Moonfin and MakD media bars, you can now choose from three more options under Settings > Dynamic Content > Media Bar & Local Previews > Bar Style:

  • Gallery: An expanding panel showcase where the focused title opens up to show its art and details, while the others stay tucked away as slim spines.
  • Banner: A clean, compact framed banner that sits above your rows instead of taking over the whole screen.
  • Bookshelf: Featured titles shown as books on a wooden shelf, with the focused one pulled out as a poster.

Pick your language. You can now choose the app language directly in Moonfin under Settings > Personalization > General Style > App Language, with English, German, Spanish, French, Hungarian, Polish, Portuguese (Brazil), and Russian to choose from. There is also a brand new Hungarian translation.

Seerr rows on your home screen. You can now add any of the Seerr discover rows to your home screen, including Trending, Popular, Upcoming, My Requests, and Browse by Genre, Studio, or Network. These rows include request status badges and can be toggled individually under Settings > Personalization > Home Page. Since these rows can replace the need for the sidebar icon, there is also a new option under Settings > Personalization > Navigation to hide the Seerr button from the navbar.

A lot more rating sources. The additional ratings list under Settings > Integrations > Metadata & Ratings now covers every supported source instead of just four. You can mix and match IMDb, TMDB, Rotten Tomatoes Critics and Audience, Metacritic and Metacritic User, Trakt, Letterboxd, Roger Ebert, MyAnimeList, and AniList. Community rating can now be toggled on or off just like any other source.

Expanded home rows. A new toggle under Settings > Personalization > Home Page lets you show your home screen rows in a larger, more spread out layout when you want your library to feel less compact.

Moonfin now remembers your sort order. When you change how a library is sorted, that choice now sticks per library and carries over to the Genres view, so you do not have to set it again every time you come back.

A saved account picker at login. If you have autologin turned off, signing in now shows your saved accounts to pick from instead of making you type everything in again.

Redesigned Next Up card. The Next Up card has been reworked to match the other Jellyfin clients, with a cleaner look and a countdown-style toggle.

Restored the UI Scale setting. The UI Scale option that went missing in the settings rework is back under Settings > Personalization > General Style, so you can size the interface to your liking again.

Cleaner player controls. Player buttons that do not apply are now hidden, and there is a clear indicator when no subtitle is selected.

A top to bottom performance pass to make the app feel snappier, especially on older Tizen and webOS TVs:

  • Automatic performance tuning. The app now detects how powerful your TV is and reduces the most expensive visual effects on weaker hardware, while keeping things looking their best on newer sets. There is also a new Performance Mode setting under Settings > Personalization > General Style, with Auto, High Quality, Balanced, and Performance options.
  • Lighter visuals. Heavy background blur on dialogs and behind cards was the biggest slowdown on older TVs. It has now been reduced or disabled depending on your device, so menus and the home screen should feel much more responsive.
  • A smoother home screen. Returning to the home screen and updating watch progress no longer rebuild the entire row of cards, so browsing stays fluid even with lots of rows.
  • Faster, smoother scrolling. Rows and the Live TV guide should scroll with less jank, and the guide now only draws the channels you can actually see.
  • Better behavior on flaky networks. Requests now give up after 15 seconds instead of hanging for 30, and they cancel properly instead of lingering in the background.

Bug Fixes

  • Correct next episode order. Picking the next episode no longer relies on the Next Up API, so episodes always play in the right order.
  • Navbar and sidebar theming. Topbar and sidebar color and opacity now apply correctly and match the other Moonfin apps.
  • Themes with bad colors no longer break the UI. Invalid theme color overrides are now handled gracefully instead of leaving the interface in a broken state.
  • More of your settings sync across devices. Media bar options, detailed sub-headings, and other preferences now sync through the Moonfin server.
  • HEVC playback on 2018 and 2019 Samsung TVs. Tizen HEVC transcodes are now routed through MPEG-TS so those older sets can actually play them.
  • Fixed Live TV on 2020 Tizen and a black screen on webOS. A regression that broke Live TV on 2020 Samsung TVs and caused a black screen on webOS has been sorted out.
  • Better Tizen device detection and no more ghost sessions. Tizen device capabilities are reported more accurately, and powering off the TV no longer leaves a phantom playback session running on the server.
  • Smarter audio and subtitle track selection. Track selection now follows your own preferences and the server defaults instead of guessing, and when transcoding is needed the app will pick a playable alternate audio track first before falling back.
  • Albums play all the way through. Music playback no longer stops after the first track.
  • Cleaner PGS subtitles. PGS image subtitles are now rendered on the client so they no longer get burned into a transcode.
  • Better ASS subtitles. On webOS, ASS subtitles now render on their own canvas so they stay aligned when the picture is zoomed, and embedded fonts are pulled in so styled subtitles use the correct typeface.
  • Quieter Tizen Direct Play. AVPlay subtitles are now off by default during Tizen Direct Play so they do not double up with the client rendered ones.
  • Tidier player overlay on old firmware. The player OSD now uses margins instead of flexbox gap so it lays out correctly on Tizen 2.4 and webOS 3.
  • Audio passthrough now keeps up when you switch outputs. TrueHD and DTS-HD passthrough used to be locked in at launch. The audio path is now rechecked whenever it changes, so plugging into an eARC receiver mid-session works as expected. TrueHD passthrough is also now clearly labeled as experimental.
  • Fixed occasional silent playback caused by a reused video element staying muted.
  • Fixed featured bars loading their backdrop twice. Background art was being fetched a second time behind the bar, where it could not even be seen.
  • French now actually shows up. French was bundled but never registered as a build locale, so it quietly fell back to English. It is now wired up properly.
  • A more resilient Details screen. Loading a movie or show now handles partial data failures gracefully, so one slow or failed request no longer breaks the whole page.
  • Seerr sign-in no longer requires a password when your setup does not need one.
  • Watch progress is no longer lost on power-off. When you turn the TV off mid-show, the app now flushes your current position properly instead of recording a stop at the very beginning.
  • The screensaver stays out of the way. It no longer kicks in during active webOS playback, and home screen media bar trailers now stop when the screensaver appears.
  • Continue Watching keeps its details. Next Up items no longer lose their last played info when they get merged into Continue Watching.
  • Correct spacing with the topbar. The home screen now adds the right offset at the top when you are using the topbar layout, so nothing gets cut off.
  • Better sorting for non-Latin titles. Alphabetical filtering now uses the proper sort name, so titles in non-Latin scripts land in the right place.
  • Logos stay visible on dark backgrounds. Title logos that are almost entirely black now get inverted so you can actually see them.
  • Updated the Tizen "oblong" banner icon.

The KefinTweaks integration has also been removed since most rows are now native to Moonfin.

Contributors

Big thanks to everyone who contributed to this release:

What's Changed

  • Fix typo in README.md for plugin settings by @SamJongenelen in #236
  • feat: Request SortName for non-ascii alphabetic filtering by @zhen-zen in #244
  • added seerr home row toggl...
Read more

v2.5.1

03 Jun 14:29

Choose a tag to compare

Moonfin v2.5.1 Release Notes github

Bug Fixes

  • Restored missing icons that were not showing up across the player and settings screens (fixes #226).

  • Simplified the Tizen display window logic for letterboxed media and cleaned up how the display modes are applied, so video sizing behaves correctly on Samsung TVs.

Full Changelog: 2.5.0...2.5.1

v2.5.0

01 Jun 03:21

Choose a tag to compare

Moonfin v2.5.0 Release Notes github

Note

Join the Moonfin Discord here to interact with the community and for updates and previews on upcoming features.
The Server Plugin has also received a HUGE facelift and upgrade as well as all of our mobile, desktop, and other TV apps at the renamed Moonfin-Core repo
Starting next update, Tizen 8+ users will have the option to keep using this repo or instead use the new Native Samsung app (improved speed and performance) that is in the Moonfin-Core repo. I've attached an experimental TPK file for you ro re-sign and install using the Jellyfin2Samsung tool.


Features

Theme Management

  • Complete theme system overhaul with persistent storage, color tokenization across all screens, built in and custom theme selection menus, and settings consolidation.

(You can now create custom themes for your client using the web plugin. You can read more on that here

Playback

  • DTS and TrueHD playback is now implemented for Tizen and in experimental phase for webOS

Details Screen

  • Added in-app trailer playback

Seerr Integration

  • Added in-app Seerr authentication and improved advanced request popup layouts.

Media Bar & Navigation

  • Added MakD media bar with wrap-around navigation for media rows and spotlight navigation support.

  • Added new shuffle overlay from the navbar/sidebar with 5 options and the chance to "re-roll" your choices from a random shuffle, library, or genre

  • Added new home rows options, now you can choose from the new Modern version with item expansion or the classic posters

Live TV

  • Added closeLiveStream API method and handle live stream closure on stop

Browse & Library

  • Added HSS, KefinTweaks, favorites, collections, and genres rows to home sections. Removed 'livetv' from excluded collection types.

Server Plugin Integration

  • Added admin message dialog component for server-to-client notifications and settings stream subscription for real-time plugin updates.

Other Improvements

  • screensaver during paused state works again! (#208) — Issue #208

Bug Fixes

Audio Format Support

  • Improved TrueHD and DTS handling with remux to E-AC3, bitrate optimization, and Transcode Killer fixes.

Subtitle Rendering

  • Fixed PGS and ASS subtitle rendering issues.

Player Improvements

  • Fixed focus and controls timeout (#215) — Issue #215 Tizen

Playback & Video Format Support

  • Improved bitrate handling for webOS 3 compatibility, fixed Dolby Vision on webOS < 25 MKV containers, enabled Opus audio support for webOS >= 6, and fixed seeking during transcoding.

Navigation & Focus

  • Fixed focus management and control timeout issues, improved animation performance by scoping focus scale to inner wrapper.

Contributions

v2.4.0

11 Apr 08:29

Choose a tag to compare

Moonfin v2.4.0 Release Notes github

Hey guys, It's 4:30 AM for me and I am kinda tired so gonna keep this short and sweet, but first things first:

Note

If you didn't know, Moonfin for iOS is now available directly via the Apple App Store! Of course Android is available via the Google Play Store and Desktop apps for MacOS, Windows, and Linux

Features

Playback

  • PGS subtitle rendering for Tizen 4–9 and webOS 3–25; legacy devices fall back to burn-in (#100)
  • ASS/SSA styled subtitle rendering via libass-wasm integration, same as above (#151)
  • Subtitle downloads — search and download subtitles from within the app (#109)
  • SyncPlay support — if you never heard of Syncplay then it's synchronized "watch together" playback using Jellyfin's SyncPlay protocol (#89)
  • Screensaver during paused playback to prevent OLED burn-in (#127)
  • Stereo upmix to surround — stereo-to-surround upmixing for music playback via ffmpeg surround filter (#96)
  • Track selection for Play Next — audio and subtitle preferences now carry over when the next episode starts (#128)

Music

  • Complete rework of Music libraries with lyrics support (#97)

Details Screen

  • Extras and special features section
  • Chapter selection from the details screen
  • Collections section
  • Media versions — choose between different versions of the same media
  • Next Up and Next Episode cards on episode and series details
  • Delete button for users with delete permissions
  • Ended/Continuing badges for series
  • TMDB season ratings via updated Moonfin plugin endpoints
  • Updated styling for age rating and codec badges

UI & Navigation

  • UI language switching with support for English, Polish, Russian, German, Spanish, French, and Brazilian Portuguese (#139, #152, #163)
  • SpottableInput component for text inputs — fixes Magic Remote flapping on webOS (#142)
  • Oblong icon variant for Tizen home screen (#121)
  • Updated account switching dialog with circular avatar cards
  • Clear all data function in Settings > About > Data
  • Server connection retry logic with improved error messaging (#143, #153)
  • Updated person details screen
  • Updated Tizen compatibility and UI scaling

Bug Fixes

  • forceDirectPlay not working on TizenforceDirectPlay setting now correctly passed to getPlaybackInfo (#132)
  • Gzip-compressed API responses causing SyntaxError: Unexpected end of input (#145)
  • Jellyseerr search results bluescreen on Tizen — navigation data now normalized before opening details (#146)
  • Jellyseerr money formatting crash on Tizen 5.5 — RangeError from incompatible Intl usage (#122)
  • Jellyseerr advanced request profile selection not working — user permissions handling normalized (#150)
  • Jellyseerr season request dialog — cursor unable to reach Request/Cancel buttons (#124)
  • Jellyseerr "My Requests" showing UNKNOWN with missing poster art (#137)
  • Jellyseerr on legacy Tizen — image URL normalization, HTTP protocol fallback, hidden external trailer action (#159)
  • Skip Intro causing infinite freeze on Tizen 6.5 — prevented multiple skip triggers via dismissal ref (#134)
  • Play Next loading wrong subtitles — subtitle state now resets on new media load (#138)
  • Audio/subtitle track selection ignored from the details page (#131)
  • HDR10+ incorrectly reported on LG C4 (webOS 24) causing DV playback failures — removed unsupported HDR10+ capabilities (#140)
  • DV HDR broken on LG C3 after HDR10+ fix — restored HDR and Dolby Vision capabilities for webOS (#157)
  • Unsupported containers for webOS video playback now handled properly (#102)
  • Live TV not working after regular media playback — stale playback options and resume state now cleared on player end (#165)
  • Live TV support and playback — general fixes for Live TV functionality
  • Folder library not recursively showing files (#160)
  • Logo error handling — details page no longer shows blank space when title image is missing (#161)
  • Browse screen not refreshing after changes — added background refresh for Browse and refresh event from Details (#162)
  • Empty home rows from server blocking default rows from displaying
  • More Like This row focus trap fixed
  • Library card animation — smoother transitions (#111 but not really since it works for me but I'm stumped why it doesn't for them)
  • OSK close blocking navigation — fixed bug preventing navigation after on-screen keyboard was closed
  • Spotlight navigation on text input — fixed focus behavior
  • Person details focus traps resolved
  • Details screen overflow with cells under the button row
  • Removed stale Seerr login functionality
  • Language files — ensured all translations have complete 706-key coverage (#156)

Contributors

Full Changelog: 2.3.0...2.4.0

v2.3.0

18 Mar 02:51

Choose a tag to compare

Moonfin v2.3.0 Release Notes github

What's New in v2.3.0

New Features

  • Add to Playlist - Browse and add any item to an existing playlist, or create a new one on the spot, all without leaving the details screen. Playlist items can also be removed using the Delete key. (#126)
  • UI Scale Setting - A new accessibility option lets you adjust the interface font size dynamically to match your viewing distance and TV setup.
  • Theme Music - The app now plays theme music for series.
  • Library Sidebar Toggle - The sidebar no longer auto-expands libraries on focus. Libraries are now expanded explicitly, making navigation cleaner on large library setups.

Improvements

  • Settings Overhaul - The settings panel has been fully redesigned with a cleaner layout.
  • Ratings Refresh - Rotten Tomatoes and community ratings are now displayed across Browse, Details, the Media Banner, and Libraries. If you would like access to many more ratings, connect to the Moonfin server plugin.
  • Browse Performance - The Browse component was significantly optimized: better state management, dynamic imports for the FeaturedBanner, smarter caching, improved backdrop transitions, and row scroll position memory across navigation.
  • MediaCard Progress Bar - Watch progress indicator has been visually improved for better readability at TV viewing distances. (#110)
  • Jellyseerr Dialog - The Jellyseerr request details dialog was refactored for reliability and correct focus handling. (#106)
  • New App Icon & Splash - Updated app icon and splash screen assets across both Tizen and webOS builds.

Bug Fixes

  • Login Failures on Legacy webOS - Fixed a critical issue where DB8 storage timeouts caused users to be unable to log in. The app now falls back to localStorage automatically on timeout. (#101)
  • Auto-Skip Intro / Next Episode Card - Restored broken auto-skip functionality for intros and the next-episode prompt. (#104)
  • Audio Stream Handling - Fixed incorrect audio stream selection and session reporting during playback. (#103)
  • Subtitle Matching - Fixed subtitle track selection to correctly handle multiple matching text entries on both Tizen and webOS players. (#115)
  • DirectPlay Override - Removed the legacy SupportsDirectPlay flag that was incorrectly suppressing direct play for compatible streams. (#88)
  • Dolby Vision Playback - Added proper DV codec handling and transcode URL rewriting to fix playback on content with Dolby Vision signaling. (#107)
  • Playback Options Reset - Playback audio/subtitle options are now correctly reset when moving to the next item in a queue. (#105)
  • Row Scrolling & Truncated Titles - Fixed home-screen row scrolling to always reveal the row label, and fixed media titles being cut off in the banner. (#117)
  • API Response Decoding - Resolved a regression where API responses were not being correctly decoded from ArrayBuffer, causing silent data failures. (#125)
  • URI-Encoded FileContents - Fixed a crash in error handling when FileContents values were URI-encoded. (#116)
  • Plugin Settings Sync - Settings are now correctly synchronized with the updated Moonfin Plugin endpoints. (#118)
  • Focus Stability - Fixed duplicate focus calls on initial load that could cause erratic remote navigation behavior.

Contributors

A huge thank you to everyone who contributed to this release!

v2.2.0

05 Mar 23:57

Choose a tag to compare

Moonfin v2.2.0 Release Notes github

Important

Tizen "SmartHub" releases are just gonna be Tizen and the legacy Tizen versions that don't support it are marked as legacy. Shocking right?

Shared / UI

  • Fixed API authentication header — Replaced X-Emby-Authorization with standard Authorization header to prevent 400 errors on newer Jellyfin servers
  • Per-user cache isolation — Cache now includes the user ID, ensuring per-user data integrity. Switching users redirects back to Browse instead of showing stale data
  • AccountModal crash fix — Added early return to prevent rendering when the modal is closed, fixing a potential crash
  • Improved image handling and ratings performance — Optimized MediaCard image loading and ratings fetching in the API services for smoother browsing
  • Platform detection improvements — Added cross-env dependency and updated platform detection logic for more reliable webOS and Tizen identification
  • Fixed device identification — Client now correctly identifies as Samsung Smart TV on Tizen and LG Smart TV on webOS to the Jellyfin server
  • Lint cleanup — Fixed lint errors across multiple components
  • User avatar opacity — Added setting to adjust the opacity of the user avatar in the navbar
  • Home row backdrop toggle — Added setting to disable background art transitions when browsing rows, freeing GPU/memory resources on lower-end devices

webOS

  • Full webOS 3 support — Added core-js polyfills and localStorage fallback for storage, bringing full compatibility to webOS 3 devices
  • Playback health monitoring fixes — Fixed video unpausing/playing by properly considering paused state in health monitoring; added lastSeekTime tracking to prevent false stall detection
  • Simplified codec hinting for Starfish — Refactored video source handling to fix playback issues with certain media formats
  • Improved backdrop handling — Reduced resource usage and improved GPU layer promotion for backdrop blur on Browse and other views

Tizen

  • Backdrop blur compatibility — Added backdrop blur effect with simplified CSS transformations for Tizen global backdrop support
  • XHR mock for file:// protocol — Updated XMLHttpRequest mock to properly intercept non-http(s) requests, improving Tizen 2.4 compatibility for locale/resource loading

Legacy Platform Support (Tizen 2.4 / webOS 2)

  • Legacy WebKit CSS and JS gating — Added gated CSS fallbacks and JavaScript compatibility shims across multiple views and components for old WebKit engines
  • Updated browserslist targets — Extended browser compatibility targets to cover Tizen 2.4 and webOS 2 legacy browsers
  • Enact legacy patching — Improved the patch-enact-legacy script for better build compatibility with legacy platforms
  • Polyfill updates — Enhanced polyfill coverage for legacy browsers missing modern DOM and JS APIs

Contributors

  • @Lejeune Romain — Per-user cache isolation and user-switch redirect
  • @nullbyze — User avatar opacity setting

v2.1.0

02 Mar 05:36

Choose a tag to compare

Moonfin v2.1.0 Release Notes github

Important

With this release in order to connect to Seerr/Jellyseerr you will need to use the new Moonfin server plugin

Highlights

  • Unified mono-repo — Tizen and webOS now share a single codebase with shared UI components, services, and views. Platform-specific code lives in dedicated packages. (Maintaining two codebases with 95% of the same code was annoying)
  • Tizen 2.4 support — Full compatibility with Samsung TVs running Tizen 2.4 (WebKit r152340), including AVPlay native player integration and legacy browser polyfills.
  • Overhauled video playback — Three-tier playback fallback chain, corrected DirectPlay profiles from LG's AV format docs, native HLS, and Dolby Vision detection.
  • Redesigned UI — New Details page, Library views, Login screen, Browse featured bar, and Account modal across both platforms.
  • Music support — Full music library with album art, track lists, audio playlist navigation, and artist/album/song search.

Tizen

New Features

  • AVPlay native player — Refactored the Player to use Samsung's AVPlay API instead of the HTML5 video element. The Player container background is transparent to allow the AVPlay platform video layer to show through.
  • Tizen 2.4 / legacy TV support — Added --legacy build flag, polyfills (globalThis, NodeList.forEach, whatwg-fetch), URL parsing utility for browsers without the URL constructor, Enact compatibility patches (CSS custom-properties, Button border-radius, ProgressBar inline styles, Slider knob, Scrollbar DOM fallback), and XHR mocking for ilib locale loading on file:// protocol.
  • Smart Hub Preview — Wired up the background service for Smart Hub Preview on Tizen 4+; automatically skipped on legacy targets. NOT available on Tizen 2.4 and 3
  • Music library — Album art, track lists, audio playback with dedicated controls, playlist navigation (next/previous track), artist/album/song search results.
  • Details page redesign — Complete overhaul of the Details page with the new Moonfin UI, updated back button management.
  • Account modal — Moved Account out of Settings into a new modal accessible from the user's avatar.
  • Chapter extraction — Added chapter data retrieval and display, fixed audio/subtitle track selection from the Details screen.
  • Exit dialog — Application exit confirmation dialog.
  • Playlist management — Item selection, reordering, and playback from playlists in the Details view.
  • Folder view — Breadcrumb navigation in Libraries.
  • Auto-login — Automatic login with last server tracking.

Bug Fixes

  • Fixed subtitle fallback to extracted subtitles when native embedded subtitle detection found none.
  • Fixed next episode trigger logic and updated button labels.
  • Fixed back key handling to exit app from home screen.
  • Fixed enact page styles to use fixed positioning and full viewport coverage.
  • Added seekStep setting to default settings.
  • Fixed Media Segments API integration.
  • Fixed globalThis polyfill — Tizen 2.4 black screen on boot caused by @enact/core/platform referencing globalThis without a typeof guard. Three-layer fix: polyfills.js, HTML <script> injection, and node_modules patch.
  • Samsung certificate and profile verification added to the build script before packaging .wgt.

Build & Tooling

  • Tizen build pipeline adapted for mono-repo: enact pack runs from packages/app/ with BROWSERSLIST_CONFIG targeting chrome >= 38, safari >= 9.
  • patch-enact-legacy.js post-install script patches @enact/core and related modules for legacy compatibility.
  • .browserslistrc for Tizen targets Chromium 38 (Tizen 2.4) and Safari 9.
  • Build scripts output to repository root.
  • GitHub Actions workflow for lint.

webOS

New Features

  • Dolby Vision detection and native HLS playback — Runtime Dolby Vision detection with native HLS via Starfish. HLS transcoding for webOS 5+ uses fMP4 segments to preserve DV metadata. DV codec hints added to <source type="..."> to activate the Starfish DV decoder for direct play.
  • Overhauled video playback pipeline — Replaced per-mount video elements with a single shared instance (prevents webOS 4 from exhausting hardware decoders). Three-tier fallback: DirectPlay → native HEVC via Starfish → hls.js with H.264+AAC via MSE.
  • Corrected DirectPlay profiles from LG docs — Fixed 7 profiles: VC-1 removed from TS, MP2 audio added to MKV/TS/AVI, VOB profile created, MPG/MPEG profile filled, AV1 level made resolution-responsive, HEVC added to M2TS, ASF/WMV codecs filled.
  • Music library — Album art, track lists, audio playback with dedicated controls, playlist navigation (next/previous track), artist/album/song search results.
  • Details page redesign — Complete overhaul with new Moonfin layout.
  • Account modal — Moved Account to a new modal from the user's avatar.
  • Subtitle customization — Size, position, and offset settings with a live subtitle settings overlay.
  • Screensaver — Inactivity-based screensaver with configurable settings.
  • Photo and comic viewer — Dedicated viewer components integrated with the Library.
  • Moonfin plugin integration — Moonfin plugin support in Jellyseerr with updated Seerr auth flow and v2 envelope with v1 fallback.
  • MDBList ratings — Ratings display using the Moonfin server plugin, updated icons.
  • Sidebar — New navigation sidebar.
  • Playlists library — Dedicated playlist library view.
  • Auto-login — Automatic login with last server tracking.
  • Playlist management — Item selection, reordering, and playback from playlists.
  • Folder view — Breadcrumb navigation in Libraries.
  • Exit dialog — Application exit confirmation dialog.
  • Force Direct Play setting — Bypass transcoding decision logic.
  • Hide libraries setting — Hide specific libraries from the home screen.

Bug Fixes

  • Fixed audio stream switching by preserving playback position and adding native audio track support.
  • Fixed playback with resume support, next episode auto-play, and improved seeking.
  • Fixed DirectStream handling to ensure both audio and video are natively supported, preserving HDR during audio transcoding.
  • Fixed resolution detection logic in getResolutionName.
  • Fixed max bitrate handling — derived from device capabilities instead of hardcoded.
  • Fixed platform back navigation at root level so the app closes and reopens correctly.
  • Fixed audio stream switching to maintain transcoding state and reset fallback flag.
  • Refined DTS support checks and audio stream handling.
  • Fixed playback progress reporting with event tracking and state management.
  • Fixed video element loading issues with proper cleanup and source reloading.
  • Increased decoder release time from 2000ms to 3000ms for better resource management.
  • HDR10+ detection aligned with HDR10 capabilities (webOS does not support HDR10+).
  • E-AC3 support enabled for all webOS versions (DD+ compatibility on webOS 4+).
  • HDR handling updated with Dolby Vision fallbacks.
  • HLS transcoding profiles prioritize HEVC for HDR content with H.264 fallback.
  • Video element cleanup resets HDR display mode by loading a minimal SDR video.
  • webOS version detection converts internal versions to marketing names.
  • DTS support detection uses correct device config to derive edidType for model-specific capabilities.
  • Added timeout for non-HLS streams with fallback to transcoding.
  • Play/pause button click fixed in webOS Player (the if block was never reached).
  • Correct app reopen handling.
  • Player navigation buttons now reset the 5-second auto-hide timer.
  • Audio playback key handling for webOS remote.

Build & Tooling

  • Build script optimized — removed unused locales and font weights, reducing file size from 9.3 MB to 6 MB uncompressed.
  • Build script adapted for mono-repo: enact pack from packages/app/, copies dist locally before platform-specific post-processing.
  • GitHub Actions workflow for build and lint.
  • @enact/cli and @webosose/ares-cli added as devDependencies.
  • build.js script created to replace shell-based build.
  • webOS manifest auto-update on build.

Shared (Both Platforms)

New Features

  • Genres and Library UI overhaul — Refactored Genres, Favorites, and Library views with new layouts and styling.
  • Login UI redesign — Updated to match other Moonfin clients.
  • Featured media bar — Updated layout for the overview box and logo.
  • Jellyseerr transport unification — Rewrote Jellyseerr context and API service for shared use.
  • Seerr integration normalization — Normalized media item handling and updated image URLs.
  • Version checker — Fetches platform-specific releases.
  • Dynamic version display — Settings shows app version and platform info.
  • Spotlight navigation — Refactored focus handling in NavBar, Sidebar, and ExitDialog.
  • Consistent 24/12-hour format — Player and Details page respect the setting; optional clock in navbar.
  • Chapter APIfetchItemChapters function for retrieving chapter data.
  • Settings reorganization — Cleaner grouping and layout.
  • Watched and favorite badges — Visual badges on media items indicating watched status and favorites.
  • Multiple video version selector — Details page shows a version picker when media has multiple versions (e.g., 4K, 1080p, singalong), with resolution labels and automatic audio/subtitle defaults per version.
  • Audio and subtitle pre-selection — Audio and subtitle tracks can be selected from the Details page before starting playback; defa...
Read more

v2.0.0

09 Feb 01:28

Choose a tag to compare

Welcome to Moonfin 2.0.0 - The Complete Rewrite github

First off, thank you for your patience! I know it's been almost a month since 1.2.0, and I apologize for the wait. But I promise it was worth it.

Why 2.0.0?

This isn't just an update, it's a complete rewrite from the ground up.

The Old Way (1.0.0)

The original Moonfin was built with vanilla HTML, CSS, and JavaScript. While functional, this approach had limitations:

  • Manual DOM manipulation for every UI update
  • Custom-built navigation system that didn't always play nice with the remote
  • Styling inconsistencies across different Tizen versions
  • Each new feature required significant boilerplate code
  • No component reusability which caused lots of copy-paste
  • One-size-fits-all playback that didn't take advantage of your TV's capabilities

The New Way (2.0.0)

We've rebuilt everything using Enact, a React-based framework specifically designed for smart TVs. Here's what that means:

For Users:

  • Smoother Performance - React's virtual DOM means efficient updates without the jank
  • Better Remote Navigation - Enact's Spotlight system provides proper D-pad focus management out of the box. No more lost focus or weird navigation jumps
  • Consistent UI - Sandstone components are designed for TV viewing distances and look great on your Samsung TV
  • Faster Load Times - Optimized bundling, code splitting, and lazy loading
  • Reliable State Management - The app remembers where you were and what you were doing

For Development:

  • Component-Based Architecture - Reusable UI pieces mean fewer bugs and faster feature development
  • Modern Tooling - Hot reloading, better debugging, proper build pipeline
  • Battle-Tested Framework - We're building on top of code designed for exactly this use case
  • Cleaner Codebase - From scattered scripts to organized, maintainable code
  • Faster Iteration - New features that would have taken days now take hours

The bottom line: this foundation lets us ship updates faster and with more confidence. The hard work is done—now we can focus on features.

What's New

Smart Playback Engine

One of the biggest under-the-hood improvements. I completely rethought how Moonfin handles video playback:

  • Per-Tizen-Version Codec Profiles - Your TV now reports exactly what it can play natively. Whether you're on Tizen 4, 5, 6, or newer, Moonfin tells Jellyfin precisely which codecs, resolutions, and audio formats your specific TV supports
  • Samsung AVPlay Media Pipeline - We now use Samsung's native AVPlay API instead of relying solely on HTML5 video. This means hardware-accelerated playback, proper HDR support, and smoother performance
  • VP9 & AV1 Container Support - Updated video codec container support for modern formats
  • Smart Audio Stream Selection - Auto-selects the best compatible audio track during playback, with support for native track changes and fallback reloading
  • HDR-to-SDR Transition Handling - Proper video cleanup and transition logic when switching between HDR and SDR content
  • Ultrawide Resolution Tagging - Improved resolution logic to properly tag ultrawide videos as 4K
  • Less Server Transcoding - By accurately reporting your TV's capabilities, Jellyfin can direct play more content instead of wasting CPU cycles transcoding files your TV could already handle

The result? More direct play, less buffering, better quality, and a happier Jellyfin server.

Multi-Server Support

  • Connect to multiple Jellyfin servers simultaneously
  • Unified Library Mode - Browse content from all your servers in a single view
  • Seamless cross-server playback
  • User Switching & Quick Connect - Improved authentication flow with support for switching between users and Quick Connect

Jellyseerr Integration (Out of Beta! 🎊)

  • Full Jellyseerr support with Moonfin plugin integration
    • Official release of the Moonfin Server Plugin — A Jellyfin server plugin that integrates with Moonfin for Tizen for seamless Jellyseerr integration and cross-client settings sync.
  • Huge overhaul to Jellyseerr with proper media type and availability badges
  • Browse trending and popular content
  • Request movies and TV shows directly from your TV
  • View and manage your requests with a dedicated "My Requests" row
  • Jellyseerr person pages — browse media by actor/director

Improved Player

  • Trickplay preview support (thumbnail scrubbing, if enabled on your server)
  • Custom Subtitle Rendering - JSON-based subtitle fetching with overlay rendering for Tizen
  • Subtitle Customization - Size, position, and additional styling options for subtitles
  • Seek Step Customization - Configurable seek intervals in settings
  • Media Key Support - Play, pause, fast-forward, rewind, and stop via the Samsung remote media keys
  • Enhanced playback controls and health monitoring

Live TV & Recordings

  • Browse and watch Live TV channels (if configured on your server)
  • Access your recordings

Samsung Smart Hub Preview

  • Smart Hub Integration - Background service with deep link handling for Samsung Smart Hub preview cards, so you can jump straight into your content

UI & Customization

  • Expandable Libraries in NavBar - Browse libraries directly from the navigation bar with a settings toggle for the toolbar
  • Featured Media Carousel - Toggleable carousel with scroll-on-focus behavior, excluding collections
  • UI Customization Options - Blur, opacity, and color settings for navbar and panels
  • Consistent NavBar - Navigation bar present on all views
  • Updated Button Styling - Improved focus colors and placement throughout the app
  • People in Search - Added people results to the search view

Performance

  • Browse Caching - Row data, libraries, and featured items are cached for significantly faster loading
  • Lazy Loading - Views are lazily loaded with a loading spinner component
  • Image Preloading - Smoother carousel transitions with debounced backdrop loading
  • Tizen Lifecycle Management - Proper cleanup functions and cache handling in Browse and Settings

Other Improvements

  • Vastly updated Genre browsing
  • Update notifications (you're seeing this because of it!)
  • Better error handling throughout

Bug Fixes

  • Fixed subtitle issues with improved server-side extraction for text-based subtitles
  • Fixed audio stream switching logic with native track change support and fallback reloading
  • Fixed Jellyseerr badges in Browse, Discover, and Person components
  • Fixed Continue Watching and Next Up not displaying media info
  • Fixed scrolling in Libraries and Genres views
  • Fixed library fetching by adding user dependency and excluding boxsets
  • Fixed modal focus and navigation in the Player view
  • Fixed back button functionality in Player and Settings views
  • Fixed resume and next up item handling to avoid duplicates
  • Fixed backdrop image styling on Tizen 4 with fallback blur filter support
  • Fixed featured media bar stopping scroll when not focused
  • Cleaned up obsolete project files, unused privileges, and dependencies from Tizen config

Upgrading

Simply install this version over 1.2.0. Your server connections and settings will be preserved.

Installation

  • Download the WGT file below
  • Enable Developer Mode on your Samsung TV
  • Use Tizen Studio CLI to install:
tizen install -n Moonfin_2.0.0.wgt -s <your-tv-ip>:26101

Contributors

A big thank you to everyone who contributed to this release!

Contribution Highlights

  • @MoazSalem — Subtitle fixes and extended subtitle customization options.
  • @morpheus133— Smart Hub Integration

Looking Forward

With this solid foundation in place, I can now iterate much faster. Expect more frequent updates with new features and improvements. Thank you for being part of the Moonfin community!


Full changelog: fb0fbd2...ac9b027

v1.2.0

10 Jan 00:42

Choose a tag to compare

Moonfin for Tizen v1.2.0

What's New

Playback & Codec Support

  • Full DirectPlay support for HEVC/H.265 content - Watch high-quality 4K/10-bit content with native playback and proper progress tracking
  • AC3/HE-AAC and Dolby Vision support - Enhanced audio/video codec compatibility with detailed stream analysis
  • Integrated jellyfin-web device profile builder - Intelligent codec detection for better DirectPlay decisions
  • New PlaybackManager and AVPlay plugin - Unified playback handling with native Tizen performance
  • Native HLS player for transcoding - Improved compatibility for transcoded streams
  • Fixed MKV and HEVC container handling - Proper playback of HEVC content in MKV containers
  • Persistent transcoding mode - Your playback preferences are remembered between sessions
  • Max bitrate setting - Fine-tune streaming quality to your network conditions

Server-Side Logging

  • New server logging functionality - Send debug logs directly to your Jellyfin server
  • Server logging settings in the app for easy configuration
  • Better diagnostics for troubleshooting playback issues

UI/UX Enhancements

  • Dynamic app version display in About section
  • Replaced emoji icons with PNG images for better Tizen compatibility
  • Improved focus restoration - Modal dialogs remember which button opened them
  • Updated featured banner visibility and media bar positioning to match other Jellyfin clients

Tizen 4 Compatibility

  • ES5 transpilation via Babel - Full support for older Tizen 4.0+ devices
  • Enhanced polyfills - Improved URLSearchParams and storage compatibility for legacy devices

Bug Fixes

  • Fixed libraries incorrectly showing collection items
  • Fixed live TV compatibility on older Tizen devices
  • Enhanced error handling and logging throughout video player
  • Improved codec profile conditions by removing redundant checks

Technical Improvements

  • Added screen resolution detection for adaptive quality
  • Cross-platform build process (Windows/Linux/Mac) with archiver dependency
  • Updated dependencies including HLS.js

Installation

Download the .wgt file from the releases page and install it on your Samsung Tizen TV using the Tizen Studio or the web-based installation method.

Upgrading from 1.1.0

Simply install the new version over the existing installation. Your settings and server connections will be preserved.

v1.1.0

27 Dec 06:06

Choose a tag to compare

What's New In v1.1.0

What's Changed (Out of Alpha status now that Jellyseerr works!)

Bug Fixes

Storage API Issues

  • Fixed TypeError: storage.getSession is not a function errors by replacing non-existent storage methods with native sessionStorage API

Jellyseerr Integration

  • Fixed Jellyseerr API authentication on Tizen by implementing proper API key support

Navigation & UI

  • Fixed details page missing navbar - now supports UP key to navigate to navbar
  • Added scroll position preservation when navigating to and from details/discovery pages
  • Restored position on page return with proper sessionStorage management

Login Page

  • Added complete ENTER/OK key support to all buttons for Tizen remote control compatibility
    • Connect, Back to Server List, Add New Server, Manual Login, Delete Server, and more

New Features

Configuration & Build

  • Updated app configuration for optimal Tizen TV compatibility
    • Package ID: Changed to MoonfinApp (10 characters - Tizen schema requirement)
  • Enhanced build process to create properly named versioned package: Moonfin-Tizen-1.1.0.wgt
  • Includes proper Samsung developer certificates for TV installation

Installation

Download Moonfin-Tizen-1.1.0.wgt and install on your Samsung Tizen TV using Jellyfin 2 Samsung or Tizen Studio.