fix(thumbnails): serve animated WebP/GIF covers as-is (they were frozen to 1 frame)
The thumbnail pipeline runs ffmpeg with -frames:v 1, so an animated WebP/GIF cover showed up
frozen on the site. ffmpeg-static can't even decode an animated WebP to re-scale it ("image data
not found"), so a scaled animated thumbnail isn't possible — instead, detect an animated source
(WebP VP8X animation flag, or GIF) and skip the thumbnail (getThumbnail returns null) so the
/media/thumb route serves the original, which keeps animating. Static images thumbnail as before.
- src/services/ThumbnailService.js — isAnimatedSrc() + skip thumbnailing for animated sources
Co-Authored-By: Claude <noreply@…>