Repository navigation
Releases
Release v26.9.4
This release brings Siri and Shortcuts to Minidisc, including Siri AI integration on iOS 27 for searching and playing your music library.
Siri and iOS 27
- Ask Siri to find and play songs, albums, artists, and playlists from your active Minidisc server.
- Added Siri AI integration on iOS 27 using Apple's audio schemas, with support for shuffle, repeat, play-next, and add-to-queue requests.
- Standard Siri music commands and Shortcuts remain available on iOS 26.1 and later.
Shortcuts and automations
- Added seven actions: Play Music, Play a Mood, Smart Shuffle, Resume Playback, Pause Playback, Next Track, and Previous Track.
- Choose a song, album, artist, or playlist in Play Music, with optional shuffle.
- Combine Minidisc actions with personal automations, such as starting a Mood playlist when a Focus is enabled.
- Actions can run in the background and use the app's existing playback and downloaded-music support.
Settings and languages
- Added Siri authorization controls in Application settings, with access to iOS Settings to manage or revoke permission.
- Localized action labels, shortcut phrases, Siri examples, and permission text in all nine app languages.
Siri AI availability depends on the device, language, and system configuration. Open Minidisc and connect to a server before using its music actions.
Full Changelog: v26.9.3...v26.9.4
Release v26.9.3
This release introduces smoother player transitions and artwork-based backgrounds, improves playback recovery and audio caching, adds compatibility with Navidrome 0.64, and refines Discover and Settings.
Player and appearance
- Added a native mini-player accessory that expands into the full player while preserving Minidisc’s controls and layout.
- Improved opening, closing, and drag-to-dismiss transitions, including the final handoff back to the mini-player.
- Fixed exposed page edges and the bright outline around the expanded player. The background now covers the full screen.
- Refined dynamic backgrounds using color bands sampled from artwork, while preserving readable playback controls.
Playback and audio reliability
- Fixed an issue where loading a replacement audio item could overwrite the saved listening position with zero.
- Playback preserves the listening position while replacement items load and seek, for both remote streams and local files.
- If restoring the saved position fails, playback stops safely instead of replaying the beginning. Pressing Play retries from the saved position.
- Prevented repeated playback callbacks from validating recovery before the position has been restored.
- A stalled stream can now recover sooner using a completed downloaded or cached copy, including offline, without contacting the server or losing the listening position.
Audio cache and diagnostics
- Fixed cache downloads inheriting an estimated stream length, which could prevent transcoded tracks from being stored correctly.
- Applied the cellular-cache preference to download requests so it remains effective across network changes.
- Added cache transfer outcomes to playback diagnostics and removed duplicate network-path notifications from the timeline.
- Improved audio format detection so raw AAC streams are correctly identified and cached instead of being mistaken for MP3 or MP4.
Navidrome 0.64 compatibility
- Added support for the identifier changes introduced in Navidrome 0.64.0, following Navidrome PR #5824.
- Adapted legacy local references only for affected accounts on confirmed Navidrome 0.64 or newer servers. Other servers and MusicBrainz identifiers are unaffected.
- Preserved downloaded audio and playback position while refreshing stale local catalogue metadata when necessary.
- Prevented temporary artwork responses marked as non-cacheable from being stored as permanent covers.
Mood playlists
- Added an Application setting to enable or disable automatic mood playlist generation, plus a button to regenerate the playlists manually.
- Added a button to delete generated mood playlists, with confirmation. Deletion also disables automatic generation to prevent immediate recreation.
- Fixed Discover linking to outdated mood playlist references when an existing playlist was still available on the server. Mood discovery now reconciles server playlists independently of automatic generation.
- Replaced album collages in Discover’s mood cards with dedicated gradient artwork and a symbol for each mood, also available offline.
Discover and Settings
- Hidden generated Minidisc mood and Wrapped playlists from Home’s “Your Playlists” section, including cached entries. They remain available in Discover and the library.
- Made Wrapped and Internet Radio cards square to match the other cover cards.
- Moved Internet Radio station names below the artwork, using the same title style as other cards.
- Added “Leave a Review” as the first item in About, opening Minidisc’s App Store review page.
- Removed the redundant server URL below the Server section in Settings.
Sharing and stability
- Corrected the App Store link used when sharing Minidisc from Settings.
- Expanded regression coverage for playback recovery, cache requests, player gestures, mini-player restoration, Navidrome compatibility, and mood playlist recovery.
Full Changelog: v26.9.1...v26.9.3
Release v26.9.1
This release brings stronger playback recovery, reliable background downloads, faster library browsing, and richer discovery, alongside redesigned playlist, album, and artist pages.
Playback and audio reliability
- Fixed an issue where an iOS audio-service reset could leave both the current track and subsequent tracks unable to play.
- Playback now recreates the audio engine and automatically restores the current track and position when the original audio output is available.
- Recovery respects intentional pauses and newer playback commands, and avoids unexpectedly switching from headphones to the iPhone speaker.
- Improved network recovery, next-track preloading, gapless playback, and crossfade transitions.
- Fixed brief, misleading “Reconnecting” messages during normal track changes.
- Tracks confirmed as removed from the server are now skipped safely. Temporary connection failures are handled separately from deleted music.
Home and Discover
- Home now prioritizes recently updated playlists, keeping automatically refreshed Navidrome playlists prominently displayed.
- Added personalized shelves based on favorites, listening history, and library additions.
- Added Stations for You, with artist-based mixes drawn from your favorites and listening habits.
- Redesigned Smart Shuffle with a more expressive card featuring artwork from your library.
- Empty Fresh Releases sections are now hidden.
- Removed the duplicate Now Playing card from Home.
Search and library
- Added a persistent local library index for faster browsing, searching, and more consistent offline access.
- Improved search ranking, with exact matches prioritized and a dedicated top result.
- Added playlist search and All, Songs, Albums, Artists, and Playlists filters.
- The search field is now visible immediately when opening Search.
- Improved selection controls so they no longer overlap search filters.
- Added alphabetical navigation to Albums, Artists, Favorites, and Downloads, including grid layouts and downloaded collections.
Playlists and queue
- Redesigned playlist pages with full-width artwork, a continuous background, refined playback controls, and more compact track rows.
- Added a consistent Featured Artists carousel using the same presentation as Similar Artists.
- Deleted playlists now display a clear explanation while preserving their downloaded music.
- Added multi-song selection across search results, albums, playlists, and the song library.
- Improved Add to Playlist with searchable destinations, recent choices, and safer duplicate handling.
- Failed additions and edits retain their selections or drafts for retry.
- Added native song swipe actions and improved queue reordering.
- Queue removals can now be undone without restarting playback, and the full queue can be saved as a playlist.
- Removed misleading queue headings and source information.
Downloads and offline access
- Added a persistent background download queue that retains pending work across app relaunches.
- Downloads now show clearer waiting, downloading, processing, and failure states, with Retry and Cancel actions.
- Improved recovery when download completion or file processing is interrupted.
- Removing or cancelling one collection now preserves tracks still needed by another album or playlist.
- Home retains its last saved content offline, separately for each server.
Artist pages, lyrics, and sharing
- Refreshed album and artist pages with improved layouts, release browsing, recommendations, and artist information.
- Added interactive track-skip gestures in the player.
- Added a Get Info sheet for track metadata and audio format.
- Added public track sharing through compatible Navidrome servers, with a metadata fallback when sharing is unavailable.
- Added LRCLIB lyrics support, including automatic fallback when server lyrics are unavailable.
- Added Auto, Navidrome, and LRCLIB lyrics-source settings, with improved synchronized lyrics parsing and caching.
Interface and stability
- Refined navigation titles, mini-player control placement, spacing, and artwork presentation.
- Improved Dynamic Type layouts, VoiceOver labels, and touch targets.
- Improved refresh behavior after playlist changes and reduced stale asynchronous updates.
- Fixed build compatibility for newer gesture APIs when using older Xcode versions.
- Expanded playback diagnostics and regression coverage for audio recovery, downloads, search, playlist editing, and queue actions.
Full Changelog: v26.8.3...v26.9.1
Release v26.8.3
This release includes all changes originally planned for v26.8.2, alongside major playback reliability improvements, a redesigned player, a new Recently Added playlist, and corrected ReplayGain handling.
Playback and network reliability
- Improved recovery after Wi‑Fi and cellular switches, temporary connection losses, and AirPods or audio-route handovers.
- Playback now rebuilds stale network resources while preserving the current queue and position.
- Active playback resumes automatically after recoverable interruptions, while intentionally paused playback remains paused.
- Improved server connection and cache invalidation when the network or active server configuration changes.
- Added a privacy-safe Playback Diagnostics report under Settings → Application → Debug.
Player and interface
- Redesigned the full-screen player with an Apple Music-inspired layout.
- Album artwork is now displayed as an inset square without cropping.
- Added a smoother adaptive gradient between the artwork and player controls.
- Improved contrast, control spacing, and remaining-time display.
- Fixed mini-player and toolbar colours to follow the system Liquid Glass appearance.
- “Add to Playlist” now appears correctly above the full-screen player.
- Duplicate confirmation and cancel actions now use neutral system colours.
- Accent colours are now limited to relevant interactive elements.
Library and audio
- Added a Recently Added smart playlist containing tracks from the newest albums.
- Added playback, shuffle, download, and pull-to-refresh support to Recently Added.
- Corrected ReplayGain handling for track and album gain tags.
- Improved fallback between ReplayGain modes, peak handling, preamp application, and clipping prevention.
- Refreshed playback translations and restored Gapless terminology across supported languages.
Stability
- Added typed and versioned server connections to prevent stale clients after configuration changes.
- Improved recovery when application services fail during startup.
- Added regression coverage for network recovery, ReplayGain, Recently Added, playlist additions, and playback diagnostics.
Full Changelog: v26.8.1...v26.8.3
Release v26.8.1
This release brings Swift 6, stronger concurrency safety, improved network-change recovery, refreshed playlist customization, and new Lidarr queue actions.
Playback and network reliability
- Fixed an issue already present before the Swift 6 migration where switching between Wi‑Fi and cellular could leave a playlist unable to resume or advance until the app was restarted.
- Network-bound playback resources are now rebuilt after a connection change while preserving the current queue and position.
- Paused playback remains paused during network transitions.
- Improved next-track preloading and crossfade handling when the active network changes.
- Improved Lock Screen artwork delivery and Now Playing reliability.
Swift 6 and concurrency
- Migrated the entire project to Swift 6 with complete strict concurrency checking.
- Improved actor isolation, cancellation handling, and
Sendableboundaries throughout the app. - Strengthened concurrent artwork loading, downloads, library operations, playlist synchronization, background updates, and ListenBrainz submissions.
- Reduced duplicate work and stale asynchronous updates across caches and services.
- Added extensive concurrency and regression coverage.
Playlists and interface
- Added a new collection of mesh gradients for playlist covers.
- Added custom playlist theme colours with an option to restore the colour extracted from the cover.
- Playlist tracks can now be sorted by playlist order, title, artist, or album.
- Improved playlist creation, editing, song selection, and cover customization.
- Gradient covers now update their rendered title after renaming a playlist.
- Refined buttons, spacing, menus, toolbars, and accent colours throughout the app.
Lidarr
- Added a detailed view for Lidarr queue items with clearer status, progress, size, remaining time, and error information.
- Added manual import actions for blocked or failed imports.
- Added copy and move options for manual imports.
- Queue items can now be removed with options to remove them from the download client, blocklist the release, or search for a replacement.
- Improved handling of Lidarr download, import, warning, and failure states.
(Still awaiting Apple's review for App Store availability.
Full Changelog: v26.7.2...v26.8.1
Release v26.7.2
This release focuses on playback reliability, smoother transitions, safer offline downloads, and a more native iOS experience.
Playback and seeking
- Fixed seeking on lossless files: FLAC tracks now resume exactly where the scrubber was dropped instead of landing up to a minute away.
- Rapid consecutive seek requests now reliably land on the latest requested position.
- Fixed tracks continuing to play after the progress bar had already reached the end.
- Playback duration now follows the actual audio stream more accurately instead of relying only on server metadata.
- Fixed duplicate, premature, and missed end-of-track transitions.
- Reaching the end of a queue now stops playback cleanly. Pressing Play afterwards restarts the queue from its first track.
- Improved Previous, Next, Repeat One, Repeat All, Shuffle, and restored-queue behavior.
- Playback now starts faster and resumes more reliably after background interruptions.
- Improved handling of phone calls, Siri, AirPods disconnections, Bluetooth, and AirPlay routes.
- Disconnecting headphones no longer risks resuming playback through the iPhone speaker.
Crossfade, gapless playback, and ReplayGain
- Improved next-track preloading for more reliable crossfades, including on slow connections and large lossless files.
- Fixed volume changes during crossfades when ReplayGain is enabled.
- ReplayGain is now applied to the incoming track from the beginning of the transition.
- Consecutive tracks from the same album can remain back-to-back instead of being crossfaded.
- Downloaded gapless albums now trim small amounts of encoder silence at track boundaries.
- Changing Crossfade or ReplayGain settings during playback now applies cleanly to the next transition.
- Added clearer playback diagnostics for Crossfade, ReplayGain, seeking, and duration mismatches.
Lock Screen and Control Center
- Improved synchronization of playback position and state with the Lock Screen and Control Center.
- Fixed stale artwork appearing after quickly changing tracks.
- Artwork is preserved correctly after pausing or seeking.
- Remote Play, Pause, Previous, Next, seek, and favorite commands now follow the current track more reliably.
- Radio streams now correctly hide or disable seek, Previous, and Next controls.
- Now Playing information is cleared after a full player stop.
Session restoration and listening history
- Restored sessions no longer start playing or take over an audio route until Play is explicitly pressed.
- Playback resumes more reliably from the saved position without briefly playing from the beginning.
- A queue restored after reaching its end now restarts from the first track.
- Radio playback no longer overwrites the last saved music session.
- Listening time, statistics, and scrobbling now use actual decoder progress.
- Pauses, buffering, and seek jumps are no longer counted as listened time.
- ListenBrainz submissions remain limited to one scrobble per completed threshold.
Downloads and offline library
- Large lossless downloads are no longer limited by the previous 30-second resource timeout.
- Improved cancellation, retry, and concurrent download handling.
- Added stronger validation for missing, empty, or incomplete downloaded files.
- Improved support for MP3, FLAC, M4A, and server-provided audio containers.
- Removing a downloaded album now preserves tracks still required by downloaded playlists.
- Removing a playlist preserves tracks still required by an album or another playlist.
- Individual track removal now updates related album and playlist metadata consistently.
- “Clear All Downloads” is now handled as one atomic operation.
- Offline albums, artists, and playlists now use a centralized and more reliable local library reader.
- Improved offline ordering, persistence, and multi-server isolation.
Interface improvements
- Home, Discover, Library, and Lidarr now use native iOS navigation titles and toolbars.
- Added an application theme setting with System, Light, and Dark options.
- Refreshed the onboarding screen with a new animated MiniDisc cartridge.
- Improved the Favorites Play and Shuffle controls.
- Alphabet indexes now handle accented names correctly and group unsupported scripts under
#. - Improved artwork loading to avoid duplicate network requests and reduce playback stutter.
Lidarr
- Added Grid and List layouts for the Lidarr artist library.
- Added sorting by artist name or album count.
- Added native toolbar actions for activity, sorting, layout, and adding artists.
- Fixed unreliable tap areas on glass buttons.
- Fixed oversized or incorrectly cropped Lidarr artist images.
- Improved fallback selection when Lidarr does not provide a poster image.
Integrations and reliability
- Credential updates are now written atomically to the Keychain.
- Failed server edits restore the previous credential state.
- Editing custom headers or server credentials no longer removes an existing AudioMuse token.
- Improved support for self-hosted ListenBrainz-compatible servers that do not return a username.
- Disconnecting ListenBrainz now clears all stored account and server information.
- Authentication headers are no longer forwarded to third-party radio hosts.
- Fixed the background task identifier used for Wrapped updates.
- Removed obsolete diagnostics and dead code, and expanded automated and manual playback coverage.
Full Changelog: v26.7.1...v26.7.2
🎉 Initial release
🎉 Welcome to Minidisc: a fast, native iPhone player for your own Navidrome, Subsonic, or OpenSubsonic library.
What is Minidisc?
Minidisc is a music player for iOS, written in Swift and SwiftUI, that plays the music from your own server. It uses the Subsonic and OpenSubsonic API, so it works with Navidrome and with other servers that follow these standards.
Minidisc does not use accounts or subscriptions, and it does not track you, so your music stays between your device and your server. It gives you the same smooth experience as Apple Music, but it plays the music that you own.
An opinionated fork
Minidisc is a fork of Cassette, which Mathieu Dubart wrote as a good client for iOS and macOS. Minidisc takes a different, narrower path, and it follows four rules:
- iOS only. Minidisc does not support macOS, because each screen is made for the phone.
- Opinionated. Minidisc has few settings and good defaults, because it makes the decisions for you and keeps the interface simple.
- Smooth first. Minidisc adds a function only when the function feels as good as Apple Music.
- Familiar. The tab bar, the mini-player, the player screen, and the Home shelves use the usual iOS patterns, so you do not have to learn them.
If you want the largest set of functions on Mac and iPhone, use Cassette. If you want the simplest iOS player for your own library, use Minidisc.
Features
- Gapless playback, crossfades, and ReplayGain
- Offline downloads and lossless streaming
- Lyrics, AirPlay, and full background playback
- Lidarr integration to grow your collection from your phone
- ListenBrainz scrobbling and AudioMuse-AI mood playlists
- No accounts, no tracking, your music stays between your phone and your server
Acknowledgments
- Cassette by Mathieu Dubart, because Minidisc is a fork of Cassette.
- The Navidrome team, because Navidrome is an excellent self-hosted music server.
- The OpenSubsonic community, because they modernized the Subsonic API.