0fa5db13

By: Michael Lynch <git@mtlynch.io>

Move the video transcode worker behind a single interface

The durable background transcoding work added seven video-only fields to
handlers.Server (the nudge channel, worker ctx/cancel, stop/done channels,
and shutdownOnce) plus an originals directory. Extract that worker into a
new videoqueue package and have Server depend on it through one VideoQueue
interface field, dropping Server's added dependency fields from eight to two.

videoqueue.Worker owns the queue and its lifecycle; its owner (main, tests)
starts and shuts it down. handlers defines the VideoQueue interface and never
imports videoqueue, so there is no cycle. MediaProcessor narrows to the photo
methods, since the video methods now live on videoqueue.Transcoder.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

Suite timing

Time to Start Worker time Duration Time to finish
Config 1s 9s 9s 11s
Eval 9s 2m28s 2m28s 2m37s
Build 28s 12m45s 2m05s 2m34s
Test - - - -
Deploy - - - -
Suite 1s 15m23s 2m36s 2m37s

Timeline

0s20s40s1m1m20s1m40s2m2m20s