From 956cad0da43c96f46024bf0b852c443613290fb2 Mon Sep 17 00:00:00 2001 From: Sucukdeluxe Date: Tue, 3 Mar 2026 22:58:34 +0100 Subject: [PATCH] Release v1.5.77 Co-Authored-By: Claude Opus 4.6 --- package.json | 2 +- src/renderer/App.tsx | 45 +++++++++++++++++++++++++------------------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 4450523..40061d0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "real-debrid-downloader", - "version": "1.5.76", + "version": "1.5.77", "description": "Real-Debrid Downloader Desktop (Electron + React + TypeScript)", "main": "build/main/main/main.js", "author": "Sucukdeluxe", diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 0a82166..aa65b63 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -2150,7 +2150,7 @@ export function App(): ReactElement {
- {(["name", "progress", "size", "hoster"] as PkgSortColumn[]).flatMap((col) => { + {(["name", "size", "progress", "hoster"] as PkgSortColumn[]).flatMap((col) => { const labels: Record = { name: "Name", progress: "Fortschritt", size: "Geladen / Größe", hoster: "Hoster" }; const isActive = downloadsSortColumn === col; return [ @@ -2187,7 +2187,7 @@ export function App(): ReactElement { , ]; })} - Account + Service Status Geschwindigkeit
@@ -2251,7 +2251,6 @@ export function App(): ReactElement {

{entry.name}

- {entry.status === "completed" ? "100%" : "-"} {(() => { const pct = entry.totalBytes > 0 ? Math.min(100, Math.round((entry.downloadedBytes / entry.totalBytes) * 100)) : 0; const label = `${humanSize(entry.downloadedBytes)} / ${humanSize(entry.totalBytes)}`; @@ -2263,6 +2262,7 @@ export function App(): ReactElement { ) : "-"; })()} + {entry.status === "completed" ? "100%" : "-"} - {entry.provider ? providerLabels[entry.provider] : "-"} {entry.status === "completed" ? "Abgeschlossen" : "Gelöscht"} @@ -2723,6 +2723,13 @@ export function App(): ReactElement { else { executeDeleteSelection(ids); } }}>Ausgewählte entfernen ({[...selectedIds].filter((id) => snapshot.session.items[id]).length}) )} + {hasPackages && !contextMenu.itemId && ( + + )} {hasPackages && !multi && (() => { const pkg = snapshot.session.packages[contextMenu.packageId]; const items = pkg?.itemIds.map((id) => snapshot.session.items[id]).filter(Boolean) || []; @@ -2869,13 +2876,6 @@ const PackageCard = memo(function PackageCard({ pkg, items, packageSpeed, isFirs

{ e.stopPropagation(); onStartEdit(pkg.id, pkg.name); }} title="Klicken zum Umbenennen">{pkg.name}

)} - - - - {combinedProgress}% - {combinedProgress}% - - {(() => { const totalBytes = items.reduce((sum, item) => sum + (item.totalBytes || item.downloadedBytes || 0), 0); const dlBytes = items.reduce((sum, item) => sum + (item.downloadedBytes || 0), 0); @@ -2889,6 +2889,13 @@ const PackageCard = memo(function PackageCard({ pkg, items, packageSpeed, isFirs ) : "-"; })()} + + + + {combinedProgress}% + {combinedProgress}% + + { const hosters = [...new Set(items.map((item) => extractHoster(item.url)).filter(Boolean))]; return hosters.join(", "); @@ -2914,15 +2921,6 @@ const PackageCard = memo(function PackageCard({ pkg, items, packageSpeed, isFirs {!collapsed && items.map((item) => (
{ e.stopPropagation(); onSelect(item.id, e.ctrlKey); }} onMouseDown={(e) => { e.stopPropagation(); onSelectMouseDown(item.id, e); }} onMouseEnter={() => onSelectMouseEnter(item.id)} onContextMenu={(e) => { e.preventDefault(); e.stopPropagation(); onContextMenu(pkg.id, item.id, e.clientX, e.clientY); }}> {item.fileName} - - {item.totalBytes > 0 ? ( - - - {item.progressPercent}% - {item.progressPercent}% - - ) : "-"} - {(() => { const total = item.totalBytes || item.downloadedBytes || 0; const dl = item.downloadedBytes || 0; @@ -2936,6 +2934,15 @@ const PackageCard = memo(function PackageCard({ pkg, items, packageSpeed, isFirs ) : "-"; })()} + + {item.totalBytes > 0 ? ( + + + {item.progressPercent}% + {item.progressPercent}% + + ) : "-"} + {extractHoster(item.url) || "-"} {item.provider ? providerLabels[item.provider] : "-"} 0 ? `${item.fullStatus} · R${item.retries}` : item.fullStatus}>