Each prefetch_adjacent() call now bumps a generation counter.
Running spirals check the counter at each iteration and exit
when superseded. Previously, rapid clicks between posts stacked
up concurrent download loops that never cancelled, accumulating
HTTP connections and response buffers.
Also incrementally updates the search controller's cached-names
set when a download completes, avoiding a full directory rescan.
behavior change: only the most recent click's prefetch spiral
runs; older ones exit at their next iteration.