Releases: Moonfin-Client/Mobile-Desktop
1.4.0
Moonfin 1.4.0 Release Notes 
Features
- Introduced a new settings side panel experience across platforms, with cleaner in-app navigation into settings categories.
- Added beta SyncPlay support:
- group-aware playback controls
- group join/leave and participant visibility
- SyncPlay controls in both the main UI and player overlay
- Improved AUR distribution workflow:
- added GitHub Actions automation to keep the AUR package updated on releases.
Bug Fixes
- Fixed distorted audio behavior (#78):
- removed aggressive local volume behavior above normal range
- relaxed strict audio-channel requirements that could trigger bad playback outcomes on some setups.
- Fixed Emby playback auth gaps by ensuring stream and external subtitle URLs include auth when needed.
- Fixed theme music restarting between related series screens (#85), so music now continues more smoothly when moving through child items.
- Fixed HLS resume/seek failures (#87) by removing
StartTimeTicksfrom segment request paths where it caused server-side rejection. - Fixed playback distortion on some files (#81, related to #47) by adding a user-facing hardware decoding toggle so users can switch to software decoding when needed.
In the next update, I plan to add localization support for around 60 languages to make the app more accessible worldwide. I also plan to bring in rows from the Home Screen Sections and KefinTweaks plugins directly into the app, so customization should feel a lot more seamless.
I’ve started integrating Android TV and Tizen into the codebase as well, which is a big step toward better platform support. On top of that,a new web client was launched today for testing that will eventually replace the current UI used by the server plugin. The link is here. I'm trying to keep all discussions and feedback on it in the Discord channel but I'll open up a discussion topic here too.
In the next update I'm also going to be adding voice search, plus a small surprise feature that’s still in the works.
Since we're also adding two TVs to the family, the repo might need a new name. Moonfin-Core maybe? I'm open to suggestions.
Full Changelog: 1.3.3...1.4.0
1.3.3
Moonfin v1.3.3 Release Notes 
Features
- Improved download experience — Selecting a download now shows estimated file sizes for each quality option. You can also download multiple episodes from a season at once.
- Fixed the TV Series rows — The home screen now shows the TV series instead of individual episodes in "Latest" rows
- Media bar improvements — The media bar loads faster and scrolls more smoothly, especially on large libraries.
- AUR Release — Moonfin is now available on the Arch Linux User Repository under the package name moonfin
Bug Fixes
- Scrubbing through episodes now shows thumbnails — Preview thumbnails while scrubbing (trickplay) now work correctly for TV episodes and Next Up items, not just movies.
- Fixed audio distortion on TV episodes — Some episodes played with garbled or distorted audio. This has been corrected.
- Admin dashboard no longer crashes — The admin dashboard would crash when certain server storage or activity data was unavailable. It now handles this gracefully and doesn't crash.
- Fixed re-downloading files — Re-downloading a file that already existed could fail with an error. The old file is now properly cleared before re-downloading.
- Linux: fixed video not playing on some systems — On certain Linux systems (e.g. CachyOS, Bazzite), video would appear black or show distorted colors. The underlying graphics rendering has been overhauled to fix this.
- Linux: fixed app failing to launch — The Linux AppImage and Flatpak builds could fail to start due to missing bundled libraries. This is now resolved.
Full Changelog: 1.3.2...1.3.3
1.3.2
Moonfin v1.3.2 Release Notes 
Bug Fixes
Playback
Volume and Brightness Sync
Refactored player volume and brightness controls on mobile to directly control device settings rather than only adjusting in-app appearance.
Playback Resume Timing
Fixed playback resume not starting from the correct timestamp and not maintaining the correct playback position.
Dolby Vision Tone Mapping
Reverted problematic iOS playback changes while preserving Dolby Vision tone mapping functionality to properly restore correct video output.
Reading Features
EPUB WebView Handling
Updated EPUB content web view handling to stop treating subresource scheme errors as fatal issues, and added blocking for unsupported main-frame URL navigations before they fail.
Full Changelog: 1.3.1...1.3.2
1.3.1
Moonfin v1.3.1 Release Notes 
Features
- Added Italian language support
- Added French language support
- Added Swedish language support
- Added Turkish language support
- Added desktop player tooltips with localized labels and shortcut hints
- Updated iOS Dolby Vision playback rendering with tone mapping and texture/internal format improvements.
Bug Fixes
- Fixed locale fallback to English when device language is unsupported
- Fixed desktop fullscreen state restoration when leaving player fullscreen
- Fixed trickplay thumbnails not appearing when scrubbing TV episodes
- Fixed a playback start race condition causing media to fail to resume correctly.
Contributions
- @Stoufiler made their first contribution in #67
Full Changelog: 1.3.0...1.3.1
v1.3.0
Moonfin v1.3.0 Release Notes 
New Features
Localization / Internationalization
- Added full localization framework with Flutter l10n support, enabling community-contributed translations across the entire app
Books & Audiobooks
- Completely redesigned the book and audiobook library UI with a brand-new layout, added bookmarks and table of contents support to the book reader
Playback
- Default audio language preference — set a preferred audio language in playback settings so tracks are selected automatically
- Dolby Atmos labels — audio profile detection and display for Dolby Atmos metadata on item detail pages
- Subtitle stroke/shadow support — added stroke and shadow rendering for subtitles in both video and live TV player screens
Desktop
- Window state persistence — window size and position are now saved and restored between sessions on desktop platforms
Seerr / Jellyseerr Integration
- Seerr navigation icon is now hidden when no Seerr instance is configured via the Moonfin plugin, preventing a broken entry point in the toolbar and sidebar
Windows Installer
- The Windows (Inno Setup) installer now upgrades the existing installation in-place instead of creating a new side-by-side install each time
Bug Fixes
- Audio too quiet / stereo downmix broken — refactored audio channel handling and volume management, increasing the max internal volume ceiling from 100 to 200 to resolve low audio on surround-sound content
- Missing TV guide data — fixed EPG time window calculation that was not using UTC, causing guide data to appear missing for certain time zones; also improved the EPG grid to expand dynamically with screen size on desktop
- Media bar 401 errors — resolved an issue where the media bar returned HTTP 401 after a user's library permissions were changed server-side
- Seerr 400 errors on media requests — fixed Seerr returning HTTP 400 when requesting media
- Seerr rows sync — fixed discover-row synchronization from the Moonfin plugin for Seerr/Jellyseerr
- iOS brightness control — fixed missing
screen_brightness_iosdependency that prevented brightness gestures from working on iOS
Translations
| Language | Commit |
|---|---|
| German (de) | d395920 |
| Spanish (es) | dd16d13 |
| Brazilian Portuguese (pt-BR) | b7c6c82 |
Full Changelog
v1.2.0
Moonfin v1.2.0 Release Notes 
Note
Moonfin for iOS is now available directly via the Apple App Store! Of course Android is still available via the Google Play Store.
Features
- Added major playback UX improvements:
- Mobile gestures (double-tap seek on left and right of the screen, brightness/volume vertical swipes on left and right of the screen)
- Long-press screen lock/unlock (gated behind a toggle in playback settings since I find these annoying when its default)
- Desktop double-click fullscreen and volume visual feedback
- Added Android MPV configuration support and
input-ipc-serverunder advanced settings. - Added desktop mouse cursor auto-hide during playback.
- Completed trickplay implementation.
- Improved Live TV UX by making channels directly clickable for playback when EPG is unavailable, plus desktop/mobile layout updates.
- Added delete action on detail screens with confirmation dialog. (can never be too sure)
- Added Privacy Policy content/package update.
- Added dynamic app version display in About and Server Select screens.(because I had to recompile everything last time because I forgot to update it)
Bug Fixes
- Fixed Seerr request default selection behavior (server/profile) so submit works without reselecting advanced options. (yay)
- Fixed incorrect resolution labels.
- Fixed local trailers preference/handling.
- Fixed remote HTTPS server connections failing behind reverse proxies.
- Fixed season poster fallback chain behavior.
- Fixed subtitle styling issues and added a description about what can be changed.
- Fixed server URL normalization, connection banner behavior, and HTTP redirect handling.
- Fixed Android external-folder download permissions.
- Fixed My Media row image/orientation behavior (primary image + landscape consistency).
- Fixed playback management startup recovery/readiness flow that was causing media to restart. (Sorry)
- Fixed/adjusted Linux build script. (missing libraries and icons)
- Associated PR #23
Contributors
After this I'm going to try and update all the packages in the app, do some testing to make sure it doesn't all break for the next version, then start working on localizing all hardcoded english text.
I also want to improve the music player and add Android Auto and CarPlay to the mobile apps.
and I'm going to improve the book reader considerably, especially UI wise
v1.1.0
Moonfin v1.1.0 Release Notes 
Bug Fixes
- Fixed race condition between next up and auto-playing episodes causing episodes to skip twice
- Disabled True HD playback by default, only enabled when configured if your device allows it
- Fixed PSG subtitles triggering unnecessary transcoding
- Fixed ASS/SSA subtitles, they should now display correctly on mobile
- Fixed Linux build scripts missing libraries for Flatpak, AppImage, and tar.gz
- Added missing merge option for Continue Watching and Next Up rows that was synced from plugin but no local toggle existed
- Added full screen media player button that was missing for desktop
- Updated max bitrate preferences that was causing some videos to transcode
- Fixed a bug that was not displaying the live tv epg
- Moved the info area that appears on home rows behind a toggle, disabled by default
New Features
- Custom mpv.conf support on desktop with unsafe advanced options
- Collections added to details screen in release order
- Updated the chapter card dimensions and image quality
- Subtitle downloads from details screen
- Added custom download location for Android
- Added versions button to details screen
- Navigation chevrons added to rows all throughout the app
- Remote control of other Jellyfin devices on your network (press the avatar icon then remote control, its pretty cool)
- Casting support for music playback
- Better payload optimization reducing load times (the app is much faster in my opinion now)
Keyboard Shortcuts
App-wide shortcuts:
- Escape: go back
- Enter: activate focused item
- F11: toggle fullscreen (desktop)
- Ctrl+Q: quit app (desktop)
Player shortcuts:
- Space: play/pause
- Left Arrow: seek backward
- Right Arrow: seek forward
- Up Arrow: volume up
- Down Arrow: volume down
- I: open stream info
- Escape: exit fullscreen if fullscreen, otherwise exit playback
- Enter/Space: play/pause when controls visible, otherwise show controls
v1.0.0
Moonfin 1.0.0 Release Notes 
Hi everyone!!!! This is the first public release of Moonfin for phones, tablets and desktops and I couldn't be more excited. It's built with Flutter and runs on Android, iOS, macOS, Windows, and Linux from a single codebase.
Tested on: Pixel 9 Pro XL (Android 16), MacBook Pro (MacOS Sequoia 15.7.4), iPhone 11 Pro (iOS 26.3.1), Windows 10, Pop! OS 22.04
Download Information
Android is available now on the Google Play Store, which is really the recommended way to install and stay up to date on Android. The Play Store build will receive updates automagically.
iOS and macOS builds have been submitted and are currently pending Apple's review process. They should be available directly from the App Store within a day or two. The App Store will be the preferred and recommended way to install on those platforms once live, as it handles updates automatically and does not require any manual steps.
In the meantime, the unsigned IPA build for iOS and the signed DMG for MacOS are attached to this release for sideloading (and will continue to be in the future, just in case). See the iOS sideloading section below for instructions.
Windows The installation EXE is attached to the release and will notify you once an update has been published
Linux is provided in 6 different flavors. Variety is the spice of life right? It also gives you a notification when an update is ready.
iOS Sideloading (Temporary)
Until the App Store listing goes live, you can install the unsigned IPA on your iPhone or iPad using one of the following tools. Note that free Apple developer accounts resign apps with ONLY a 7-day certificate, meaning you will need to re-sign every 7 days until the App Store version is available (should not take this long). A paid Apple Developer account ($99/year) extends this to 1 year.
AltStore - Install AltServer on a Windows or macOS computer, connect your device via USB or Wi-Fi, and use AltStore on your device to install and manage the IPA. AltStore can also refresh the certificate automatically when your device and computer are on the same network.
Sideloadly - A straightforward Windows and macOS tool. Connect your device, drag the IPA into Sideloadly, enter your Apple ID, and install. BAM! No jailbreak required. The same 7-day limit applies for free accounts.
Both tools require your device to have "Developer Mode" enabled on iOS 16 and later, which can be turned on under Settings > Privacy and Security > Developer Mode.
Back to our regularly scheduled programming
Server Support
- Jellyfin 10.8.0 and newer
- Emby 4.8.0.0 and newer
Playback
All video and audio playback is handled by libmpv via media_kit, giving broad codec coverage on every platform without relying on platform media frameworks.
| Category | Supported Formats |
|---|---|
| Video | H.264, HEVC (H.265), VP8, VP9, AV1, MPEG-2, MPEG-4, VC-1 |
| Audio | AAC, MP3, FLAC, Opus, Vorbis, AC3 (Dolby Digital), EAC3 (Dolby Digital Plus), DTS, TrueHD, PCM (16-/24-bit), ALAC |
| Containers | MP4, MKV, WebM, AVI, MOV, TS / M2TS, WMV / ASF |
| Subtitles | SRT, ASS / SSA, VTT / WebVTT, TTML, SUB; bitmap (PGS, DVB, VobSub) on desktop |
| HDR | Dolby Vision, HDR10+, HDR10, HLG - automatic detection and signaling |
| HW Accel | VA-API, QSV, NVENC, VideoToolbox, V4L2, RKMPP |
Subtitle and audio delay adjustment are available during playback, along with pre-playback track selection, picture-in-picture support (Android AND iOS), and next-up handling.
Downloads
Media can be downloaded in its original format or transcoded by the server before saving. All media can be played offline in-app without the need of external players. Transcoded downloads use HEVC (H.265) video + AAC audio in an MP4 container. Quality presets range from 360p at around 250 MB per hour up to 1080p at around 1.8 GB per hour. Original-format downloads are available for all content types. Books, music, and audiobooks always download in original format.
| Preset | Resolution | Video Bitrate | Audio Bitrate | Est. Size/hr |
|---|---|---|---|---|
| Original | Source | Source | Source | Varies |
| High | 1080p | 4 Mbps | 192 kbps | ~1.8 GB |
| Medium | 720p | 2 Mbps | 128 kbps | ~950 MB |
| Low | 480p | 1 Mbps | 96 kbps | ~490 MB |
| Mobile | 360p | 500 kbps | 64 kbps | ~250 MB |
Downloaded files are organized automatically:
Movies/{Title (Year)}/
TV/{Series}/Season NN/
Music/{Artist}/{Album}/
Audiobooks/{Author}/{Collection}/
Books/{BookName}/
Android downloads are saved under the app's external storage directory (Android/data/com.moonfin.app/files/Moonfin/). This uses getExternalStorageDirectory(), which provides more space than internal app storage and avoids counting against the device's internal storage quota. If external storage is unavailable, it falls back to the app's internal documents directory.
iOS downloads are saved under the app's Documents directory (Documents/Moonfin/). This is the standard sandboxed location iOS provides for user-generated content. Files here are included in iCloud/iTunes backups by default and persist across app updates.
Desktop downloads are saved under the application support directory by default, but users can configure a custom download path in settings.
Ebooks and Audiobooks
Ebooks support EPUB, MOBI, AZW/AZW3, and PDF natively in the app. Comic archives (CBZ, CBR, CB7, CBT) render with two-page spread on desktop and include zoom, pan, and page caching. Reader themes include Light, Dark, and Sepia.
Audiobooks support M4B and multi-file formats with chapter navigation, position bookmarks, and resume tracking.
Platform Minimum Requirements
| Platform | Minimum |
|---|---|
| Android | 6.0 (API 23) |
| iOS | 13.0 |
| macOS | 10.15 Catalina |
| Windows | 10 |
| Linux | GTK 3 + CMake 3.13+ |