New Features
- desktop: Mark the desktop version as beta
- metadata: Split the track details into two columns on wide screens
- analysis: Save the spectrogram as a PNG image
- desktop: Show word-timed TTML lyrics in mini player
- macos: Add floating mini player with lyrics
- material: Mark the current track in catalog and search lists
- material: Give desktop album and artist headers the artwork scheme
- material: Round Material headings with a fuller Google Sans Flex
- material: Mark the current track on local album rows
- material: Mark the current track in song lists
- material: Color the player surfaces from the track's artwork
- material: Connect the Library tools and chip the month headers
- material: Size desktop dialogs and show slider values in pills
- material: Give each surface role one meaning
- desktop: List the Library Songs tab in the songs table
- desktop: List keyboard shortcuts in Settings
- desktop: Tighten Material density for pointer input
- extensions: Enable newly installed extensions by default
- settings: Show donation progress on the desktop Settings row
- playlist: Add a shuffle button to the playlist header
- i18n: Mirror layouts for right-to-left languages
- desktop: Animate the lyrics and Up Next panels open and closed
- search: Lay out the Mornye desktop Search page like Music
- lyrics: Choose lyrics from each provider in the metadata editor
- desktop: Start the Material rail collapsed without a menu button
- release: Publish desktop builds in mornyeapp/Mornye-Desktop
- desktop: Show Now Playing over the whole window, as Music does
- desktop: Morph the Material rail and let it be collapsed
- settings: Group Material desktop categories as connected lists
- desktop: Lay out the Mornye player capsule like Music
- desktop: Apple Music style macOS shell
- desktop: Keep the Apple Music artist hero in Mornye
- desktop: Add hover scroll buttons to Home shelves
- desktop: Turn on the core backend and extension system
- desktop: Apple Music style album, playlist and artist headers
- desktop: Compact detail headers and denser song rows
- desktop: Keep album play buttons in the song table
- desktop: Add dropped music folders to the Library
- desktop: Add context menus to artist, home and search rows
- desktop: Add Library context menus, song table and hover play
- desktop: Show detail screen songs as a sortable table
- desktop: Add context menus, list selection and a song table
- desktop: Play through media_kit with MPRIS and SMTC sessions
- desktop: Open Now Playing in the content pane with an inspector
- desktop: Let the extension store grid fill the pane
- desktop: Show settings as a list-detail layout
- desktop: Center setup and tutorial in a desktop column
- desktop: Present app sheets as centered dialogs
- desktop: Wire deep links, single instance, keep-awake, Discord, watcher and crash logs
- desktop: Add keep-awake, Discord IPC, folder watching and panic log to the Rust backend
- update: Update desktop builds from their release packages
- desktop: Run FFmpeg and ffprobe through bundled executables
- playback: Add a PlaybackDeck seam and enable the macOS equalizer
- desktop: Add the desktop shell with rail, sidebar and player bar
- core: Read the local time zone on Windows
- desktop: Add Rust C ABI backend crate
- desktop: Enable notifications and gate mobile-only plugins
- desktop: Use plain folders and SQLite FFI on desktop
- desktop: Route the backend channel through Rust FFI on desktop
- desktop: Add the isDesktopPlatform check
- desktop: Add desktop platform check, scroll and theme defaults
- desktop: Set Mornye identity, icons, window size and entitlements
- desktop: Add generated macOS, Windows and Linux runners
Bug Fixes
- linux: Declare desktop entry spec 1.4 for the release validator
- metadata: Write M4A tags into FLAC-in-MP4 files
- home: Keep feed layout stable during extension startup
- player: Keep transport aligned during parent resizing
- progress: Avoid retained curve listeners on updates
- library: Serialize native folder watcher lifecycle
- macos: Synchronize mini player window transitions
- lyrics: Preserve wrapping when lines become active
- lyrics: Keep word highlights moving in inactive windows
- desktop: Steady pull to refresh on macOS and add Cmd+R
- macos: Give the Window menu the system tiling items
- Keep synced lyrics running while the window is unfocused
- Keep the album page on top when Go to Album names it
- desktop: Open the lyrics panel already on the playing line
- desktop: Keep full screen lyrics steady while the panel toggles
- material: Return Library section headers to the start edge
- player: Keep the transport inside its row while it resizes
- desktop: Put delete beside Remove RG in the selection toolbar
- desktop: Keep a right-click selection to its menu
- desktop: Keep Space for playback next to button groups
- library: Look up artists in the search provider for downloads
- desktop: Present Material song menus and sheets as desktop surfaces
- linux: Build FFmpegKit without its bundle on arm64
- android: Avoid Samsung Vulkan crash on SM-S711B Android 16
- windows: Pin flutter_rust_bridge to the version smtc_windows uses
- history: Use single-quoted empty strings in path queries
- desktop: Open the Downloads page from the downloads popover
- player: Keep the no-lyrics state above the Mornye controls
- metadata: Let the lyrics box span the card
- backup: Preserve extension repository for automatic restore
- settings: Close the orphan cleanup dialog from its own navigator
- desktop: Register mornye:// from portable and AppImage copies
- equalizer: Wrap presets on desktop instead of clipping them
- desktop: Bind Discord presence to the player
- library: Keep scanning when a row has no scan time or is invalid
- player: Preserve audio information from track metadata
- player: Skip tracks with mini player swipes
- desktop: Hide scrollbars where they add clutter
- shell: Keep the open tab when switching styles
- desktop: Shape loading skeletons like the loaded tables
- lyrics: Drop singer marks from lyrics picker previews
- library: Give the Mornye overview rows their own Material
- desktop: Skip the held liquid lens on Mornye segmented controls
- library: Start desktop grid covers larger
- lyrics: Size Material lyrics for the desktop panel
- player: Stretch the desktop Material transport to the timeline
- metadata: Enlarge the desktop cover and show the lyrics box scrolls
- desktop: Line the album header artwork up with the content
- settings: Line extension links up with the other rows
- lyrics: Match lrc.red recordings and collaborators
- lyrics: Keep line timers aligned with playback
- playback: Seek FLAC accurately on macOS and iOS
- lyrics: Reach far lines taller than the Material row estimate
- desktop: Keep the Mornye sidebar in every window size
- desktop: Keep the selection bar over the pages and bounded
- desktop: Play or open a row on a single click
- library: Open song details on a desktop click
- metadata: Center the Mornye quality row and header buttons
- desktop: Round Mornye detail artwork with continuous corners
- desktop: Let macOS and Linux pick library folders
- downloads: Keep finalized FLAC paths and container names consistent
- library: Prune stale NAS rows outside failed scan paths
- library: Recognize NAS connection aliases in duplicate review
- desktop: Line the rail menu icon up with the destinations
- onboarding: Leave the former app name out of the tour
- desktop: Give every page the same full-pane width
- desktop: Switch theme styles without remounting the app
- desktop: Run Home's feed across the whole content pane
- desktop: Drop the Material search bar and widen rail pills
- settings: Select Mornye desktop categories with a quiet gray fill
- desktop: Pass the app version to the Rust backend
- desktop: Keep extension storage migration out of the user's Documents
- desktop: Keep the profile photo in the app support folder
- desktop: Keep download rows in the queue header's column
- settings: Keep the profile page open after Save in the desktop pane
- desktop: Report crashes only with evidence and keep one macOS instance
- settings: Align the extension overview with its settings groups on wide panes
- desktop: End the diagnostics session before an update quits
- extensions: Confine extension files and packages on Windows
- rust: Gate unix filesystem calls for Windows builds
- desktop: Report the desktop platform to native jobs and logs
Performance
- player: Stop artwork readback in hidden views
- desktop: Pause word animation in hidden lyrics panels
- library: Remove per-frame scrollbar hide timers
Documentation
- theme: List the player artwork theme
- licenses: Add the LGPL 3.0 text for FFmpegKit and desktop FFmpeg
- licenses: Add the FFmpeg LGPL notice and source offer
Testing
- perf: Wait for rendered lyrics progression
- playlists: Cover scrolling a large local collection
- desktop: Close stream controllers and drop an unused import
- playback: Play a generated tone through the macOS deck
- desktop: Cover the desktop shell, player bar and shortcuts
- desktop: Document the bundled library in the smoke test
- desktop: Smoke test the Rust FFI backend on a desktop host
Chores
- Update AltStore source to v5.2.1 by @github-actions[bot]
- settings: Use null-aware subtitle element
- Remove redundant comments across the codebase
- desktop: Build the Linux bundle for arm64 as well
- release: Bump app to 5.2.5 build 164
- desktop: Pin Windows to VS 2022 and unblock GStreamer on Linux
- branding: Point links and packaging at mornyeapp/Mornye
- release: Bundle the LGPL FFmpeg in desktop release packages
- desktop: Stage and verify the bundled LGPL FFmpeg
- release: Build and publish desktop packages
- desktop: Build the macOS, Linux and Windows apps
Build
- desktop: Move bundled FFmpeg to 9.0
- macos: Sign with a stable self-signed identity when available
- desktop: Bundle the staged ffmpeg and ffprobe in desktop apps
- ffmpeg: Build a universal LGPL FFmpeg with soxr for macOS
- packaging: Add dmg, AppImage, deb and Inno Setup packaging
- desktop: Add script to stage LGPL ffmpeg and ffprobe
- desktop: Install the Rust library in the Linux and Windows bundles
- desktop: Bundle the Rust library into the macOS app
- desktop: Stage the desktop library from build_rust_backend.sh
Full Changelog: v5.2.1...v5.2.5
Downloads
Android
- arm64:
Mornye-v5.2.5-arm64.apk(recommended for modern devices) - arm32:
Mornye-v5.2.5-arm32.apk(older devices) *.apk.idsig: V4 signatures foradb install --incrementalonly; normal installs do not need them
iOS
- iOS:
Mornye-v5.2.5-ios-unsigned.ipa(sideload required)
SHA256SUMS.txt lists the SHA-256 of every file above.
Installation
Android: Enable "Install from unknown sources" and install the APK
iOS: Use AltStore, Sideloadly, or similar tools to sideload the IPA