Moonfin 2.1.0 Release Notes 
Features
Home Screen and Media Bar
- Three new Media Bar layouts joined the home screen. Bookshelf is a minimal, artwork-focused shelf (#368), Gallery is a coverflow-style carousel with a genre-tinted ambient glow, and Banner is a wide cinematic strip. Each one is selectable in Media Bar settings, has layouts tuned for mobile, and prefetches artwork so scrolling stays smooth (#386).
- The Media Bar can now feature your Collections, pulling items only from the source collections you configure instead of everything in the library (#358). It also gained manual navigation that cycles back to the start when you reach the end (#359, closes #205).
- A full set of Seerr discovery rows can now be added to the home screen, including Trending, Popular and Upcoming Movies and Series, Recent Requests, Recently Added, plus Genres, Studios, and Networks. Each row can be toggled on individually, and tapping a genre, studio, or network opens a filtered browse view (#406). Items in these rows now show the same request status overlays and media type badges as the dedicated Seerr page, so you can tell at a glance what is Requested, Pending, or Available (#422).
- Playlists can now live on the home screen as their own row, complete with sorting options (#382).
- Home rows now lazy load more content as you scroll sideways, so Playlists, Favorites, Collections, Genres, and Latest Media keep filling in seamlessly on both single server and multi server setups (#351). The modern home rows now also prefetch and cache nearby artwork as you move focus, so posters no longer flash blank while scrolling on TV and desktop (closes #381).
- Favorites gained a view toggle, letting you switch between the categorized home style and a flat library grid, with smoother D-pad navigation between the category rows on TV and desktop (#414, closes #392).
- A new Expanded Home Rows option on TV gives each content row more room and centers it on screen, and it is on by default (#413, #420).
- The Home Screen settings were reorganized into clearer panels, with a dedicated Home Row Toggles screen for turning Favorites, Collections, Genres, Playlists, and Seerr rows on or off, each wired to live previews and server sync (#421).
Playback and Audio
- Remote streams can now direct play when the source supports it, which avoids unnecessary transcoding. On desktop, where libmpv decodes everything locally, the app now also advertises HD audio such as TrueHD and DTS-HD, along with Dolby Vision Profile 7, as direct playable instead of forcing the server to remux or transcode.
- A new PlaybackArbiter coordinates audio across the app for cleaner handoffs between the Media Bar trailer and main playback.
- The media segment countdown, used for skip intro and next up prompts, is now customizable (#375).
Personalization
- You can now override the app interface language independently of your device language (#373).
- Desktop users can set the mouse scroll wheel to control either volume or seeking.
- The Neon Pulse theme moved to a hybrid Orbitron and Rajdhani font system, with Orbitron for display and headline text and Rajdhani for body text, replacing the older wide typeface (#379).
- The web theme editor gained a random theme generator that builds a complete, coherent palette from a random base and accent hue while keeping your theme id, name, and description.
Other
- Offline downloads now include external subtitles, and offline playback can load them (closes #353).
- Settings on the Automation and Queue screen are now scoped per user account, so preferences no longer carry over between different users on the same device (#369).
Bug Fixes
iOS and Playback
- A round of iOS playback fixes landed. iOS 26 no longer shows a black screen on playback (#342), hardware decoding no longer causes excessive heat and battery drain (#365), and TrueHD content now reports stereo only output so the server downmixes or transcodes instead of failing to play (#391).
- Fixed iOS resume loading feedback and on screen display timing, along with transcode exit and play and pause flicker across all platforms.
- The play and pause button now responds correctly on desktop and TV after a mobile playback handling fix.
- Fixed a race condition where the on screen display and the play and pause button could get stuck after media finished loading on desktop (#429).
- Clicking a player control button on desktop no longer registers as a double tap and rapidly toggles fullscreen on and off.
- Cinema Mode no longer hangs on a black screen when pre-rolls fail to load, and its transitions are smoother (#371).
Home Screen and Navigation
- Theme music now plays on Collection detail pages (closes #393, #399).
- Resuming an episode from Continue Watching now autoplays the next episode and allows next episode navigation in the player (closes #388, #390).
- The combined Continue Watching and Next Up row is now ordered correctly by most recent activity (#389).
- The Classic home row style no longer leaves a phantom gap below the carousel on iOS (closes #330, #400).
- With auto-login disabled, the app now routes to the user selection page for your previous server instead of dropping you on the Add Server screen (#395).
- Library browse headers no longer sit too high or get cut off, so categories like Home Videos and Photos line up with the rest (#410, closes #407).
- Corrected the Latest Media library visibility logic so Collections, Playlists, and Books no longer auto populate rows when they are not selected (#404).
- Empty home row sections are now safeguarded so they no longer appear broken or steal focus while loading (#380).
- Reordering rows with the D-pad no longer clones the focus highlight across the screen, and your manually reordered home sections, including Seerr rows, now keep their order instead of being forced to the end (#419).
- Preference tiles in settings can once again be toggled with the D-pad select button on Android TV (#411).
- Fixed how shows display in home screen Collections rows (#374).
- Home row caches are now keyed per user, so one account's rows no longer leak into another when switching users.
Subtitles, Audio, and Devices
- The player now waits for external subtitles to finish loading before selecting tracks, fixing a race that could apply the wrong subtitle (#383).
- Fixed text subtitles being both burned in by the server and overlaid at the same time during transcoding, so they no longer render twice (#423).
- ASS and PGS subtitles now render correctly on Android TV and web, with the necessary fonts bundled.
- Removed StartTimeTicks from transcode URLs and added it to the Emby playback info request to stop unwanted media restarts and forced transcodes, and added audio rekick logic for bitstream formats to stop dropouts.
- Fresh installs now default to safe PCM audio output so sound works out of the box, and receivers connected over ARC or eARC now have compressed passthrough enabled on first detection when they support it.
- The Live TV guide is no longer blank on iOS and iPadOS with Emby servers, after guide times were converted to UTC (closes #128).
- Restored screen brightness swipe controls in the Android mobile player.
- Improved tablet and TV platform detection.
Other Fixes
- Fixed cast and person pages getting clipped at the bottom and role names being cut off on mobile (#396).
- Removed the stray Streaming from AirPlay label that could stick on screen and bother users (#417).
- Reworked PIN security and login preferences (#378).
- Fixed a focus handling crash on the Emby connect screen.
- Local Previews toggles now sync to the server like the rest of your preferences.
- Streamlined Seerr authentication through the plugin and added server side logging to make diagnostics easier.
- Replaced unsafe type casts with safe conversions across item properties to prevent crashes from unexpected server data.
Build, Packaging, and Localization
- The GitHub workflow now produces Android debug builds for pull requests, and the AUR workflow handles stale repo URLs and bundles the missing mpv dependency.
- Capitalized and localized the Account Preferences section header (#384), clarified the Media Bar mode setting description (#416), improved the Brazilian Portuguese translations (#356), corrected the European Portuguese translations to proper pt-PT (#424), and updated the README (#357).
Contributors
Thanks to everyone who contributed to this release: