github Moonfin-Client/Tizen 2.0.0
v2.0.0

4 hours ago

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

Don't miss a new Tizen release

NewReleases is sending notifications on new releases.