v0.4 — visualizer overhaul, sleep timer, SmartPlay modes, launch screen
Highlights since v0.3
- Sleep timer — auto-stop after 15/30/45/60 min or at the end of the current track, with a live LCD countdown in the player transport. (#16)
- Visualizer overhaul — 8 selectable styles on the SwiftUI player: spectrum, oscilloscope, plasma, mirror, radial pulse, particles, fire, starfield. Active style persists across launches. Long-press or double-tap the visualizer to cycle. The skinned (Winamp) player honors the same choice within its 76×16 + palette constraints. (#26)
- SmartPlay — three new rule-based modes: Mood Arc (high-energy → wind-down), Deep Cut (skip openers and "Greatest Hits" comps), One Per Artist (max library breadth). 12 modes total. (#25)
- Branded launch screen — Sun-Bleached Grooves splash matching the app icon: sunset gradient + black vinyl disc, no tonearm. (#30)
- Performance — throttled
currentTimepublish to ~2 Hz, gated the visualizer + display link on view visibility, paused the display link when the app backgrounds. Substantially fewer SwiftUI invalidations during normal playback. (#17) - Reliability — fixed several Sendable / actor-isolation issues around background/foreground notification observers (no compile-time isolation warnings, no spurious main-actor hops).
- Repeat-one indicator: subtle "1" badge on the repeat button when single-track loop is active. (#15)
Build: 3
Min iOS: 16
🤖 Generated with Claude Code