Releases: dddevid/Musly
Releases · dddevid/Musly
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