Moonfin 2.3.1 Release Notes 
Features
Native Game Emulation
- The retro game library now runs on a native libretro backend across Android, iOS, macOS, Windows, and Linux instead of the web-based EmulatorJS player, with a setting to switch between the native and EmulatorJS engines. Video is decoupled from emulation for smoother rendering and better performance.
- Rebuilt retro game browsing to match Moonfin's other library screens, adding a game system navigation hierarchy, and loading artwork ahead of the viewport for a snappier feel.
- Added a Downloaded Games screen and moved save data off the cache so saves are no longer at risk of being cleared.
- The in-game menu is now reachable by touch, mouse, back, and hold-Start, scrolls to the selected row, fits narrow screens, and saves on exit. There's also better controller support, keyboard play, and mobile gets better on-screen touch controls.
Music and Playback
- Added a Songs sublibrary to the Audio page with custom sorting and title letter filtering.
- Added Shuffle and Shuffle All buttons to the Music Artist and Album detail pages.
- Playlists now resume where you left off and show watched state on their tracks.
Downloads
- Media downloads now run on the native
background_downloaderengine, so they keep going in the background and survive the app being backed out of. The end of a download shows a Finalizing state instead of sitting at a stuck 99% so just have patience.
Android TV
- Added home screen channel rows for latest movies, shows, and upcoming.
Seerr Watchlist
- Added a Watchlist row to the home rows backed by your Seerr watchlist, found in the Home Sections settings.
Home and Detail Customization
- Added a background opacity slider for the modern detail screens
- Added new customizable padding settings for the space between the home rows.
- Added a media bar toggle for YouTube trailer captions.
- Settings sync coverage grew from 87 to 207 settings, so far more of your setup carries across devices.
Library Presentation
- Banner images are now displayed correctly in libraries.
Improvements
- Cut down media bar launch database queries to stop the server CPU and RAM strain they caused on some setups, and sped up TV show shuffle and overlay candidate search.
- Added Emby Skip Intro support using chapter markers.
- Loaded the Radarr and Sonarr calendars through the plugin proxy.
- Raised the network timeout to 120 seconds and fixed remote networking, concurrency, and caching.
- Improved gamepad navigation throughout the app.
- Adopted the
liquid_glass_widgetsadaptive glass renderer (most noticable on iOS, macOS, and tvOS 26+), disabled backdrop drift, and lowered blur caps to reduce glass theme heat on capable devices. It wont cause heat issues on devices any more and navigation will be faster and smoother.
Fixes
Playback
- Fixed the 2.3.0 audio regressions, with route-aware TrueHD gating, untunneled lossless playback, and stereo cap cleanup.
- Fixed AV1 and HEVC Dolby Vision streams tagged DOVIInvalid always transcoding.
- Shuffling a TV show from its details page is much faster and no longer strains the server, and next-episode picking was fixed.
- Fire TV external players (Vimu, VLC, Kodi) can now receive Dolby Vision HDR10+ streams instead of being forced to transcode.
.strmsources whose URL is not reachable from the client now stream through the server instead of failing to a black screen.- Fixed the selected audio and subtitle track not being respected on tvOS, and preferred audio and subtitle languages are now passed to backends on the initial payload. Audio track, title, and language also persist across episodes.
- Non-Latin subtitles now render on mpv, and PGS subtitles are positioned correctly on letterboxed video.
- Gave high-bitrate remux direct play a real buffer runway and fixed wrong version playback on remux multi-version items.
- Updated dpad center button to pause/play when pressed while player OSD is hidden.
- Fixed shuffle and next-episode picking on large libraries.
Apple TV
- Matched the tvOS player's Next Up, skip intro and outro, and Still Watching prompts to the rest of the Moonfin-Core clients, and fixed the playbar becoming unreachable after touch scrubbing.
- Disabled the Siri Remote continuous-swipe auto-repeat.
Web
- Fixed Web UI subtitle rendering and OSD track sorting.
Desktop
- Tidied desktop fullscreen and window-close handling and fixed the startup fullscreen blackscreen and small window layout issues.
- Fixed Windows ARM64 and MSVC C++ build issues.
Library and Interface
- Home rows keep their content, scroll position, and focus when you return from a details page.
- Fixed the empty media bar on small libraries and restored its retry action.
- Fixed the classic rows home layout with a banner media bar, defaulted My Media to thumbnails, and stopped the focused card outline clipping.
- The media bar dots now hide while a trailer is playing.
- Fixed focus traps that made the navbar and sidebar unreachable on home.
- Dialogs no longer close on backspace while you are editing text.
- Fixed the letter filter dropping folded titles in non-song browses, and fixed the music library backdrop showing the wrong library and ignoring hover.
- Fixed marquee scrolling and TV column counts in library grids.
- Fixed the mobile Play button theming and its collapse in landscape, and stopped mobile routes stealing focus into the first text field.
- Fixed the back button on the display, metadata, and nfo settings screens on mobile.
- Item deletion now has clearer navigation, confirmations, and localized errors.
Music and Audiobooks
- Fixed the music resume position.
- Fixed audiobook Continue Listening metadata and resume position, with mobile playback and progress bar improvements.
Live TV, Emby, and Seerr
- Fixed Emby Connect server URLs gaining a trailing
?#. - Sign in to Seerr silently on quick connect logins, and fixed Seerr staying unavailable after a failed auto-login.
- Fixed the Seerr 4K request toggle, and denied requests now show a real reason.
- Fixed Seerr Sub-Library page TV navigation and grid overflow.
Offline
- Fixed offline playback failing to find the server when the connection dropped.
- Fixed Android 10 Downloads saves.