Skip to content

feat: speed and volume swipes on the music player's side columns - #1407

Merged
A-EDev merged 9 commits into
mainfrom
feat/music-side-swipes
Oct 22, 2026
Merged

A-EDev merged 9 commits into
mainfrom
feat/music-side-swipes

Conversation

@A-EDev

@A-EDev A-EDev commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Music player: new switch "Speed and volume swipes" (Settings › Playback › Music, off by default). With it on, vertical swipes on the left third change speed and on the right third change volume. The middle third keeps the queue and collapse swipes.
  • The columns are the same thirds as the fullscreen video gestures. Swipes that start in the top bar band, or within 24 dp of a side edge, keep today's behaviour. Phone and upright tablet layouts only.
  • Speed uses the video speed-swipe steps (0.1x to 4x, following the "Speed step" setting, whose row now also shows when this switch is on). It applies live and saves once on release. Volume changes the system media volume with no boost. Both show the gesture HUD in the user's chosen style, placed as in the video player (top centre, the ring in the middle, the vertical bar opposite the thumb).
  • The music player now follows the player Vibration setting.
  • Translations: the Russian settings_segment_colour string had a broken placeholder (%1$) that failed TranslationFormatStringsTest; it is now %1$s.
  • Refactors: the gesture level HUD and the speed swipe moved to ui/components/shared/. SpeedSwipeDrag takes the player calls as lambdas, PlayerHaptics replaces the private silent haptics in VideoPlayerHost, and the HUD placement rule is shared by both players.

Related issue

Closes #1403

Change type

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

Validation

  • ./gradlew :app:assembleGithubDebug
  • ./gradlew :app:testGithubDebugUnitTest (4,364 tests, 0 failures)
  • I ran any additional flavor-specific build or test tasks affected by this change. (./gradlew :app:compileFossDebugKotlin, ./gradlew ktlintCheck, python3 .github/scripts/nightly_notes.py --check)
  • I manually tested the affected behavior on an Android device or emulator.

Test device and Android version: POCO X6 Pro 5G (2311DRK48G), Android 16

Screenshots or recordings

Risk and compatibility

  • New preference key music_side_swipes, default off. With it off the music player's gestures are unchanged.

  • The side-swipe handler listens in the Initial pointer pass and consumes only after vertical touch slop, so taps, the seek bar and the cover's sideways swipe are untouched.

  • The Vibration setting now also silences the music player, which used to vibrate regardless.

  • No Room schema change.

  • 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 22, 2026 15:02
@github-actions github-actions Bot added documentation Improvements or additions to documentation ui Compose UI, theming, or Material 3 surfaces labels Oct 22, 2026

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 the localization Translations and locale resources label Oct 22, 2026
@A-EDev
A-EDev merged commit 6dff59b into main Oct 22, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation localization Translations and locale resources ui Compose UI, theming, or Material 3 surfaces

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Resolve gesture collisions by confining queue/mini-player gestures to the center column

2 participants