By: Michael Lynch <git@mtlynch.io>
Give all media conversion one shared signature The prior slice gave video its own path-to-path converter (VideoTranscodeFunc / VideoFileToWebM) to avoid re-spilling an already-on-disk upload to a temp file, and renamed the stream-based Converter to ImageConvertFunc. That left two conversion signatures to reason about. Collapse back to a single MediaConverter func(r io.Reader, w io.Writer) error shared by photo, animated-photo, and video conversion, matching the name the importers package already uses. Video streams through mediastore.WriteConverted again, intentionally accepting the redundant filesystem copies; writeFullSizeVideo documents why so the copies don't read as an oversight. The struct that bundles the per-kind converters becomes MediaConverters to free up the MediaConverter name. Drop the now-unused convert.VideoFileToWebM and littlemoments.TranscodedVideoPath. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>