Skip to content

Releases: dddevid/Musly

Musly v1.0.13

10 May 21:58

Choose a tag to compare

🎉 Musly v1.0.13

📦 Downloads

Android:

  • app-release.apk (universal APK for all devices)

iOS:

  • musly-ios.ipa (sideload with AltStore, Sideloadly, or similar — not signed)

Windows:

  • musly-setup.exe (setup installer, run to install Musly)
  • musly-windows.zip (portable version, extract and run)

macOS:

  • musly-macos.dmg (drag Musly.app to Applications — not notarized)

Linux:

  • musly-linux-x64.tar.gz (extract and run musly)

📝 Changelog

See CHANGELOG.md

🌍 Translations

Contribute translations at Crowdin

Musly v1.0.12

09 May 16:47

Choose a tag to compare

🎉 Musly v1.0.12

📦 Downloads

Android:

  • app-release.apk (universal APK for all devices)

iOS:

  • musly-ios.ipa (sideload with AltStore, Sideloadly, or similar — not signed)

Windows:

  • musly-setup.exe (setup installer, run to install Musly)
  • musly-windows.zip (portable version, extract and run)

macOS:

  • musly-macos.dmg (drag Musly.app to Applications — not notarized)

Linux:

  • musly-linux-x64.tar.gz (extract and run musly)

📝 Changelog

See CHANGELOG.md

🌍 Translations

Contribute translations at Crowdin

Musly v1.0.11

04 May 20:21

Choose a tag to compare

🎉 Musly v1.0.11

📦 Downloads

Android:

  • app-release.apk (universal APK for all devices)

iOS:

  • musly-ios.ipa (sideload with AltStore, Sideloadly, or similar — not signed)

Windows:

  • musly-setup.exe (setup installer, run to install Musly)
  • musly-windows.zip (portable version, extract and run)

macOS:

  • musly-macos.dmg (drag Musly.app to Applications — not notarized)

Linux:

  • musly-linux-x64.tar.gz (extract and run musly)

📝 Changelog

See CHANGELOG.md

🌍 Translations

Contribute translations at Crowdin

Musly v1.0.10

04 May 15:19

Choose a tag to compare

🎉 Musly v1.0.10

📦 Downloads

Android:

  • ARM64: app-arm64-v8a-release.apk (recommended for most devices)
  • ARMv7: app-armeabi-v7a-release.apk (for older devices)
  • x86_64: app-x86_64-release.apk (for emulators)

iOS:

  • musly-ios.ipa (sideload with AltStore, Sideloadly, or similar — not signed)

Windows:

  • musly-setup.exe (setup installer, run to install Musly) (currently unavailable)
  • musly-windows.zip (portable version, extract and run)

macOS:

  • musly-macos.dmg (drag Musly.app to Applications — not notarized)

Linux:

  • musly-linux-x64.tar.gz (extract and run musly)

📝 Changelog

See CHANGELOG.md

🌍 Translations

Contribute translations at Crowdin

Musly v1.0.9

02 May 13:23

Choose a tag to compare

🎉 Musly v1.0.9

📦 Downloads

Android:

  • ARM64: app-arm64-v8a-release.apk (recommended for most devices)
  • ARMv7: app-armeabi-v7a-release.apk (for older devices)
  • x86_64: app-x86_64-release.apk (for emulators)

iOS:

  • musly-ios.ipa (sideload with AltStore, Sideloadly, or similar — not signed)

Windows:

  • musly-setup.exe (setup installer, run to install Musly) (currently unavailable)
  • musly-windows.zip (portable version, extract and run)

macOS:

  • musly-macos.dmg (drag Musly.app to Applications — not notarized)

Linux:

  • musly-linux-x64.tar.gz (extract and run musly)

📝 Changelog

See CHANGELOG.md

🌍 Translations

Contribute translations at Crowdin

Release v1.0.8

08 Mar 01:38

Choose a tag to compare

🎉 Musly v1.0.8

📦 Downloads

Android:

  • ARM64: app-arm64-v8a-release.apk (recommended for most devices)
  • ARMv7: app-armeabi-v7a-release.apk (for older devices)
  • x86_64: app-x86_64-release.apk (for emulators)

iOS:

  • musly-ios.ipa (sideload with AltStore, Sideloadly, or similar — not signed)

Windows:

  • musly-windows-setup.exe (setup installer, run to install Musly)

macOS:

  • musly-macos.dmg (drag Musly.app to Applications — not notarized)

Linux:

  • musly-linux-x64.tar.gz (extract and run musly)

📝 Changelog

See CHANGELOG.md

🌍 Translations

Contribute translations at Crowdin

Release v1.0.6

20 Feb 00:20
62f18d6

Choose a tag to compare

🎉 Musly v1.0.6

📦 Downloads

Android:

  • ARM64: app-arm64-v8a-release.apk (recommended for most devices)
  • ARMv7: app-armeabi-v7a-release.apk (for older devices)
  • x86_64: app-x86_64-release.apk (for emulators)

Windows:

  • musly-windows-setup.exe (setup installer, run to install Musly)

Linux:

  • musly-linux-x64.tar.gz (extract and run musly)

📝 Changelog

See CHANGELOG.md

🌍 Translations

Contribute translations at Crowdin

Release v1.0.5

19 Feb 18:05

Choose a tag to compare

🎉 Musly v1.0.5

📦 Downloads

Android:

  • ARM64: app-arm64-v8a-release.apk (recommended for most devices)
  • ARMv7: app-armeabi-v7a-release.apk (for older devices)
  • x86_64: app-x86_64-release.apk (for emulators)

Windows:

  • musly-windows-setup.exe (setup installer, run to install Musly)

Linux:

  • musly-linux-x64.tar.gz (extract and run musly)

📝 Changelog

See CHANGELOG.md

🌍 Translations

Contribute translations at Crowdin

v1.0.4

17 Jan 17:45

Choose a tag to compare

Changelog

All notable changes to Musly will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[1.0.4] - 2026-01-17

Added

  • Support Dialog After Login: Shows after each successful login
    • Discord community invite link (optional)
    • Donation options: Buy Me a Coffee, Bitcoin, Solana
    • 5-second timer before close button enables
    • Copy buttons for cryptocurrency addresses
  • Discord Integration in Settings: Added Discord community link to Settings → About → LINKS
  • Discord Community Section in README: Added dedicated section with Discord badge and invite link

Improved

  • Landscape Lyrics Display: Significantly improved lyrics viewing in landscape mode
    • Lyrics now occupy right 60% of screen while album art stays on left 40%
    • Created CompactLyricsView widget specifically optimized for landscape
    • Portrait mode keeps fullscreen lyrics overlay
    • Fixed overflow issues in lyrics dialog
  • Playlist Duration Calculation: Enhanced playlist screen with accurate total duration
    • Total duration now calculated from actual song lengths
    • Displays formatted duration (e.g., "12 songs • 1 hr 23 min")

Fixed

  • Homepage Loading Issue on Windows: Fixed infinite skeleton loading
    • Added 5-second timeout to server initialization calls in LibraryProvider
    • App now continues in local mode if server doesn't respond
    • Improved error handling for missing server configuration
  • Windows SMTC Error Handling: Improved error messages for RustLib initialization
    • App continues normally even if SMTC (Windows System Media Transport Controls) fails to initialize
    • Added informative debug messages explaining SMTC will be disabled

[Unreleased] - 2026-01-17

Added

  • #27 Star Rating System: Added 1-5 star rating support for songs

    • Rate songs via the song options menu (three-dot menu)
    • Rating dialog with visual star picker
    • Shows current rating in menu title
    • Uses Subsonic setRating API endpoint
    • Added userRating field to Song model
  • Landscape Mode for Full Player: New horizontal layout when device is rotated

    • Album artwork displayed on the left (40% width)
    • Song info and controls on the right (60% width)
    • Lyrics toggle replaces controls with synced lyrics on right side
    • Automatic layout switch based on screen orientation
    • Created CompactLyricsView widget optimized for landscape mode

Improved

  • Playlist & Album Screens: Enhanced with calculated total duration
    • Playlist screen now shows total duration calculated from songs (e.g., "12 songs • 1 hr 23 min")
    • More accurate duration display based on actual song lengths

Changed

  • Performance Optimizations: Migrated synced lyrics view to flutter_lyric package (v3.0.2)
    • Reduced blur effects from sigma 80 to 40 for better GPU performance
    • Added RepaintBoundary around animated backgrounds
    • Implemented position update throttling (100ms intervals)
    • Reduced image cache sizes for lower memory usage
  • Widget Optimization: Replaced Consumer and Provider.of with Selector pattern
    • SongTile: Now only rebuilds when current song changes
    • DesktopPlayerBar: Optimized controls, progress bar, and volume slider
    • Reduced unnecessary widget rebuilds across the app

Fixed

  • Synced lyrics assertion error: selectionAutoResumeDuration must be less than activeAutoResumeDuration
  • Library "Local" filter removed: Cleaned up unused local music filter from library screen
  • Storage permissions for Android 13+: Added READ_MEDIA_AUDIO and READ_MEDIA_IMAGES permissions
  • Server not configured errors: LibraryProvider now gracefully handles local-only mode without server errors

[1.0.4] - 2026-01-15

Added

  • Premium Equalizer: 10-band EQ with presets (Rock, Pop, Jazz, Classical, Bass Boost, Treble Boost, Vocal, Electronic, Hip Hop) and custom preset saving
  • Settings Categories: Reorganized settings into 5 tabs (Playback, Storage, Server, Display, About)
  • Local File Support: Play music files stored on device with automatic library scanning
  • Transcoding/Streaming Quality: Configure WiFi and Mobile bitrate settings with format selection (MP3, Opus, AAC)
  • Offline Mode: Automatic fallback to downloaded music when server is unreachable
  • Offline Playback Indicator: Orange banner shows when in offline mode

Improved

  • Synced Lyrics Display:

    • Added blur effect for non-active lines (distance-based)
    • Added glow shadow for active line
    • Improved scale animations (1.15x-1.18x for active)
    • Enhanced line spacing and visual hierarchy
    • Applied to mobile, desktop, and fullscreen views
  • Shuffle Functionality: Now properly shuffles playlist regardless of current playback state

  • Artists Tab: Now correctly displays artists when "Artists" filter is selected

  • Homepage Empty State: Added fallback message and refresh button when no content

Fixed

  • #26: Transcoding/streaming quality settings

    • Added WiFi and Mobile bitrate configuration in Server settings
    • Support for format selection (MP3, Opus, AAC)
    • Bitrate options from 64kbps to 320kbps or original quality
  • #25: Library search now works on all items, not just playlists

    • Implemented LibrarySearchDelegate that searches across playlists, albums, and artists
  • #24: Artists tab now displays content

    • Fixed _getFilteredItems to properly filter and return artists list
  • #22: Homepage shows fallback when no content available

    • Added empty state widget with refresh button when no albums/songs loaded
  • #20: Shuffle button now always shuffles instead of acting as play/pause

    • Modified shuffle logic to always shuffle the playlist, even when already playing
  • #19: Download button in playlist now downloads all songs

    • Implemented batch download functionality in playlist screen
  • #18: Play/Pause state now correctly shows only for the active playlist

    • Fixed playlist header to compare current playing context
  • #17: Lyrics scroll now uses smooth animations without line-break changes

    • Used fixed font size for all lines to prevent layout shifts
  • #16: Library search button now works

    • Connected search icon to LibrarySearchDelegate
  • #15: Swipe down to minimize player implemented

    • Added gesture detector for vertical swipe to dismiss full player
  • #14: Option to hide volume bar from player

    • Added toggle in Display settings to show/hide volume slider
  • #13: Click on album/artist name navigates to respective screen

    • Made album and artist names tappable in now playing screen
  • #12: Internet radio station support

    • Added RadioScreen with server radio stations
    • Support for streaming internet radio URLs
  • #11: All Songs view with sort options and playback

    • Added AllSongsScreen with play/shuffle buttons
  • #10: Auto-DJ feature for queue

    • Implemented smart queue that adds similar songs when queue ends
  • #9: ReplayGain support

    • Added ReplayGain toggle in Playback settings
  • #8: Progress bar freezes on rewind

    • Fixed position stream subscription to properly update on seek
  • #7: Custom TLS/SSL certificates

    • Added option to allow self-signed certificates in login
    • Added custom certificate file picker in Advanced Options
  • #5: Lyrics text stability

    • Fixed line break changes during playback by using consistent font sizing
  • #4: Music Folders support

    • Added music folder selection in Server settings
  • #3: Error messages for incorrect URL

    • Added proper error handling and snackbar messages for connection failures
  • #1: Miniplayer persists

    • Implemented nested navigator architecture to maintain miniplayer state

v1.0.3

10 Jan 01:38

Choose a tag to compare

Changelog

All notable changes to Musly will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[Unreleased]

Added

Internet Radio Support (closes #12)

  • Added full support for internet radio stations from Subsonic/Navidrome servers
  • New RadioScreen with list of all configured radio stations
  • Radio stations display with play/pause controls and "LIVE" indicator
  • Mini player shows radio station name with "LIVE" badge when streaming
  • Now Playing screen has dedicated radio player UI with streaming indicator
  • Added RadioStation model and API methods (getInternetRadioStations, createInternetRadioStation, updateInternetRadioStation, deleteInternetRadioStation)

Auto DJ - Automatic Queue Continuation (closes #10)

  • New AutoDjService for intelligent automatic queue continuation
  • 5 Auto DJ modes:
    • Off: Playback stops when queue ends
    • Shuffle Library: Add random songs from library
    • Similar Songs: Add songs similar to what's playing (via getSimilarSongs API)
    • Same Genre: Add songs from the same genre
    • Same Artist: Add more songs by the same artist (via getArtistTopSongs API)
    • Smart Mix: Intelligent mix based on tempo, genre, and listening habits
  • Configurable number of songs to add (1-20)
  • Settings UI in Settings screen under "AUTO DJ" section

ReplayGain Volume Normalization (closes #9)

  • New ReplayGainService for audio volume normalization
  • 3 modes: Off, Track (normalize each track), Album (preserve album dynamics)
  • Configurable preamp gain (-15 to +15 dB)
  • Prevent clipping option
  • Fallback gain for tracks without ReplayGain metadata
  • Settings UI under "VOLUME NORMALIZATION (REPLAYGAIN)" section

Player UI Customization (closes #14)

  • New PlayerUiSettingsService for player interface preferences
  • Option to hide volume slider from Now Playing screen
  • Settings UI under "PLAYER INTERFACE" section

Navigation Improvements (closes #1)

  • Persistent bottom nav bar and miniplayer: Navigation now preserves mini player and bottom navigation across all screens using nested navigator
  • Clickable "Playing From" album/artist names (closes #13)
    • Clicking album name in Now Playing header navigates to AlbumScreen
    • Clicking artist name navigates to ArtistScreen
    • Visual underline indicates clickable elements
  • Multiple artists support: When artist contains "/" separator (common in Subsonic), shows selection dialog to choose which artist to navigate to
  • New NavigationHelper utility for nested navigation with persistent bottom bar
  • Navigation now preserves mini player and bottom navigation when pushing screens

Swipe to Dismiss Player (closes #15)

  • Swipe down gesture on Now Playing screen to minimize player
  • Smooth morph animation: screen scales down, corners round, controls fade
  • Background visible during swipe (opaque route)
  • Velocity-based dismissal threshold

Improved Back Button Handling

  • Android back button now properly navigates through app hierarchy
  • First press: pops nested navigator (goes back in detail screens)
  • Second press: returns to Home tab if on another tab
  • Third press: exits the app
  • Uses PopScope with SystemNavigator.pop() for clean exit

Search Enhancements

  • Real-time autocomplete suggestions while typing
  • Debounced search to reduce API calls
  • Autocomplete overlay showing artists, albums, and songs
  • Radio category added to browse categories

All Songs Improvements (closes #11)

  • Added sort options for songs list
  • Play and shuffle play buttons for song collections
  • Improved playback controls in song lists

SSL/TLS Certificate Support (closes #7)

  • Support for self-signed certificates
  • Custom certificate path configuration
  • Proper certificate validation handling via IOHttpClientAdapter

Changed

  • Mini Player: Now shows for both regular songs AND radio stations
  • Now Playing Screen: Converted _PlayerControls from StatelessWidget to StatefulWidget to support dynamic volume slider visibility
  • Lyrics View (closes #5):
    • Improved scroll positioning using GlobalKey for precise line targeting
    • Better height estimation with TextPainter caching
    • Fixed waiting dots position in calculations
    • Changed to use Scrollable.ensureVisible for centered scrolling
    • Fixed text stability issues during playback
  • Settings Screen: Reorganized with new sections for Auto DJ, Player Interface, and ReplayGain
  • Search Screen: Added resizeToAvoidBottomInset: false to prevent mini player jumping with keyboard

Fixed

  • Mini player not appearing when playing radio stations
  • Removed duplicate MiniPlayer widgets from various screens (now handled centrally in MainScreen)
  • Fixed navigation from nested screens breaking mini player visibility
  • Fixed back button immediately exiting app instead of navigating back
  • Fixed pressing rewind in Now Playing screen freezing progress bar (closes #8)
  • Fixed search button in "Your Library" page not working (closes #16)

Technical

  • Added new services:
    • PlayerUiSettingsService - Player UI preferences
    • ReplayGainService - Volume normalization
    • AutoDjService (extended) - Auto DJ modes and queue continuation
  • Added new models:
    • RadioStation - Internet radio station data
  • Added new utilities:
    • NavigationHelper - Nested navigation with persistent bottom bar
  • Added new screens:
    • RadioScreen - Internet radio stations list
    • LibrarySearchDelegate - Library search functionality
  • New Subsonic API methods:
    • getInternetRadioStations()
    • createInternetRadioStation()
    • updateInternetRadioStation()
    • deleteInternetRadioStation()
    • getSimilarSongs() / getSimilarSongs2()
    • getArtistTopSongs() / getTopSongs()
    • getSongsByGenre()
  • Added file_picker dependency for future file selection features
  • Updated pubspec.yaml with new dependencies

Issue References

  • #1 - Persistent bottom nav bar and miniplayer across screens
  • #5 - Lyrics text stability
  • #7 - Support custom TLS/SSL certificates
  • #8 - Pressing rewind in "now playing screen" freezes progress bar
  • #9 - Add ReplayGain volume normalization
  • #10 - Auto-DJ for "Playing Next" automatic queue continuation
  • #11 - All Songs: Add sort options and playback (play button, shuffle play)
  • #12 - Import internet radio stations
  • #13 - Clicking on "Playing From" to go to the album or artist page
  • #14 - Option to hide volume bar from player
  • #15 - Swiping down on player's top edge to minimize the player
  • #16 - Search button in "Your Library" page doesn't work