4a9193bc52
Scrubbing/seeking in clients was a no-op because every track shipped with duration_ms=0. Shell out to ffprobe (already in the image) per file during scan and record the parsed duration. ffprobe failures are warned + recorded as 0 so a single bad file doesn't sink the scan. Tightened the incremental skip to also require duration_ms > 0 so existing libraries get backfilled on the next rescan instead of needing a wipe. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>