Skip to content

Bleed now-playing gradient halfway into Library/Queue backdrops - #127

Merged
sanylax0 merged 1 commit into
mainfrom
claude/nowplaying-gradient-bleed
Jul 21, 2026
Merged

sanylax0 merged 1 commit into
mainfrom
claude/nowplaying-gradient-bleed

Conversation

@sanylax2

Copy link
Copy Markdown
Collaborator

Summary

On the vertical pager, the now-playing album gradient previously ended at the page boundary and the Library / Up Next (Queue) pages were a flat systemGroupedBackground (black in dark mode / white in light), so paging hit a flat wall. This makes the album gradient persist ("bleed") about halfway into the Library and Up Next screens before fading into the flat background, so paging feels continuous.

Approach

Replaced the previous per-page backgrounds / edge-crossfade with a single shared PagerBackdrop behind the whole scroll content (sized to the full 3-page height). It composes: base systemGroupedBackground; a top-extension LinearGradient (flat → gradient top-edge color) over the Library page's bottom half; the reused AlbumBackdrop at full strength over the now-playing page; a bottom-extension LinearGradient (gradient bottom-edge color → flat) over the Up Next page's top half. Because it's one static layer that scrolls with the content, the gradient stays continuous across page boundaries with no seam and no per-scroll-frame work.

Edge colors reuse the same palette AlbumBackdrop draws (BackdropRenderer per-URL cache), with a Theme.gradientColors(seed:) fallback before the artwork palette resolves so the bleed is always present.

Cleanup

Removed the now-unused NowPlayingBackgroundFade, the scrollFraction property on MainPagerState, and the .onScrollGeometryChange handler (page-tracking kept). Added .scrollContentBackground(.hidden) to the Up Next List (Library already had it) so the bleed shows through; queue/library rows stay opaque for legibility.

Files

  • App/Continuity/Views/MainPagerView.swift
  • App/Continuity/Views/Theme.swift
  • App/Continuity/Views/UpNextView.swift

Testing

App-target SwiftUI can't be compiled on Linux CI (only ContinuityCore is Linux-testable); validated by review. Tuned for dark mode — light mode may need follow-up tuning. Device/simulator render verification pending.

Slack thread: https://continuity-org.slack.com/archives/C0BCTF2C5NK/p1784611489906939


Generated by Claude Code

Replace the per-page edge-crossfade with a single shared PagerBackdrop
behind the whole vertical scroll content. It draws the album gradient at
full strength over the now-playing page and continues its top/bottom edge
colors halfway into the Library and Up Next pages before settling into the
flat systemGroupedBackground, so paging feels continuous instead of hitting
a flat wall. The layer is static and scrolls with the content, so it needs
no per-scroll-frame state (removed scrollFraction / onScrollGeometryChange /
NowPlayingBackgroundFade). Pages are now transparent; Up Next hides its list
background so the bleed shows through.
@sanylax0
sanylax0 marked this pull request as ready for review July 21, 2026 06:51
@sanylax0
sanylax0 merged commit 8ce6276 into main Jul 21, 2026
1 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