From a9c8ee2ff4360bcd5db069f18acf4b920bbb4fa3 Mon Sep 17 00:00:00 2001 From: Sucukdeluxe Date: Mon, 2 Mar 2026 14:03:43 +0100 Subject: [PATCH] Sort active packages by completion percentage, not absolute count 1/6 (16.7%) now ranks above 5/153 (3.3%) since it's further along. Co-Authored-By: Claude Opus 4.6 --- package.json | 2 +- src/renderer/App.tsx | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 720d84b..689bb06 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "real-debrid-downloader", - "version": "1.4.86", + "version": "1.4.87", "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 45972eb..7111a3d 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -688,14 +688,14 @@ export function App(): ReactElement { if (active.length === 0 || active.length === packages.length) { return packages; } - // Sort active packages: most progress first (completed items, then downloaded bytes) + // Sort active packages: highest completion percentage first active.sort((a, b) => { const aItems = a.itemIds.map((id) => snapshot.session.items[id]).filter(Boolean); const bItems = b.itemIds.map((id) => snapshot.session.items[id]).filter(Boolean); - const aCompleted = aItems.filter((i) => i.status === "completed").length; - const bCompleted = bItems.filter((i) => i.status === "completed").length; - if (aCompleted !== bCompleted) { - return bCompleted - aCompleted; + const aPct = aItems.length > 0 ? aItems.filter((i) => i.status === "completed").length / aItems.length : 0; + const bPct = bItems.length > 0 ? bItems.filter((i) => i.status === "completed").length / bItems.length : 0; + if (aPct !== bPct) { + return bPct - aPct; } const aBytes = aItems.reduce((s, i) => s + (i.downloadedBytes || 0), 0); const bBytes = bItems.reduce((s, i) => s + (i.downloadedBytes || 0), 0);