Skip to content

feat(player): configurable play/pause fade duration#1

Closed
JenteJan wants to merge 1 commit into
developfrom
feat/configurable-pause-fade-duration
Closed

feat(player): configurable play/pause fade duration#1
JenteJan wants to merge 1 commit into
developfrom
feat/configurable-pause-fade-duration

Conversation

@JenteJan

@JenteJan JenteJan commented Jun 8, 2026

Copy link
Copy Markdown
Owner

What

Adds a "Play/pause fade duration" setting (0–1000 ms) under the existing Play/pause volume fade toggle in Settings → Player.

Why

The play/pause volume fade was hardcoded to 175 ms. On pause that delays the actual mpv pause until the fade completes, so toggling playback feels sluggish vs. native players (mpc/mpv). The fade is a deliberate feature for music, so rather than removing it this exposes its length as a setting.

Behaviour

  • Default stays 175 ms — no change out of the box.
  • Set to 0 ms (or any value shorter than one fade step) → the fade is skipped and play/pause hits mpv immediately for an instant, snappy response.
  • The existing toggle still fully disables the fade.

Notes

  • Pure additive setting; fade-enabled path is unchanged.
  • Generated freezed/json files updated; English l10n string added (other locales fall back to English until translated).

Draft — opened against my fork's develop for review before sending upstream.

@JenteJan JenteJan changed the base branch from develop to maktep June 8, 2026 06:04
@JenteJan JenteJan changed the base branch from maktep to develop June 8, 2026 06:04
The play/pause volume fade was hardcoded to 175ms, which delays the
actual mpv pause until the fade completes and makes toggling playback
feel sluggish compared to native players like mpc/mpv.

Expose the fade length as a 'Play/pause fade duration' setting (0-1000ms)
shown beneath the existing fade toggle. A value of 0 (or any duration
shorter than one fade step) now skips the fade entirely and hits mpv
immediately for an instant, snappy response. Default stays at 175ms to
preserve current behaviour.
@JenteJan JenteJan force-pushed the feat/configurable-pause-fade-duration branch from 3f15767 to 1fcea7d Compare June 8, 2026 06:20
@JenteJan

JenteJan commented Jun 8, 2026

Copy link
Copy Markdown
Owner Author

Superseded by DonutWare#1020 (opened upstream).

@JenteJan JenteJan closed this Jun 8, 2026
JenteJan added a commit that referenced this pull request Jun 16, 2026
DLNA (and the default Chromecast receiver) now show the item's backdrop behind
the cast badge, matching the Jellyfin receiver — in both the fullscreen player
and the minimized bar. Collapse four near-duplicate placeholder widgets
(_CastingPlaceholder x2, _RemotePlaybackPlaceholder, _WebCastPlaceholder) into
one shared CastingPlaceholder; thread the current item's image into the DLNA
and default-receiver players via cast_provider._currentItemImage().
JenteJan added a commit that referenced this pull request Jun 16, 2026
…DonutWare#9)

Video AirPlay goes through the AVPlayer-backed list-tile; the native
AVRoutePickerView icon only routes audio (which we don't want) and was
confusing alongside it. Remove the icon from the picker and the
AirPlayRouteButton widget; the 'AirPlay' tile is now the single, clear entry
('Play video on an Apple TV'). The native AirPlayRouteView platform views
(ios/macos) are now unused and can be deleted in a follow-up.
JenteJan added a commit that referenced this pull request Jun 16, 2026
…ow-up)

The AirPlay entry tapped, then connected to nothing until a route was picked.
Now the iOS AirPlay row is the native AVRoutePickerView (video targets first):
tapping it opens Apple's device sheet, and the native side reports route
selection (AVAudioSession airPlay output) over a method channel. We swap to the
AVPlayer player only when a device is actually selected, and disconnect when
it's deselected — so cancelling the dialog leaves nothing connected. macOS keeps
the existing list-tile path. Builds on iOS; needs device validation that the
route-change detection fires as expected.
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