Skip to content

feat: player improvements — gestures, haptics, queue, lyrics & back-handling#124

Open
Ericgacoki wants to merge 1 commit into
mainfrom
fix/player-improvements
Open

feat: player improvements — gestures, haptics, queue, lyrics & back-handling#124
Ericgacoki wants to merge 1 commit into
mainfrom
fix/player-improvements

Conversation

@Ericgacoki

Copy link
Copy Markdown
Member

A batch of player UX fixes and small features, verified on-device.

Player screen

  • Pager commits the track change on release (settledPage) instead of at the 50% point — fixes premature/unwanted track switches.
  • Seekbar seeks only on release; dragging no longer fires a flood of seek/API calls.
  • Drag the mini-player down to dismiss: clears the queue (player + VM cache) with a vibrant haptic and an Undo snackbar (hosted at the app Scaffold so it stays visible after dismiss). Axis-based, so it doesn't clash with the prev/next swipe. (ref [Feature Request] Swipe on the mini player to close #68)
  • Expanding the mini-player no longer auto-starts a paused track (replaced the racy play()/pause() seed on session reconnect with a direct state seed).
  • Central soft haptic on committed actions (play/pause, next/prev, seek-release, shuffle, repeat, favorite).

Queue sheet

  • Tapping the pinned now-playing closes the queue (exact reverse of the Queue icon); the player stays expanded.
  • Reversing a downward drag to upward pulls the sheet back up instead of the tracks list capturing it.

Lyrics

  • Reduced the progress-bar (divider) height.
  • Long-press a lyric line to copy its text.

Back navigation

  • With the player expanded over another screen, device Back minimizes the player (closing the queue first if open) instead of navigating the screen behind — the BackHandler is now registered after the NavHost so it wins.

Follow-up

…andling

Player screen:
- Pager commits the track change on release (settledPage) instead of at the
  50% point, fixing premature/unwanted track switches.
- Seekbar seeks only on release; dragging no longer fires a flood of seek/API
  calls.
- Drag the mini-player down to dismiss: clears the queue (player + VM cache)
  with a vibrant haptic and an Undo snackbar (hosted at the app Scaffold so it
  stays visible after dismiss). Axis-based, so it doesn't clash with the
  prev/next swipe (ref #68).
- Expanding the mini-player no longer auto-starts a paused track (replaced the
  racy play()/pause() seed on session reconnect with a direct state seed).
- Central soft haptic on committed actions (play/pause, next/prev,
  seek-release, shuffle, repeat, favorite).

Queue sheet:
- Tapping the pinned now-playing closes the queue (exact reverse of the Queue
  icon); the player stays expanded.
- Reversing a downward drag to upward pulls the sheet back up instead of the
  tracks list capturing it.

Lyrics:
- Reduced the progress-bar (divider) height.
- Long-press a lyric line to copy its text.

Back navigation:
- With the player expanded over another screen, device Back minimizes the
  player (closing the queue first if open) instead of navigating the screen
  behind — the BackHandler is now registered after the NavHost so it wins.

Follow-up:
- Migrate haptics off direct Vibrator calls to Compose's native HapticFeedback (#123).
@Ericgacoki

Copy link
Copy Markdown
Member Author

Fixes #68

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant