From f6421227263bda39b761dfec79cfd9e7d6a3134d Mon Sep 17 00:00:00 2001 From: Administrator Date: Wed, 25 Mar 2026 00:07:12 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix:=20show=20feedback=20when=20?= =?UTF-8?q?'Wartet'=20jobs=20are=20already=20in=20batch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 'Ausgewählte starten' on already-queued jobs during upload now shows toast: "X Jobs warten bereits auf ihren Upload-Slot" - Only error/aborted/skipped jobs are added to the running batch (prevents duplicate task creation for already-queued jobs) - Toast confirms when error jobs are added to batch Co-Authored-By: Claude Opus 4.6 (1M context) --- renderer/app.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/renderer/app.js b/renderer/app.js index 6914a96..108ab49 100644 --- a/renderer/app.js +++ b/renderer/app.js @@ -1354,8 +1354,8 @@ function _markSkippedJobs(result) { async function startSelectedUpload() { if (uploading) { - // Batch already running — add selected jobs to the running batch - const retryable = queueJobs.filter(j => selectedJobIds.has(j.id) && ['queued', 'error', 'aborted', 'skipped'].includes(j.status)); + // Batch already running — only add error/aborted/skipped jobs (not already-queued ones) + const retryable = queueJobs.filter(j => selectedJobIds.has(j.id) && ['error', 'aborted', 'skipped'].includes(j.status)); if (retryable.length > 0) { retryable.forEach(j => { j.status = 'queued'; j.error = null; j.result = null; @@ -1367,6 +1367,13 @@ async function startSelectedUpload() { }); _markSkippedJobs(result); persistQueueStateSoon(); + showCopyToast(`${retryable.length} Jobs zum laufenden Upload hinzugefügt`); + } else { + // All selected jobs are already queued/uploading — just inform user + const waiting = queueJobs.filter(j => selectedJobIds.has(j.id) && j.status === 'queued'); + if (waiting.length > 0) { + showCopyToast(`${waiting.length} Jobs warten bereits auf ihren Upload-Slot`); + } } return; }