Skip to content

fix: queue swipe choices, playlist library moves, offload on pause, likes order and group reordering - #1371

Merged
A-EDev merged 9 commits into
mainfrom
fix/music-offload-queue-likes-groups
Oct 20, 2026
Merged

A-EDev merged 9 commits into
mainfrom
fix/music-offload-queue-likes-groups

Conversation

@A-EDev

@A-EDev A-EDev commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Each side of a swipe on a song in Up next is now a setting (Play next, Move to end or Remove from queue) under Player appearance, Music player. Left defaults to Play next and right to Remove, and a removed song can be put back with Undo.
  • Subscription groups move as soon as you drag them, and the new order is saved once when you drop. The handle has a 48 dp target and Move up and Move down accessibility actions.
  • Likes restored from a backup or synced from another device keep their like order, and liked lists are read newest first by like date, so lists already restored in reverse order put themselves right.
  • A Google Takeout import puts a playlist in Music when most of its items are known music. Any saved playlist can move between Music and Videos from its menu.
  • Once music has been paused for 12 s while offloaded, the player leaves audio offload so the paused track is released, and offload comes back on resume. A speed or pitch that is not 1 also keeps offload off.
  • The playlist and music collection page states move into their own files, since both view models were close to the 600-line ceiling.

Related issue

Closes #1361
Closes #1364
Closes #1365
Closes #1367
Closes #1368

Change type

  • Bug fix
  • Feature
  • Refactor or maintenance
  • Build, packaging, or CI
  • Documentation

Validation

  • ./gradlew :app:assembleGithubDebug passed
  • ./gradlew :app:testGithubDebugUnitTest passed: 4,252 tests in 682 classes, 0 failures, 3 skipped
  • I ran any additional flavor-specific build or test tasks affected by this change: ./gradlew ktlintCheck and ./gradlew :app:compileFossDebugKotlin passed
  • I manually tested the affected behavior on an Android device or emulator: queue swipes with both settings, Undo, radio rows, group reordering, and moving a playlist to Music and back

Test device and Android version: Xiaomi 2311DRK48G, Android 16

Screenshots or recordings

Risk and compatibility

  • Two new player preferences, queue_swipe_left_action and queue_swipe_right_action, with defaults when unset. No Room schema change: only new @Query and @Transaction DAO methods.

  • Playback: offload is switched off only after a 12 s pause while offloaded, and switched back on before playback resumes. Speed and pitch are compared to 1 within 0.0001, so a saved speed of 0.99999994 still counts as unchanged.

  • An Undo for a removed song does nothing if the queue before it has changed since the removal.

  • The change does not introduce secrets, private data, or unexpected telemetry.

  • New user-facing text uses Android string resources.

  • Dependency and lockfile changes are intentional and limited to this PR.

  • Room schema changes include the required version bump and migration, or this PR does not change the Room schema.

  • Breaking changes and upgrade steps are clearly documented.

Copilot AI balanced review requested due to automatic review settings October 20, 2026 11:43

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@github-actions github-actions Bot added player Video and audio playback ui Compose UI, theming, or Material 3 surfaces sync Device-to-device sync labels Oct 20, 2026
@A-EDev
A-EDev merged commit c3383c1 into main Oct 20, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

player Video and audio playback sync Device-to-device sync ui Compose UI, theming, or Material 3 surfaces

Projects

None yet

2 participants