What happens
Queue several imports, let one fail, and nothing says so.
completeSettledJob (catalog.js) re-fetches the job when it leaves the
queue, deletes the row for cancelled, and for error falls straight through
to addTrackToLibrary with the channel unchanged. queue.js has no error UI at
all — only console.warn.
The #error banner belongs to the foreground import, so it never fires for a
queued job. And updateTrackStatus(jobId, "error") sets a status the renderer
does not style: PROCESSING_STATUSES does not include "error", and the only
row modifiers are processing and unavailable.
Why it matters
An errored library row is pixel-identical to a healthy one. Queue three
tracks, lose one, never find out — you discover it later when you open a track
that has no stems.
Expected
A failed background import should say so where the user will see it, carrying
the same error / error_detail the foreground path already shows.
What happens
Queue several imports, let one fail, and nothing says so.
completeSettledJob(catalog.js) re-fetches the job when it leaves thequeue, deletes the row for
cancelled, and forerrorfalls straight throughto
addTrackToLibrarywith the channel unchanged.queue.jshas no error UI atall — only
console.warn.The
#errorbanner belongs to the foreground import, so it never fires for aqueued job. And
updateTrackStatus(jobId, "error")sets a status the rendererdoes not style:
PROCESSING_STATUSESdoes not include"error", and the onlyrow modifiers are
processingandunavailable.Why it matters
An errored library row is pixel-identical to a healthy one. Queue three
tracks, lose one, never find out — you discover it later when you open a track
that has no stems.
Expected
A failed background import should say so where the user will see it, carrying
the same
error/error_detailthe foreground path already shows.