Skip to content

v1.0.4

Latest

Choose a tag to compare

@dddevid dddevid released this 17 Jan 17:45
· 36 commits to master since this release

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