From e6295ae4e80e4eb31163a86815d0257ce2091d3b Mon Sep 17 00:00:00 2001
From: 简律纯 <i@jyunko.cn>
Date: Wed, 14 Jan 2026 13:52:15 +0800
Subject: Update ui/src/lib/DownloadMonitor.svelte

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
 ui/src/lib/DownloadMonitor.svelte | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

(limited to 'ui/src/lib/DownloadMonitor.svelte')

diff --git a/ui/src/lib/DownloadMonitor.svelte b/ui/src/lib/DownloadMonitor.svelte
index 5dc8269..79adff5 100644
--- a/ui/src/lib/DownloadMonitor.svelte
+++ b/ui/src/lib/DownloadMonitor.svelte
@@ -83,12 +83,19 @@
         const timeDiff = (now - lastUpdateTime) / 1000; // seconds
         
         if (timeDiff >= 0.5) { // Update speed every 0.5 seconds
-          const bytesDiff = totalDownloadedBytes - lastTotalBytes;
-          const instantSpeed = bytesDiff / timeDiff;
-          // Smooth the speed with exponential moving average
-          downloadSpeed = downloadSpeed === 0 ? instantSpeed : downloadSpeed * 0.7 + instantSpeed * 0.3;
-          lastUpdateTime = now;
-          lastTotalBytes = totalDownloadedBytes;
+          // On the first update, initialize lastTotalBytes to avoid counting
+          // bytes downloaded before the timer window started.
+          if (lastTotalBytes === 0 && totalDownloadedBytes > 0) {
+            lastTotalBytes = totalDownloadedBytes;
+            lastUpdateTime = now;
+          } else {
+            const bytesDiff = totalDownloadedBytes - lastTotalBytes;
+            const instantSpeed = bytesDiff / timeDiff;
+            // Smooth the speed with exponential moving average
+            downloadSpeed = downloadSpeed === 0 ? instantSpeed : downloadSpeed * 0.7 + instantSpeed * 0.3;
+            lastUpdateTime = now;
+            lastTotalBytes = totalDownloadedBytes;
+          }
         }
 
         // Estimate remaining time based on files remaining
-- 
cgit v1.2.3-70-g09d2

