On-demand downloads (e.g. goon clips picked in the Adult collection list) now
take priority over the background warmup plan instead of waiting behind it or
starting a competing rsync:
- new priority lane (priorityEpisodes/priorityCount/enqueuePriority) drained
before each plan item and immediately when the cache is idle
- fetchFile routes through the lane when a warmup is already running (was: a
second concurrent rsync that also stomped the queue UI), and awaits completion
- per-episode fetch extracted to fetchOne(), shared by plan + priority drains
- status line shows '⤴︎N prioritized'; prioritizeFetch()/awaitDownload() expose
it for callers
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Surface the existing pin (keep-from-cull) and per-file delete actions as
visible inline buttons on each offline cache row instead of context-menu-only:
a star toggles protection from auto-cull (and restore-if-missing), a trash
culls that file early. Aligns wording/icons to the star metaphor.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>