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