A cached track now shows its "ready" check when a view is built, persisting
across navigation within the session (was: only live downloads showed state).
- offline_cache.rs: a session-wide CACHED_IDS set (mirrors fav_cache), seeded
from index.db ready rows via load_cached_ids() on login/restore, kept in
sync as downloads complete (mark_cached true) and copies are removed (false).
is_cached(id) reads it.
- The 7 TrackItem builders seed cache-status from is_cached (favorites/search
clone/precompute the id to avoid moving it before the borrow).
- auth.rs calls load_cached_ids after the offline cache activates.
qbz-slint compiles clean.
cc