Moonfin 2.0.0 Release Notes 
This is Moonfin's biggest release yet. Since v1.4.0 the project has grown from just a mobile and desktop client into a crazy full multi-platform ecosystem, and this release brings four big changes:
-
Android TV now lives in this repository. The native Android TV experience, including leanback launcher integration, D-pad and remote navigation, ExoPlayer/Media3 playback, audio passthrough, and a TV-tuned UI, now ships right alongside the mobile and desktop builds instead of living in a separate project. Woooooo.
-
There's a brand-new web client. Moonfin now builds and runs in the browser as an installable PWA through the Moonfin server plugin, now called Moonbase, giving the server plugin a proper web front end, complete with an in-browser theme editor. Read more about it here
-
Experimental Tizen support has landed! Moonfin now includes an early Samsung TV (Tizen) target using a native Tizen playback backend, with ongoing work to improve platform coverage and stability.
-
The repository is being renamed to
Moonfin-Core. This repo is the heart of Moonfin, the shared codebase that powers mobile, desktop, Android TV, Tizen, and web from a single source, and the new name reflects that.
Beyond the headline changes, v2.0.0 includes a near-total overhaul of the playback engine for all clients, a new theming system, expanded Seerr and Live TV support, localization into 60+ languages, and hundreds of fixes.
Features
New platforms
-
Android TV support in the repo. Pretty self explanatory.
-
Web client. A full Flutter web target with a PWA manifest and icons, web SQLite (drift WASM) database, a web credential store, web-specific server discovery, and an HTML5 video backend. A lot of fancy talk for "a new web client for the server plugin that plays media and looks nice"
-
In-browser theme editor. A standalone web theme editor (
web/theme/) for building and previewing Moonfin themes, with a resizable editor panel and theme sync back to the server plugin. -
Experimental Tizen 8+ (Samsung TV) support. Early Tizen builds now run through a native Tizen playback path with platform-specific dependency wiring. This target is currently experimental and I'm tuning it, bear with me.
Known limitations (Tizen experimental)
-
Rendering stability is still in progress. Some emulator/device combinations can hit startup or transition rendering issues.
-
Feature parity is not complete yet. Some playback and platform integrations available on Android TV, desktop, and web are still being brought over.
-
Playback behavior may differ by model/firmware. Codec support and stream behavior can vary across Samsung TV generations. Refer to this chart and choose your model year.
-
This target is best considered preview quality for now. Feel free to test and give feedback but its not polished YET.
Playback engine
-
Media3 / ExoPlayer backend. A native Android Media3 player backend with hardware codec probing and HDR capability detection, selectable through a playback-engine preference and the default on Android TV.
-
Audio passthrough. Bitstream passthrough for DTS, DTS:MA, DTS:X, TrueHD, and TrueHD JOC/Atmos to AV receivers, with per-format toggles and correct codec-flag handling.
-
Dolby Vision Profile 7 (FEL) direct play. An optional preference to direct-play DV Profile 7 instead of forcing a transcode.
-
Native PGS and bitmap subtitle rendering on Android an FFmpeg software decoder option, has been added. MPV already displays PGS subtitles natively.
-
Auto HDR switching on Windows that toggles display HDR for HDR content (macOS already handles this natively).
-
Cinema Mode pre-rolls. Added pre-roll / cinema intros played before content and excluded from progress reporting, with remote controls restricted during playback.
-
SponsorBlock integration to skip sponsor and promo segments during trailer playback.
-
Customizable skip durations with matching seek icons, 2x speed control on TV, scrub-seek debouncing, and a "Replace Skip Outro with Next Up" preference.
-
External player support on Android, so you can hand video off to a third-party player through an app picker.
-
Reworked YouTube trailer playback using an iframe-based resolver, which fixes trailers on iOS, Android, macOS, TV, and web.
Theming and customization
-
Selectable theme system with bundled Neon Pulse and Moonfin themes, a theme-plugin base, and a saved-themes screen that syncs through the server plugin.
-
Subtitle customization screen for text fill, stroke, and background colors, size, and vertical offset with a live preview, plus an SDH preference and internal-before-external subtitle ordering.
-
Media bar customization with a new MakD media bar and 2 more on the way, overlay color and opacity preferences, and a fallback that pulls from movie and TV libraries when no profile resolves.
Home screen and navigation
-
Home Rows v2/Modern Rows a new home-screen row layout (now the default) with configurable settings and tighter spacing.
-
Favorites, Collections, and Genres rows added to Home Sections, with multi-server support.
-
KefinTweaks and Home Screen Sections (HSS) integrations for server-driven custom home rows.
-
Mobile bottom navigation bar, a new bottom navbar layout option for mobile.
-
Series-thumbnail home image option and smarter episode-vs-series artwork selection on focus.
-
Long-press context dialog on posters and cards to add to a library or collection, favorite, mark watched or unwatched, and (for admins) refresh metadata.
Shuffle and media details
-
Shuffle overlay system from the navbar and sidebar with different shuffle options. Normal shuffle functionality was added to regular details screens.
-
Person details redesign with two-column cast pages, biography, favorite, library and guest appearances, and Seerr appearances.
-
Media details file-size info for the active or default media source.
-
**Music Videos support, "Read More" expandable descriptions, and a branded player loading overlay.
Seerr
- Seerr login flow in integrations, with live status detection, replacing the old username-only display and having to use the server plugin.
Live TV
-
Live TV recording, so you can create and cancel recording timers right from the guide.
-
The Live TV section is now hidden automatically on servers that have no channels.
-
An EPG remote-control overhaul across the guide, recordings, schedule, and series views.
Mobile and desktop
-
Landscape-by-default video on mobile with an on-screen orientation lock toggle.
-
Desktop "Always on Top" player toggle.
-
Desktop UI scale setting
-
Window management that keeps playback alive when switching screens
-
Mouse thumb-key navigation.
Search and input
-
Voice search powered by speech-to-text on Android TV and mobile, with a Dart-side voice controller.
-
A custom on-screen TV keyboard that works around Flutter's broken TV text input, with a native-keyboard button, search suggestions, and a recent-searches store.
Localization
- 60+ languages. A massive localization rollout adding roughly 57 new locales (Arabic, Chinese variants, Japanese, Korean, Hindi, Russian, and many more), alongside updated Dutch, German, Spanish, French, and Italian translations. Community provided translations coming soon.
Bug Fixes
Playback
-
Fixed MPV playback on Fire TV and Firestick, and improved overall Media3 reliability.
-
Fixed transcode restarting playback unexpectedly, and fixed session-ended cleanup in the playback manager.
-
Fixed HDR and Dolby Vision profiles on Fire TV by removing surface-transparency model checks.
-
Fixed audio and subtitle track selection, default-language subtitle fallback, and subtitle scoring that ignored a language matched in a later position.
-
Fixed playlists playing video items as audio-only, and hid audio-only playlists from the playlists page.
-
Suppressed spurious seek prompts during seeking and removed an unnecessary pause in the media bar.
-
Fixed Media3 trailer playback hangs and music playback on Media3.
-
Fixed the theme song continuing to play after navigation, and previews and trailers not stopping when focus moved away.
Navigation and focus (Android TV)
-
Fixed a number of D-pad focus traps.
-
Fixed focus handling across the sidebar, media bar, and Seerr.
-
Fixed a navigation trap when closing the app from the avatar, and double-back and double-button-press bugs on dialogs and pickers.
-
Fixed settings items losing their focus highlight and settings tiles shrinking on focus.
-
Fixed TV focus getting stuck in search and the on-screen keyboard, including the keyboard clipping the Enter key.
Playback navigation and series
-
Fixed double-pop back navigation so exiting playback returns to Media Details, and stopped an open Playback Info dialog from blocking player exit.
-
Fixed TV show play and resume labels and first-unwatched-episode playback.
-
Series previews now use NextUp, skip Season 0 specials, and start items under 15 minutes at position 0.
-
Now skips unplayable media when auto-advancing and returns to details when the next episode has no playable source.
UI and layout
-
Fixed music album display to group by disc number, and stopped multi-line lyrics from being clipped.
-
Widened the sidebar background to match the focus highlight, and corrected the row-hide logic when the sidebar opens.
-
Improved mobile volume slider granularity
-
Normalized the mobile switch-user menu button sizing.
-
Fixed Seerr studio, genre, and network items not opening.
-
Guarded against duplicate Seerr request submissions.
-
Fixed the German translation of "Trailer" (it was "Anhänger").
-
Removed GNOME and X11 header-bar logic on Linux.
Accounts and sessions
-
Now requires a PIN when quick-switching users or logging in where a PIN is enforced, and guards against concurrent PIN actions.
-
Fixed duplicate servers and server deletion on the login screen, stabilized the Emby Connect login flow, and improved login error handling with focus and keyboard fixes.
-
Reworked session synchronization and user-views management.
Lifecycle
-
Media no longer stops when the app loses focus and no longer reloads when it regains focus, and the media-bar auto-advance timer now pauses with the app lifecycle.
-
Restored minimal wake-lock behavior so the screen can sleep when idle but stays awake during playback.
-
Media details now subscribe to the current-user stream so download and permission actions react live, with better download error handling.
Contributors
Thank you to everyone who contributed to this release.
- @mattsigal for the TV show play and resume work, the person-details redesign, media-bar fallback, file-size info, home card logic, Cinema Mode controls, and the wake-lock and back-navigation fixes.
- @broken-droid for the beta build flavors, Windows debug builds, the series-preview NextUp behavior, sidebar focus tracking, and repo tidying.
- @TheyCallMeSpy for Live TV channel detection and the subtitle language-scoring fix.
- @spsDrop for PIN enforcement on quick-switch and login.
- @jmawet for the mobile switch-user menu button sizing.
- @scottfridwin for the Android install-location manifest fix.
- @DavyDeCoster for the Dutch translations.
- @manueloverride for the German "Trailer" translation fix.
- @vicky5124 for the android TV codec testing, improvements, and knowledge.
- @MasterOfKay, @Foggy415, @Minimalist-2211, @animation91, and @manny0221 for phenomenal and much needed helping with testing
And thanks to everyone in the community who filed issues, tested beta builds, and contributed translations.