Skip to content

Glide the progress indicator through blends instead of snapping - #105

Merged
sanylax0 merged 1 commit into
mainfrom
claude/repo-review-improvements-yvk3t7-smooth-progress
Jul 19, 2026
Merged

sanylax0 merged 1 commit into
mainfrom
claude/repo-review-improvements-yvk3t7-smooth-progress

Conversation

@sanylax2

Copy link
Copy Markdown
Collaborator

What

During any blend (smooth skip or natural end-of-track transition), the progress ring and mini-player line snapped from the outgoing track's percentage to the incoming track's the instant the decks swapped.

How

New Player.displayProgress: while a transition is in flight, it interpolates between the outgoing fraction (position / duration) and the incoming fraction (incomingStartOffset + idle deck elapsed, over the incoming duration), weighted by transitionProgress. The morph tracks the audible blend exactly — by the moment finishTransition promotes the decks, the displayed value already equals the incoming fraction, so the handoff is continuous. Outside transitions it's identical to before. TrackProgressRing (Now Playing) and MiniProgressLine (mini player) both read it; the scrubber (sheet mode) intentionally keeps showing the outgoing track's real position.

Hard cuts (paused skip, sub-1s-remaining skip) still jump — matching the audio, which also cuts.

Testing

On device: skip mid-song — the ring should sweep smoothly from the outgoing percentage to the incoming track's starting point over the 5 s blend, no snap at the end; same on natural transitions; normal playback and scrubbing unchanged.

🤖 Generated with Claude Code

https://claude.ai/code/session_013TJoWkqg8bzkGdzxWhWjWP


Generated by Claude Code

At deck promotion the displayed progress jumped from the outgoing
track's fraction to the incoming track's — jarring on skips and
natural transitions alike. New Player.displayProgress morphs between
the two fractions weighted by the blend progress, so by the moment the
decks swap the shown value already equals the incoming fraction; the
Now Playing ring and mini-player line both use it.

@sanylax0 sanylax0 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

test

@sanylax0
sanylax0 merged commit b000dc8 into main Jul 19, 2026
2 of 4 checks passed
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.

3 participants