From 61a830475bab3a13296e9b56ec81123747863e7f Mon Sep 17 00:00:00 2001 From: Sucukdeluxe Date: Mon, 8 Jun 2026 22:47:34 +0200 Subject: [PATCH] Fix: verschachtelte Entpack-Fortschritte wurden bei jedem Lauf verworfen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der Resume-Prune validiert Eintraege gegen die Top-Level-Archiv-Kandidaten auf der Platte. Nested-Archiv-Schluessel (nested:) haben dort kein Gegenstueck, also wurden sie bei JEDEM extractPackageArchives-Aufruf geloescht — verschachtelte Archive wurden beim Resume erneut entpackt. nested:-Schluessel werden im Prune jetzt uebersprungen (sie werden mit dem Rest geleert, wenn das Paket fertig ist). --- src/main/extractor.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/extractor.ts b/src/main/extractor.ts index 3353ade..77b6609 100644 --- a/src/main/extractor.ts +++ b/src/main/extractor.ts @@ -2883,6 +2883,13 @@ export async function extractPackageArchives(options: ExtractOptions): Promise<{ const resumeCompletedAtStart = resumeCompleted.size; const allCandidateNames = new Set(allCandidates.map((archivePath) => archiveNameKey(path.basename(archivePath)))); for (const archiveName of Array.from(resumeCompleted.values())) { + // Nested-archive progress (keyed "nested:") has no top-level candidate on + // disk to validate against, so it must NOT be pruned here — otherwise every + // extractPackageArchives call wiped it and nested archives were re-extracted on + // resume. It is cleared together with the rest once the package fully completes. + if (archiveName.startsWith("nested:")) { + continue; + } if (!allCandidateNames.has(archiveName)) { resumeCompleted.delete(archiveName); }