From c75cb6c079f403086116867479b798e3423fce51 Mon Sep 17 00:00:00 2001 From: Administrator Date: Wed, 10 Jun 2026 23:16:31 +0200 Subject: [PATCH] =?UTF-8?q?fix(ui):=20files=20panel=20sort=20cache=20goes?= =?UTF-8?q?=20stale=20at=20the=202000-row=20cap=20=E2=80=94=20newest=20ent?= =?UTF-8?q?ry=20never=20appeared=20without=20re-sorting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- renderer/app.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/renderer/app.js b/renderer/app.js index 5883d80..6d19903 100644 --- a/renderer/app.js +++ b/renderer/app.js @@ -68,6 +68,7 @@ let _historySortClicked = false; // Session-specific files for the "Files" panel (resets each session) let sessionFilesData = []; let _recentSeqCounter = 0; +let _recentDataVersion = 0; const recentSortState = { key: 'date', direction: 'desc' }; const selectedRecentIds = new Set(); // Maintained incrementally — avoids O(n) filter() scans every 250ms in the status bar. @@ -1464,6 +1465,7 @@ function deleteSelectedRecentFiles() { }); _sessionDoneCount = Math.max(0, _sessionDoneCount - removedDone); _sessionErrorCount = Math.max(0, _sessionErrorCount - removedErr); + _recentDataVersion++; selectedRecentIds.clear(); renderRecentUploadsPanel(); } @@ -1475,6 +1477,7 @@ function clearAllRecentFiles() { _sessionFileKeys.clear(); _sessionDoneCount = 0; _sessionErrorCount = 0; + _recentDataVersion++; selectedRecentIds.clear(); renderRecentUploadsPanel(); } @@ -2511,6 +2514,7 @@ function maybeAddSessionFile(job) { isError: false, order: _recentSeqCounter++ }); + _recentDataVersion++; _sessionDoneCount++; // Drop oldest entries past the cap to keep render cost bounded. // Without this, sessionFilesData grows unbounded across the session @@ -4175,7 +4179,7 @@ let _recentSortCache = { sig: '', result: [] }; function sortRecentFiles(data) { const { key, direction } = recentSortState; - const sig = `${key}|${direction}|${data.length}`; + const sig = `${key}|${direction}|${data.length}|${_recentDataVersion}`; if (_recentSortCache.sig === sig) return _recentSortCache.result; const sorted = data.slice();