Reproduced from a real saved config: pendingQueue held 4 'preview' jobs (one file across 4 hosters); the queue saved + restored correctly. But _autoDeduplicateFromLog (runs at init after restore) removed jobs whose fileName|hoster appeared ANYWHERE in the lifetime fileuploader.log, regardless of status — so all 4 pending previews were deleted and the queue showed the empty "Dateien hierhin ziehen" state. Looked update-specific only because the server restarts on update; a plain restart did the same. - New lib/queue-dedup.js (pure, dual CJS/window export like queue-prune.js): partitionRestoredJobsByLog drops ONLY 'done' jobs that match the log. Pending (preview/queued) and failed (error/aborted) jobs always survive — they're intentional queued work (often a deliberate re-upload of a previously uploaded file). Manual importUploadLog stays separate/explicit. - renderer wires it in; index.html loads the module before app.js. - Tests: 5 cases incl. the exact reproduced scenario (4 previews all in log -> 0 removed). Full suite 162/162. Verified against the user's real electron-config.json + fileuploader.log: old logic removed 4/4 (empty queue), new logic removes 0/4 (queue preserved). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| backup-crypto.test.js | ||
| coalesced-set.test.js | ||
| config-store.test.js | ||
| doodstream-upload.test.js | ||
| hosters.test.js | ||
| log-policy.test.js | ||
| log-rotation.test.js | ||
| queue-dedup.test.js | ||
| queue-prune.test.js | ||
| remote-config.test.js | ||
| remote-server.test.js | ||
| semaphore.test.js | ||
| throttle.test.js | ||
| throttled-cache.test.js | ||
| ui-smoke.js | ||
| upload-manager.test.js | ||