Skip to content

v1.3.7

Choose a tag to compare

@H4zh4n H4zh4n released this 12 Jul 02:00
· 169 commits to main since this release

Release v1.3.7

This release adds a repeat-mode button to the media notification, gates lossless streaming on live server availability, and fixes layout instability in the mini player's loading spinner and bottom navigation bar.

Features

  • Repeat Mode in Media Notification: The system notification now includes a repeat button alongside playback transport controls. Tapping it cycles through the tri-state repeat modes (Off → One → All → Off), with the button icon updating in real time to reflect the current mode.
  • Live Lossless Server Status: Lossless streaming now checks SpotiFLAC provider health via the spotbye status API before probing. If no lossless servers are up, playback falls through to YouTube immediately rather than waiting on dead endpoints. Server status is cached for 60 seconds and displayed underneath the streaming quality selector in Settings.

Fixes

  • Stabilized Loading Spinner: The mini player's play/pause button no longer jumps vertically when the resolve/buffering state toggles. The CircularProgressIndicator and play Icon are now wrapped in a fixed-size Box, preventing the indicator's internal M3 minimum size from causing the parent Row to re-measure on each state change.
  • Navigation Bar Clipping: The bottom navigation bar was partially pushed off-screen when the mini player was visible. The container height was increased from 130dp to 160dp, and the visual-only offset spacing was replaced with a proper layout Spacer so both the mini player and navigation bar render fully.
  • Redundant Clip Removal: The MiniPlayer's root Column no longer applies clipToBounds() on top of the existing .clip(RoundedCornerShape(8.dp)), eliminating unnecessary clipping that could crop text.

Drawables

  • Added ic_repeat_off (arrows with diagonal slash) and ic_repeat_one (arrows with "1" digit) for the notification repeat button states.
  • Fixed ic_repeat dimensions from 512dp to 24dp for correct notification icon sizing.

Release v1.3.6

Bug Fixes

  • Seekbar regression: The dependency upgrade changed the Material3 Slider appearance, breaking the Spotify-consistent seekbar design on both the full player and mini player. Replaced CustomSlider in PlayerScreen and AppComponents with a custom Canvas-drawn implementation: thin 3dp track, thumb dot visible only while scrubbing, and a subtle grow animation on touch. Also fixed a bug where dragging the seekbar before a track finished loading would display a giant negative timestamp instead of 0:00.

Release v1.3.5

This release introduces playback queue persistence across app restarts and updates core project dependencies.

Features

  • Persistent Playback Queue: The app now serializes and saves the full playback queue and current track index. Upon relaunching, the entire queue is restored rather than just the last active song, allowing playback to resume exactly where it left off.

Chores & Refactoring

  • SDK Bump: Updated compileSdk and targetSdk to 37.
  • Tooling Upgrades: Updated to Gradle 9.6.1, Kotlin 2.4.0, and AGP 9.2.1.
  • Build System: Migrated hardcoded dependency versions to Gradle version catalogs and refactored APK output naming to use the modern androidComponents API.
  • Warning Resolutions: Addressed Kotlin annotation target warnings (KT-73255) by specifying @param: targets in API and routing classes.
  • UI & Player Cleanup: Replaced deprecated icons with their auto-mirrored Compose equivalents and removed the deprecated setUseArtwork(false) call from the Media3 PlayerView.