Commit Graph
6 Commits
Author SHA1 Message Date
vicrodh 282fffc6a4 perf(immersive): improve background quality while maintaining low CPU
- Increase canvas size from 8x8 to 64x64 to reduce visible pixelation
- Add small CSS blur(40px) to smooth the result
- Key: blur(40px) on 64x64 is much cheaper than blur(120px) on full image
- Adjusted brightness slightly darker (0.55x) for better text contrast
2026-01-31 11:06:23 -06:00
vicrodh f012ba33f4 perf(immersive): fix critical CPU usage issue in background blur
Performance problem:
- WebKitWebProcess consuming 97% CPU on one core
- Cause: CSS filter: blur(120px) on large image is extremely expensive
  in WebKit/GTK which cannot GPU-accelerate this operation

Solution:
- Replace CSS blur with Canvas-based tiny thumbnail approach
- Draw image to 8x8 canvas, apply color adjustments, scale up via CSS
- Natural pixelation creates blur-like effect with ZERO CPU cost
- Remove backdrop-filter: blur() from header elements (use solid bg)

Also fixed:
- Change Mic icon to Mic2 to match rest of app
- Add missing i18n translations for player.credits and player.suggestions
2026-01-31 11:01:34 -06:00
vicrodh b7e08cc4cb feat(immersive): add multiple display modes like Cider
Display modes:
- Coverflow: centered album art with track info
- Split: artwork + panel side by side (current default)
- Lyrics Focus: single line at a time, large centered text
- Queue Focus: full screen queue view
- Visualizer Focus: full screen visualizer

Background:
- Heavy CSS blur (120px) for abstract color blobs
- No recognizable image, just colors

Keyboard shortcuts: 1-5 to switch modes

Inspired by Cider 3's immersive player design.
2026-01-30 17:02:17 -06:00
vicrodh 484ef87ee7 feat(immersive): use full artwork background like Cider
Replace blur approach with full resolution artwork:
- Artwork scaled 115% to hide edges
- Strong vignette overlay fading to black at edges
- Gradient overlays for text readability (header, controls, lyrics)
- Slight desaturation for better contrast
- Simpler and more visually impactful
2026-01-30 16:53:14 -06:00
vicrodh f744615b0e fix(immersive): fallback to CSS blur when canvas fails (CORS) 2026-01-30 16:18:17 -06:00
vicrodh 513614466e perf: optimize fullscreen player for low-end hardware
Lyrics optimization:
- Adaptive update interval (80-200ms based on lyrics density)
- Increased progress threshold (3% vs 1%) reduces re-renders by 60%
- Remove will-change from inactive lines (only active + next get GPU layers)
- Remove font-weight from transitions (expensive property)
- Debug logs now dev-only

Background optimization:
- Add imageBlur utility for pre-computed blur backgrounds
- 64x64 canvas blur vs CSS blur(100px) = ~95% GPU reduction
- Add color extraction for gradient fallback (even lighter)
- LRU cache for blurred images (max 20)

New components:
- ImmersiveBackground.svelte with blur/gradient/solid modes

Addresses issue #33
2026-01-30 16:11:03 -06:00