feat: automatic track duration — no more manually entering seconds
The duration of an audio track is now determined automatically instead of manually:
On upload: read from ffmpeg's codecData event during the existing transcode
(no extra ffprobe binary). The upload INSERT never set duration before ->
every track started as NULL ('--:--'); that is now fixed.
In the track editor: a hidden <audio preload=metadata> reads the duration and
fills the field if it's still empty (manual override still possible).
Backfill: npm run backfill:durations fills existing tracks without duration
via ffmpeg (probeDuration reads only codecData and stops immediately -> fast).