diff --git a/renderer/app.js b/renderer/app.js index 4216db7..d620b5c 100644 --- a/renderer/app.js +++ b/renderer/app.js @@ -1177,7 +1177,7 @@ let _recentRenderQueued = false; function scheduleRecentRender() { if (_recentRenderQueued) return; _recentRenderQueued = true; - requestAnimationFrame(() => { _recentRenderQueued = false; renderRecentUploadsPanel(); }); + requestAnimationFrame(() => { _recentRenderQueued = false; renderRecentUploadsPanel(true); }); } // Toggle the .selected class on existing rows without rebuilding the table. @@ -2768,6 +2768,7 @@ function maybeAddSessionFile(job) { }); _recentDataVersion++; _sessionDoneCount++; + _recentPendingAppends++; // Drop oldest entries past the cap to keep render cost bounded. // Without this, sessionFilesData grows unbounded across the session // and every renderRecentUploadsPanel call becomes a megabyte-sized @@ -4672,10 +4673,13 @@ function _buildRecentRowHtml(row) { // accumulating new uploads (the default case: sort=date desc, rows only grow). let _recentLastRenderedSig = ''; let _recentLastRenderedLen = 0; +let _recentPendingAppends = 0; -function renderRecentUploadsPanel() { +function renderRecentUploadsPanel(appendOnly = false) { const tbody = document.getElementById('recentFilesBody'); if (!tbody) return; + const pendingAppends = _recentPendingAppends; + _recentPendingAppends = 0; if (!sessionFilesData.length) { tbody.innerHTML = '