github Moonfin-Client/Smart-TV 2.1.0
v2.1.0

5 hours ago

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; defaults are initialized from server preferences.

Bug Fixes

  • Fixed passwordless auto-login for users without passwords.
  • Fixed subtitle style defaults and rendering across both platform players.
  • Fixed screensaver activating during video playback by implementing keepScreenOn on both platforms.
  • Fixed Browse backdrop handling.
  • Fixed formatting for end time display in 12-hour and 24-hour formats.
  • Fixed play/pause key handling across both platform players.
  • Refactored video element cleanup and trailer handling.
  • Spotlight focus for play-pause button on Player control navigation.

Community Contributions

@nullbyze

  • webOS build script — Created build.js to replace the shell-based build process, contributed multiple iterations of the build script and package.json updates.
  • Browse view fixes — Multiple updates to Browse.js.
  • Player fix — Fixed play/pause not working on button click in WebOSPlayer (the if block condition was inverted and never reached).
  • App reopen fix — Fixed correct reopen handling in App.js.
  • 24/12-hour format — Consistent time format across Player and Details page, with optional top-right clock display.
  • README update — Updated README.

@999romain

  • Settings border fix — Removed left and right black border in Settings.
  • Card scroll fix — Prevented cards from being cut off with start scroll behavior.
  • Details scroll-to-top — Implemented scroll-to-top on button row focus in the Details component.
  • UI enhancements — Style adjustments and new overrides for MediaCard, MediaRow, Browse, Details, and Settings. Created the RatingsRow component and MDBList API service.

@MoazSalem

  • Subtitle fallback — Added fallback to extracted subtitles when native embedded subtitle detection found none.

@morpheus133

  • 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

Don't miss a new Smart-TV release

NewReleases is sending notifications on new releases.