From f6c9979ac55d0474c219adc61cf8d78ff7fa9441 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sat, 21 Mar 2026 13:52:22 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix:=20job=20index=20rebuild=20a?= =?UTF-8?q?fter=20restore,=20drop-target=20visibility,=20XSS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rebuild _jobIndexById after restoring queue from config on startup (prevented progress updates from finding restored jobs) - Show and focus mainWindow when files are dropped on floating drop-target while window is minimized/hidden - Escape status text in queue table HTML to prevent XSS from unexpected status values Co-Authored-By: Claude Opus 4.6 (1M context) --- main.js | 4 ++++ renderer/app.js | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/main.js b/main.js index 8f5c539..5481c3b 100644 --- a/main.js +++ b/main.js @@ -1259,6 +1259,10 @@ ipcMain.handle('hide-drop-target', () => { ipcMain.on('drop-target:files', (_event, paths) => { if (mainWindow && !mainWindow.isDestroyed()) { + if (!mainWindow.isVisible() || mainWindow.isMinimized()) { + mainWindow.show(); + mainWindow.focus(); + } mainWindow.webContents.send('drop-target:files', paths); } }); diff --git a/renderer/app.js b/renderer/app.js index cdac774..4e2ade4 100644 --- a/renderer/app.js +++ b/renderer/app.js @@ -408,6 +408,7 @@ function restoreQueueStateFromConfig() { } } queueJobs = Array.from(seen.values()); + rebuildJobIndex(); } function buildPersistedQueueState() { @@ -750,7 +751,7 @@ function buildRowHtml(job) { ${escapeHtml(job.fileName)} ${uploadedSize} ${escapeHtml(job.hoster)} - ${statusText} + ${escapeHtml(statusText)} ${elapsed} ${remaining} ${speed}