v0.6.2
Fixed
- Search type filters finally work: the playlist filter returned tracks; the orchestrator now has a dedicated playlist search (Deezer), results are tagged with the correct type, and the "All Types" filter shows Tracks, Artists and Playlists sections
- "Load more" no longer repeats the same results: offset is now passed through to the orchestrator, pagination goes through Deezer, non paginating types end cleanly, and the YouTube path no longer re-fetches artists and playlists on every page
- Searched tracks now play on iPhone: the stream endpoint prefers AAC/m4a (iOS Safari cannot decode opus/webm), reports the real Content-Type, streams in 64KB chunks instead of buffering whole files, returns 502 and invalidates the cached URL when the upstream link expires, and advertises range support only when actually available
- Adding searched tracks to playlists: provider ids are mapped to the external track format, which the backend resolves by creating the track and scheduling its download (previously a 400 error)
- Mobile UI: search results in a single readable column on phones, loading skeleton matches the layout, Discovery link in the bottom navigation makes Last.fm configuration reachable on mobile, track card actions meet the 40px touch target minimum
Security
- Resolved 22 open code scanning alerts
- CVE fixes: anyio (backend), undici (frontend, dev only)
- Hardening: negative search offset rejected with 422, stream proxy read timeout capped
Dependencies
- Frontend: typescript 6.0, lucide-react 1.16, knip 6.14 plus patch and minor bumps
- Backend: patch and minor bumps
Full changelog: https://github.com/Bl4nk44/Audiovault/blob/main/CHANGELOG.md