Wallper 1.3.2: Preview Thumbnails That Load Every Time

A rebuilt async preview pipeline: consistent caching, preloading as cards appear, hover-triggered generation, and correct storage path resolution.
A wallpaper library is unusable if you cannot see what is in it.
That is the whole problem 1.3.2 addresses. Preview thumbnails had become unreliable across the app: some cards showed an image, some showed a placeholder, and which was which changed depending on how you had arrived at the view and how fast you had scrolled to it.
Browsing a grid of grey rectangles is not browsing.
What Was Wrong
Preview loading is asynchronous, which is correct. Thumbnails have to be fetched or generated without blocking everything else, or scrolling would stall every time a new row appeared.
The trouble with asynchronous work is that it completes in an order nobody chose. Several parts of the app were requesting previews independently, caching results in ways that did not agree with each other, and occasionally resolving the wrong storage path entirely. A thumbnail could be generated successfully and then cached against a key nothing would ever look up again.
So the failure was not that previews did not work. It was that they worked and then got lost.
The Rebuild
Async preview loading was rebuilt around one path rather than several.
Caching was rebuilt for consistency, so a preview generated once is found again rather than regenerated or lost. Auto-preload on appear means a card starts fetching its preview as it comes into view, so scrolling at a reasonable pace shows images that are already there. Hover-triggered generation covers the rest: pointing at a card that has not been preloaded prompts it immediately, so the wait happens exactly where your attention already is.
And S3 path resolution is now correct, which was the underlying cause of the previews that never appeared at all rather than merely appearing late.
Preview generation moved to the backend entirely a few weeks later in 1.3.5, which is where thumbnails stopped being generated per Mac at all. This release is what made browsing the library dependable in the meantime.


