Release v1.6.18

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Sucukdeluxe 2026-03-04 17:31:20 +01:00
parent 10bae4f98b
commit a263e3eb2c
5 changed files with 17 additions and 18 deletions

View File

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

@ -1408,10 +1408,8 @@ export class DownloadManager extends EventEmitter {
item.updatedAt = nowMs(); item.updatedAt = nowMs();
} }
if (!this.session.running) { this.runItemIds.delete(itemId);
this.runItemIds.delete(itemId); this.runOutcomes.delete(itemId);
this.runOutcomes.delete(itemId);
}
this.retryAfterByItem.delete(itemId); this.retryAfterByItem.delete(itemId);
this.retryStateByItem.delete(itemId); this.retryStateByItem.delete(itemId);
@ -1425,9 +1423,7 @@ export class DownloadManager extends EventEmitter {
this.packagePostProcessTasks.delete(packageId); this.packagePostProcessTasks.delete(packageId);
this.hybridExtractRequeue.delete(packageId); this.hybridExtractRequeue.delete(packageId);
if (!this.session.running) { this.runPackageIds.delete(packageId);
this.runPackageIds.delete(packageId);
}
this.runCompletedPackages.delete(packageId); this.runCompletedPackages.delete(packageId);
const items = pkg.itemIds const items = pkg.itemIds
@ -2629,6 +2625,7 @@ export class DownloadManager extends EventEmitter {
item.fullStatus = "Übersprungen"; item.fullStatus = "Übersprungen";
item.speedBps = 0; item.speedBps = 0;
item.updatedAt = nowMs(); item.updatedAt = nowMs();
this.recordRunOutcome(itemId, "cancelled");
} }
this.persistSoon(); this.persistSoon();
this.emitState(); this.emitState();

View File

@ -1027,13 +1027,14 @@ export function App(): ReactElement {
}; };
const onCheckUpdates = async (): Promise<void> => { const onCheckUpdates = async (): Promise<void> => {
let updateResult: UpdateCheckResult | null = null;
await performQuickAction(async () => { await performQuickAction(async () => {
setUpdateInstallProgress(null); setUpdateInstallProgress(null);
const result = await window.rd.checkUpdates(); updateResult = await window.rd.checkUpdates();
await handleUpdateResult(result, "manual");
}, (error) => { }, (error) => {
showToast(`Update-Check fehlgeschlagen: ${String(error)}`, 2800); showToast(`Update-Check fehlgeschlagen: ${String(error)}`, 2800);
}); });
if (updateResult) await handleUpdateResult(updateResult, "manual");
}; };
const persistDraftSettings = async (): Promise<AppSettings> => { const persistDraftSettings = async (): Promise<AppSettings> => {
@ -2547,8 +2548,8 @@ export function App(): ReactElement {
<span className="stat-value danger">{itemStatusCounts.failed}</span> <span className="stat-value danger">{itemStatusCounts.failed}</span>
</div> </div>
<div className="stat-item"> <div className="stat-item">
<span className="stat-label">{snapshot.etaText.split(": ")[0]}</span> <span className="stat-label">{snapshot.etaText.includes(": ") ? snapshot.etaText.slice(0, snapshot.etaText.indexOf(": ")) : snapshot.etaText}</span>
<span className="stat-value">{snapshot.etaText.split(": ")[1] || "--"}</span> <span className="stat-value">{snapshot.etaText.includes(": ") ? snapshot.etaText.slice(snapshot.etaText.indexOf(": ") + 2) : "--"}</span>
</div> </div>
</div> </div>
</article> </article>

View File

@ -1748,6 +1748,7 @@ td {
font-weight: 600; font-weight: 600;
pointer-events: none; pointer-events: none;
backdrop-filter: blur(2px); backdrop-filter: blur(2px);
z-index: 200;
} }
.modal-backdrop { .modal-backdrop {

View File

@ -25,9 +25,9 @@ describe("sortPackageOrderByName", () => {
const sorted = sortPackageOrderByName( const sorted = sortPackageOrderByName(
["pkg3", "pkg1", "pkg2"], ["pkg3", "pkg1", "pkg2"],
{ {
pkg1: { id: "pkg1", name: "Alpha", outputDir: "", extractDir: "", status: "queued", itemIds: [], cancelled: false, enabled: true, createdAt: 0, updatedAt: 0 }, pkg1: { id: "pkg1", name: "Alpha", outputDir: "", extractDir: "", status: "queued", itemIds: [], cancelled: false, enabled: true, priority: "normal", createdAt: 0, updatedAt: 0 },
pkg2: { id: "pkg2", name: "beta", outputDir: "", extractDir: "", status: "queued", itemIds: [], cancelled: false, enabled: true, createdAt: 0, updatedAt: 0 }, pkg2: { id: "pkg2", name: "beta", outputDir: "", extractDir: "", status: "queued", itemIds: [], cancelled: false, enabled: true, priority: "normal", createdAt: 0, updatedAt: 0 },
pkg3: { id: "pkg3", name: "Gamma", outputDir: "", extractDir: "", status: "queued", itemIds: [], cancelled: false, enabled: true, createdAt: 0, updatedAt: 0 } pkg3: { id: "pkg3", name: "Gamma", outputDir: "", extractDir: "", status: "queued", itemIds: [], cancelled: false, enabled: true, priority: "normal", createdAt: 0, updatedAt: 0 }
}, },
false false
); );
@ -38,9 +38,9 @@ describe("sortPackageOrderByName", () => {
const sorted = sortPackageOrderByName( const sorted = sortPackageOrderByName(
["pkg1", "pkg2", "pkg3"], ["pkg1", "pkg2", "pkg3"],
{ {
pkg1: { id: "pkg1", name: "Alpha", outputDir: "", extractDir: "", status: "queued", itemIds: [], cancelled: false, enabled: true, createdAt: 0, updatedAt: 0 }, pkg1: { id: "pkg1", name: "Alpha", outputDir: "", extractDir: "", status: "queued", itemIds: [], cancelled: false, enabled: true, priority: "normal", createdAt: 0, updatedAt: 0 },
pkg2: { id: "pkg2", name: "beta", outputDir: "", extractDir: "", status: "queued", itemIds: [], cancelled: false, enabled: true, createdAt: 0, updatedAt: 0 }, pkg2: { id: "pkg2", name: "beta", outputDir: "", extractDir: "", status: "queued", itemIds: [], cancelled: false, enabled: true, priority: "normal", createdAt: 0, updatedAt: 0 },
pkg3: { id: "pkg3", name: "Gamma", outputDir: "", extractDir: "", status: "queued", itemIds: [], cancelled: false, enabled: true, createdAt: 0, updatedAt: 0 } pkg3: { id: "pkg3", name: "Gamma", outputDir: "", extractDir: "", status: "queued", itemIds: [], cancelled: false, enabled: true, priority: "normal", createdAt: 0, updatedAt: 0 }
}, },
true true
); );