Skip to content

v3.0.0

Latest

Choose a tag to compare

@VehicleEducational34 VehicleEducational34 released this 20 Aug 10:56
  1. Playback UI Stabilization (Flashing Fix)
    Positional Recomposition Fix: Stabilized the layout tree by wrapping the conditional Artist Background Layer in a dedicated Box in AppUI.kt. This ensures its insertion or removal doesn't shift the structural index of the primary UI Column.
    State Identity Fix: Assigned a precise contentKey = { it.id } to the AnimatedContent component mapping the album art. This anchors transitions strictly to the track identity rather than property updates (such as lyrics), preventing spurious transitions or flashing mid-playback.

  2. Chameleon Volume Controls
    Created ChameleonVolumePopup.kt, which introduces a new custom volume slider popup overlay.
    This UI component natively hooks into your custom accent engine to dynamically match the volume slider's color to the currently playing album artwork or the selected app theme.

  3. Permissions Modernization
    Updated PermissionHelper.kt and AndroidManifest.xml to properly handle Android 13+ (Tiramisu) strict permission boundaries.
    Added specific logic to request READ_MEDIA_AUDIO for modern devices instead of legacy generic storage permissions, and correctly configured POST_NOTIFICATIONS so the background MusicService can run properly without being killed by the system.

  4. History & Analytics Polish
    Updated HistoryAnalyticsUI.kt to refine the listening statistics views and the "Year in Review" feature.
    Added sharing capabilities (a "COPY CARD" action) allowing users to easily share or save their listening persona and stats card.

  5. Architecture & State Management
    Updated MusicViewModel.kt to wire up the new volume popup state and handle the new permission flows.
    Updated build.gradle.kts and libs.versions.toml to inject testing dependencies (like Robolectric and Roborazzi) and configure KSP (Kotlin Symbol Processing) to ensure the Room database and analytics queries compile optimally.