By: Michael Lynch <git@mtlynch.io>
Reserve PhotoFiles for true photos; add MediaFiles.Thumbnails Animated photos never consume a display-size variant, so they no longer flow through PhotoFiles: ProcessAnimatedPhoto and PhotoFiles() now operate on plain MediaFiles, and PhotoFiles() panics on any type but photo. This makes "is a PhotoFiles" mean exactly "has a display-size variant," dropping the dead zero-value DisplaySize field for animated items. Add MediaFiles.Thumbnails() and route writeThumbnails and the tinybeans import through it, replacing the duplicated desktop/mobile slice literal and the two transposable positional args. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>