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>
| Time to Start | Worker time | Duration | Time to finish | |
| Config | 15s | 5s | 5s | 21s |
| Eval | 19s | 56s | 56s | 1m15s |
| Build | 48s | 3m36s | 1m54s | 2m43s |
| Suite | 15s | 4m38s | 2m27s | 2m43s |