Fix duplicate extraction and release v1.4.71
Some checks are pending
Build and Release / build (push) Waiting to run

- Don't clear extraction resume state during hybrid mode (skipPostCleanup)
- Mark ALL completed items as "Entpackt" after successful hybrid extraction
  to prevent full extraction from re-extracting already-extracted archives

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Sucukdeluxe 2026-03-01 21:09:53 +01:00
parent 674cf101da
commit 520ef91d2d
3 changed files with 11 additions and 4 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "real-debrid-downloader", "name": "real-debrid-downloader",
"version": "1.4.70", "version": "1.4.71",
"description": "Real-Debrid Downloader Desktop (Electron + React + TypeScript)", "description": "Real-Debrid Downloader Desktop (Electron + React + TypeScript)",
"main": "build/main/main/main.js", "main": "build/main/main/main.js",
"author": "Sucukdeluxe", "author": "Sucukdeluxe",

View File

@ -4538,9 +4538,16 @@ export class DownloadManager extends EventEmitter {
logger.warn(`Hybrid-Extract: ${result.failed} Archive fehlgeschlagen, wird beim finalen Durchlauf erneut versucht`); logger.warn(`Hybrid-Extract: ${result.failed} Archive fehlgeschlagen, wird beim finalen Durchlauf erneut versucht`);
} }
// Mark all hybrid items with final status.
// Use completedItems (not just hybridItems) so that items not matched to any archive
// also get marked — this prevents the final full extraction from re-running.
const updatedAt = nowMs(); const updatedAt = nowMs();
for (const entry of hybridItems) { const targetItems = result.extracted > 0 && result.failed === 0 ? completedItems : hybridItems;
if (/^Entpacken \(hybrid\)/i.test(entry.fullStatus || "")) { for (const entry of targetItems) {
if (isExtractedLabel(entry.fullStatus)) {
continue;
}
if (/^Entpacken \(hybrid\)/i.test(entry.fullStatus || "") || /^Fertig\b/i.test(entry.fullStatus || "")) {
if (result.extracted > 0 && result.failed === 0) { if (result.extracted > 0 && result.failed === 0) {
entry.fullStatus = "Entpackt"; entry.fullStatus = "Entpackt";
} else { } else {

View File

@ -1321,7 +1321,7 @@ export async function extractPackageArchives(options: ExtractOptions): Promise<{
} }
} }
if (failed === 0 && resumeCompleted.size >= allCandidates.length) { if (failed === 0 && resumeCompleted.size >= allCandidates.length && !options.skipPostCleanup) {
clearExtractResumeState(options.packageDir, options.packageId); clearExtractResumeState(options.packageDir, options.packageId);
} }