Skip to content

Releases: dddevid/Musly

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

v1.0.2

05 Jan 00:42

Choose a tag to compare

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_launcher for 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

02 Jan 21:46
80d7049

Choose a tag to compare

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:

  1. Visit the Issues page
  2. Use the appropriate bug report template
  3. Provide as much information as possible (operating system, version, steps to reproduce)

Your feedback is valuable for improving Musly's stability.

Links

v1.0.0-beta

01 Jan 01:26

Choose a tag to compare

v1.0.0-beta Pre-release
Pre-release