Release v1.5.99

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Sucukdeluxe 2026-03-04 04:43:46 +01:00
parent 21ff749cf3
commit a967eb1080
2 changed files with 12 additions and 14 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "real-debrid-downloader", "name": "real-debrid-downloader",
"version": "1.5.98", "version": "1.5.99",
"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

@ -3734,16 +3734,11 @@ export class DownloadManager extends EventEmitter {
} }
delete this.session.packages[packageId]; delete this.session.packages[packageId];
this.session.packageOrder = this.session.packageOrder.filter((id) => id !== packageId); this.session.packageOrder = this.session.packageOrder.filter((id) => id !== packageId);
// Keep packageId in runPackageIds so the "size > 0" guard still filters // Keep runPackageIds intact — ghost entries (deleted packages) are harmless:
// other packages. But prune ghost entries: if no real package remains in // findNextQueuedItem() won't find items for them, so the scheduler naturally
// the set, clear it so the scheduler isn't permanently blocked. // terminates via finishRun() which clears runPackageIds. Pruning them here
if (this.runPackageIds.size > 0) { // would make runPackageIds empty, disabling the "size > 0" filter guard and
for (const rpId of this.runPackageIds) { // causing "Start Selected" to continue with ALL packages after cleanup.
if (!this.session.packages[rpId]) {
this.runPackageIds.delete(rpId);
}
}
}
this.runCompletedPackages.delete(packageId); this.runCompletedPackages.delete(packageId);
this.hybridExtractRequeue.delete(packageId); this.hybridExtractRequeue.delete(packageId);
this.resetSessionTotalsIfQueueEmpty(); this.resetSessionTotalsIfQueueEmpty();
@ -5955,10 +5950,13 @@ 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 hybrid items with final status // Mark hybrid items with final status — only items whose archives were
// actually in the extraction set (hybridItems), NOT all completedItems.
// Using completedItems here would falsely mark items whose archives
// weren't ready yet (e.g. part2 of an episode where part1 is still
// downloading) as "Done".
const updatedAt = nowMs(); const updatedAt = nowMs();
const targetItems = result.extracted > 0 && result.failed === 0 ? completedItems : hybridItems; for (const entry of hybridItems) {
for (const entry of targetItems) {
if (isExtractedLabel(entry.fullStatus)) { if (isExtractedLabel(entry.fullStatus)) {
continue; continue;
} }