PixelCue needs small preview images, but opening and decoding every original file just to draw a thumbnail is wasteful. Desktop operating systems often already have the right image in their thumbnail cache. ThumbMoves is the small library I have separated out to ask for that cached image without quietly doing the expensive fallback itself.
Version 0.1.0 is now available on PyPI. It has one deliberately conservative contract: return a cached thumbnail when the operating system already has one, or return a miss. It does not open the source media file and it does not trigger thumbnail generation.

One boundary instead of three copies
On Windows, ThumbMoves uses the Shell thumbnail interface with cache-only and thumbnail-only flags. On Linux and other Freedesktop-style desktops, it looks up the standard thumbnail-cache path derived from the file URI. macOS does not expose an equivalent public, strict cache-only lookup, so the current backend returns a miss rather than pretending it can keep the same promise.
That last detail is important. A cross-platform API is only useful if the shared name does not hide materially different behaviour. PixelCue can try ThumbMoves first and decide what to do after a miss, while another application can make a different choice.
Separating the code also gives it a proper reusable boundary. PixelCue no longer needs to own a one-off copy of the cache logic, and other Python tools can install the same small package.
A release route that can be repeated
The package now has cross-platform GitHub Actions checks, wheel and source-archive validation, and a tag-driven release workflow. Production publication uses PyPI’s trusted-publishing route, so the workflow exchanges its GitHub identity for a short-lived publishing token rather than storing a permanent PyPI password in the repository.
The release job also creates a matching GitHub Release with the wheel, source archive and a SHA256SUMS.txt file. I checked the public PyPI files against those GitHub assets, then installed version 0.1.0 into a clean Python 3.13 environment and ran the installed command-line help.
TestPyPI is not part of this first completed route. I deliberately left that optional path aside for now rather than holding up the production package.
Where it is now
ThumbMoves 0.1.0 supports Python 3.10 and later and is released under the MIT licence. The package is available from PyPI, with the matching files and checksums on the GitHub release.
It is a small piece of PixelCue, but that is rather the point: one narrow job, an honest platform contract and a release process that can be repeated without turning the library back into a private implementation detail.



Leave a Reply