download job: use the panel's exact url list (no server re-expansion)

A YouTube Mix/radio playlist (list=RD…) returns a different set of items on every
/api/playlist call (observed 779 / 1485 / 529 for the same URL). The job used to
re-expand the playlist server-side, so it would download a different list than the
count shown on the decision screen.

The panel now passes the already-expanded `urls[]` into the job, and the executor
uses them verbatim (falling back to expanding `url` only when no list is given).
The job downloads exactly what you decided on. Endpoint takes `urls[]` (stored as
inputs.urls) or `url`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-28 18:44:45 +00:00
co-authored by Claude Opus 4.8
parent c55ec5884b
commit 7d149bd4d1
3 changed files with 34 additions and 19 deletions
@@ -250,7 +250,7 @@ export const VideoDownloadPanel = () => {
const startJob = async () => {
try {
const res = await client.post<{ jobId: string; status: string }>('/jobs/download', {
url: url.trim(),
urls: expandedUrls, // the exact list we counted — a Mix playlist won't re-expand to a different set
format: jobFormat,
dir: targetDir(),
root,