Releases: dddevid/Musly
v1.0.4
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
CompactLyricsViewwidget 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
- Added 5-second timeout to server initialization calls in
- 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
setRatingAPI endpoint - Added
userRatingfield 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
CompactLyricsViewwidget 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_lyricpackage (v3.0.2)- Reduced blur effects from sigma 80 to 40 for better GPU performance
- Added
RepaintBoundaryaround animated backgrounds - Implemented position update throttling (100ms intervals)
- Reduced image cache sizes for lower memory usage
- Widget Optimization: Replaced
ConsumerandProvider.ofwithSelectorpatternSongTile: Now only rebuilds when current song changesDesktopPlayerBar: Optimized controls, progress bar, and volume slider- Reduced unnecessary widget rebuilds across the app
Fixed
- Synced lyrics assertion error:
selectionAutoResumeDurationmust be less thanactiveAutoResumeDuration - Library "Local" filter removed: Cleaned up unused local music filter from library screen
- Storage permissions for Android 13+: Added
READ_MEDIA_AUDIOandREAD_MEDIA_IMAGESpermissions - 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
LibrarySearchDelegatethat searches across playlists, albums, and artists
- Implemented
-
#24: Artists tab now displays content
- Fixed
_getFilteredItemsto properly filter and return artists list
- Fixed
-
#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
- Connected search icon to
-
#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
RadioScreenwith server radio stations - Support for streaming internet radio URLs
- Added
-
#11: All Songs view with sort options and playback
- Added
AllSongsScreenwith play/shuffle buttons
- Added
-
#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
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
RadioScreenwith 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
RadioStationmodel and API methods (getInternetRadioStations,createInternetRadioStation,updateInternetRadioStation,deleteInternetRadioStation)
Auto DJ - Automatic Queue Continuation (closes #10)
- New
AutoDjServicefor 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
getSimilarSongsAPI) - Same Genre: Add songs from the same genre
- Same Artist: Add more songs by the same artist (via
getArtistTopSongsAPI) - 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
ReplayGainServicefor 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
PlayerUiSettingsServicefor 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
- Clicking album name in Now Playing header navigates to
- Multiple artists support: When artist contains "/" separator (common in Subsonic), shows selection dialog to choose which artist to navigate to
- New
NavigationHelperutility 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
PopScopewithSystemNavigator.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
_PlayerControlsfrom StatelessWidget to StatefulWidget to support dynamic volume slider visibility - Lyrics View (closes #5):
- Improved scroll positioning using
GlobalKeyfor precise line targeting - Better height estimation with TextPainter caching
- Fixed waiting dots position in calculations
- Changed to use
Scrollable.ensureVisiblefor centered scrolling - Fixed text stability issues during playback
- Improved scroll positioning using
- Settings Screen: Reorganized with new sections for Auto DJ, Player Interface, and ReplayGain
- Search Screen: Added
resizeToAvoidBottomInset: falseto prevent mini player jumping with keyboard
Fixed
- Mini player not appearing when playing radio stations
- Removed duplicate
MiniPlayerwidgets from various screens (now handled centrally inMainScreen) - 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 preferencesReplayGainService- Volume normalizationAutoDjService(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 listLibrarySearchDelegate- Library search functionality
- New Subsonic API methods:
getInternetRadioStations()createInternetRadioStation()updateInternetRadioStation()deleteInternetRadioStation()getSimilarSongs()/getSimilarSongs2()getArtistTopSongs()/getTopSongs()getSongsByGenre()
- Added
file_pickerdependency for future file selection features - Updated
pubspec.yamlwith 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
v1.0.2
Changelog
All notable changes to this project will be documented in this file.
[1.0.2]
Added
- Developer Section: Added a new section in Settings with developer information.
- Donation Support: Added support for donations via Buy Me a Coffee, Bitcoin, and Solana.
- Music Folders: Added support for Subsonic music folders selection in Settings.
- URL Launcher: Integrated
url_launcherfor opening external links (GitHub, Donations). - Desktop lyrics fullscreen toggle with borderless window support on Windows, macOS, and Linux.
Changed
- Server Label: Updated Settings to dynamically display the server type (e.g., Navidrome, Subsonic, Airsonic) and version.
- Listening History: Now tracks and displays individual songs instead of just albums.
- Language: Standardized all app text to English.
- Desktop lyrics layout re-centered with dynamic padding and distance-based scroll animation; mobile unaffected.
- Fullscreen lyrics view uses a simplified, larger-type layout and hides scrollbars for cleaner presentation.
Fixed
- MiniPlayer Visibility: Ensured the MiniPlayer stays visible across browsing screens (albums, artists, playlists, library, search, etc.) (fixes #1).
- Music Folders: Added selection of Subsonic music folders in Settings and applied to requests (fixes #4).
- Invalid Server URL: Now shows clear error when entering an incorrect server URL (fixes #3).
- Library Import: Addressed incomplete library import flows (fixes #2).
- Image Caching: Optimized album artwork caching with disk cache and unique cache keys to prevent unnecessary reloads.
- GridView Crash: Fixed a crash occurring when item lists were empty.
- Login Errors: Improved error handling and user feedback during login (SSL, Timeout, 404).
- Android Manifest: Updated manifest to support external URL launching on Android 11+.
- Prevented UI stalls when toggling fullscreen by making window state changes non-blocking and refocusing the window.
Performance
- Data Caching: Implemented persistent caching for Albums and Songs using SharedPreferences to improve startup time and reduce network requests.
v1.0.1 out-of-beta
Release Notes - Musly v1.0.0
Full Changelog: v1.0.0...v1.0.1
First Out-Of-Beta Release
This is the first stable release of Musly, marking its transition out of beta.
What's New
Windows Support
- Added support for Windows platform
Important Notes
Testing and Stability
This version has not been thoroughly tested across all possible configurations. As a result:
- Bugs may be present
- Some features might behave unexpectedly in certain scenarios
- Performance may vary across different hardware and software configurations
Bug Reports
If you encounter any issues or unexpected behavior:
- Visit the Issues page
- Use the appropriate bug report template
- Provide as much information as possible (operating system, version, steps to reproduce)
Your feedback is valuable for improving Musly's stability.
Links
- Repository: https://github.com/dddevid/musly
- Issues: https://github.com/dddevid/musly/issues
v1.0.0-beta
Full Changelog: https://github.com/dddevid/Musly/commits/v1.0.0