Move 7 non-critical queries out of synchronous mount into assign_async
and start_async tasks with skeleton loading placeholders.
Only scalar badge counters (collection count, wishlist count, scrobble
count) remain synchronous. All async sections use <.async_result> with
loading and failed slots. Scrobble activity preserves LiveView streams
via handle_async. On-this-day date changes use AsyncResult.ok/2.