diff --git a/package.json b/package.json
index 3bd0d83..d9ba36e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "real-debrid-downloader",
- "version": "1.6.41",
+ "version": "1.6.42",
"description": "Desktop downloader",
"main": "build/main/main/main.js",
"author": "Sucukdeluxe",
diff --git a/src/main/download-manager.ts b/src/main/download-manager.ts
index da63efe..96a06cb 100644
--- a/src/main/download-manager.ts
+++ b/src/main/download-manager.ts
@@ -6377,6 +6377,11 @@ export class DownloadManager extends EventEmitter {
maxParallel: this.settings.maxParallelExtract || 2,
extractCpuPriority: this.settings.extractCpuPriority,
onProgress: (progress) => {
+ if (progress.phase === "preparing") {
+ pkg.postProcessLabel = progress.archiveName || "Vorbereiten...";
+ this.emitState();
+ return;
+ }
if (progress.phase === "done") {
// Do NOT mark remaining archives as "Done" here — some may have
// failed. The post-extraction code (result.failed check) will
@@ -6577,7 +6582,8 @@ export class DownloadManager extends EventEmitter {
const allDone = success + failed + cancelled >= items.length;
if (!allDone && this.settings.hybridExtract && this.settings.autoExtract && failed === 0 && success > 0) {
- pkg.postProcessLabel = "Entpacken...";
+ pkg.postProcessLabel = "Entpacken vorbereiten...";
+ this.emitState();
await this.runHybridExtraction(packageId, pkg, items, signal);
if (signal?.aborted) {
pkg.postProcessLabel = undefined;
@@ -6612,7 +6618,7 @@ export class DownloadManager extends EventEmitter {
const alreadyMarkedExtracted = completedItems.length > 0 && completedItems.every((item) => isExtractedLabel(item.fullStatus));
if (this.settings.autoExtract && failed === 0 && success > 0 && !alreadyMarkedExtracted) {
- pkg.postProcessLabel = "Entpacken...";
+ pkg.postProcessLabel = "Entpacken vorbereiten...";
pkg.status = "extracting";
this.emitState();
const extractionStartMs = nowMs();
@@ -6684,6 +6690,11 @@ export class DownloadManager extends EventEmitter {
maxParallel: this.settings.maxParallelExtract || 2,
extractCpuPriority: this.settings.extractCpuPriority,
onProgress: (progress) => {
+ if (progress.phase === "preparing") {
+ pkg.postProcessLabel = progress.archiveName || "Vorbereiten...";
+ this.emitState();
+ return;
+ }
if (progress.phase === "done") {
// Do NOT mark remaining archives as "Done" here — some may have
// failed. The post-extraction code (result.failed check) will
diff --git a/src/main/extractor.ts b/src/main/extractor.ts
index 4c2da2e..7e916e1 100644
--- a/src/main/extractor.ts
+++ b/src/main/extractor.ts
@@ -99,7 +99,7 @@ export interface ExtractProgressUpdate {
archiveName: string;
archivePercent?: number;
elapsedMs?: number;
- phase: "extracting" | "done";
+ phase: "extracting" | "done" | "preparing";
passwordAttempt?: number;
passwordTotal?: number;
passwordFound?: boolean;
@@ -1862,6 +1862,7 @@ export async function extractPackageArchives(options: ExtractOptions): Promise<{
if (options.signal?.aborted) {
throw new Error("aborted:extract");
}
+ options.onProgress?.({ current: 0, total: 0, percent: 0, archiveName: "Archive scannen...", phase: "preparing" });
const allCandidates = await findArchiveCandidates(options.packageDir);
const candidates = options.onlyArchives
? allCandidates.filter((archivePath) => {
@@ -1873,6 +1874,7 @@ export async function extractPackageArchives(options: ExtractOptions): Promise<{
// Disk space pre-check
if (candidates.length > 0) {
+ options.onProgress?.({ current: 0, total: candidates.length, percent: 0, archiveName: "Speicherplatz prüfen...", phase: "preparing" });
try {
await fs.promises.mkdir(options.targetDir, { recursive: true });
} catch { /* ignore */ }
diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx
index 5da1f9d..8ffe666 100644
--- a/src/renderer/App.tsx
+++ b/src/renderer/App.tsx
@@ -3371,7 +3371,7 @@ const PackageCard = memo(function PackageCard({ pkg, items, packageSpeed, isFirs
{pkg.priority === "high" ? "Hoch" : pkg.priority === "low" ? "Niedrig" : ""}
);
case "status": return (
- [{done}/{total}{done === total && total > 0 ? " - Done" : ""}{failed > 0 ? ` · ${failed} Fehler` : ""}{cancelled > 0 ? ` · ${cancelled} abgebr.` : ""}]{pkg.postProcessLabel ? ` ${pkg.postProcessLabel}` : ""}
+ [{done}/{total}{done === total && total > 0 ? " - Done" : ""}{failed > 0 ? ` · ${failed} Fehler` : ""}{cancelled > 0 ? ` · ${cancelled} abgebr.` : ""}]{pkg.postProcessLabel ? ` - ${pkg.postProcessLabel}` : ""}
);
case "speed": return (
{packageSpeed > 0 ? formatSpeedMbps(packageSpeed) : ""}