fix(ui): files panel sort cache goes stale at the 2000-row cap — newest entry never appeared without re-sorting

This commit is contained in:
Administrator 2026-06-10 23:16:31 +02:00
parent 3573c6860a
commit c75cb6c079

View File

@ -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();