Skip to content

Higher-quality full-bleed Now Playing backdrop - #95

Merged
sanylax0 merged 1 commit into
claude/repo-review-improvements-yvk3t7-pager-band-fillfrom
claude/repo-review-improvements-yvk3t7-backdrop-quality
Jul 18, 2026
Merged

sanylax0 merged 1 commit into
claude/repo-review-improvements-yvk3t7-pager-band-fillfrom
claude/repo-review-improvements-yvk3t7-backdrop-quality

Conversation

@sanylax2

Copy link
Copy Markdown
Collaborator

What

Stacked on #94 (merge that first). Fixes the backdrop regressions from the cached-blur change, per the screenshots:

  1. Blocky blur — the 40 px block-upscale was too coarse. BackdropRenderer now works on a 160 px square and runs a real clamped gaussian (sigma 20) via CoreImage — visually equivalent to the old live radius-60 blur, still rendered exactly once per URL (the memory fix is untouched: zero per-frame offscreen rendering).
  2. Soft source art — the renderer now tries YouTube's maxresdefault and sddefault tiers before falling back to the stored hqdefault, so the blurred field is built from the sharpest available cover.
  3. Black band at the top / blur not filling the screen — safe-area piercing doesn't survive inside scroll content. The backdrop now lives as the Now Playing page's .background behind hard insets in MainPagerView (backgrounds cover the full padded frame, bars included), and homeLayout no longer embeds its own backdrop. Sheet mode is unchanged.

Testing

On device: blurred art edge-to-edge top to bottom, smooth (not blotchy), scrim/legibility unchanged, crossfade on track change still works, and no sideways layout shift. If you want it softer/sharper, the knobs are side (160) and sigma (20) in BackdropRenderer.render.

🤖 Generated with Claude Code

https://claude.ai/code/session_013TJoWkqg8bzkGdzxWhWjWP


Generated by Claude Code

Three regressions from the cached-backdrop change, fixed together:

- The blur looked blocky: 40 px nearest-tier upscale was too coarse.
  BackdropRenderer now works on a 160 px square with a real clamped
  gaussian (sigma 20), matching the old live radius-60 look — still a
  one-time render per URL, zero per-frame cost.
- The source art was soft: the renderer now tries maxresdefault and
  sddefault before falling back to the stored hqdefault thumbnail.
- The blur didn't fill the screen (black band at the top): safe-area
  piercing doesn't survive inside scroll content, so the backdrop now
  lives as the Now Playing page's BACKGROUND behind hard insets in
  MainPagerView — backgrounds cover the full padded frame, bars
  included. homeLayout no longer embeds its own backdrop.
@sanylax0
sanylax0 merged commit d1e48db into claude/repo-review-improvements-yvk3t7-pager-band-fill Jul 18, 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