Compare commits

...

2 Commits

Author SHA1 Message Date
Administrator
221eb55380 release: v3.3.65 2026-06-10 23:16:56 +02:00
Administrator
c75cb6c079 fix(ui): files panel sort cache goes stale at the 2000-row cap — newest entry never appeared without re-sorting 2026-06-10 23:16:31 +02:00
2 changed files with 6 additions and 2 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "multi-hoster-uploader", "name": "multi-hoster-uploader",
"version": "3.3.64", "version": "3.3.65",
"description": "Upload files to doodstream, voe, vidmoly, byse simultaneously", "description": "Upload files to doodstream, voe, vidmoly, byse simultaneously",
"main": "main.js", "main": "main.js",
"scripts": { "scripts": {

View File

@ -68,6 +68,7 @@ let _historySortClicked = false;
// Session-specific files for the "Files" panel (resets each session) // Session-specific files for the "Files" panel (resets each session)
let sessionFilesData = []; let sessionFilesData = [];
let _recentSeqCounter = 0; let _recentSeqCounter = 0;
let _recentDataVersion = 0;
const recentSortState = { key: 'date', direction: 'desc' }; const recentSortState = { key: 'date', direction: 'desc' };
const selectedRecentIds = new Set(); const selectedRecentIds = new Set();
// Maintained incrementally — avoids O(n) filter() scans every 250ms in the status bar. // 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); _sessionDoneCount = Math.max(0, _sessionDoneCount - removedDone);
_sessionErrorCount = Math.max(0, _sessionErrorCount - removedErr); _sessionErrorCount = Math.max(0, _sessionErrorCount - removedErr);
_recentDataVersion++;
selectedRecentIds.clear(); selectedRecentIds.clear();
renderRecentUploadsPanel(); renderRecentUploadsPanel();
} }
@ -1475,6 +1477,7 @@ function clearAllRecentFiles() {
_sessionFileKeys.clear(); _sessionFileKeys.clear();
_sessionDoneCount = 0; _sessionDoneCount = 0;
_sessionErrorCount = 0; _sessionErrorCount = 0;
_recentDataVersion++;
selectedRecentIds.clear(); selectedRecentIds.clear();
renderRecentUploadsPanel(); renderRecentUploadsPanel();
} }
@ -2511,6 +2514,7 @@ function maybeAddSessionFile(job) {
isError: false, isError: false,
order: _recentSeqCounter++ order: _recentSeqCounter++
}); });
_recentDataVersion++;
_sessionDoneCount++; _sessionDoneCount++;
// Drop oldest entries past the cap to keep render cost bounded. // Drop oldest entries past the cap to keep render cost bounded.
// Without this, sessionFilesData grows unbounded across the session // Without this, sessionFilesData grows unbounded across the session
@ -4175,7 +4179,7 @@ let _recentSortCache = { sig: '', result: [] };
function sortRecentFiles(data) { function sortRecentFiles(data) {
const { key, direction } = recentSortState; const { key, direction } = recentSortState;
const sig = `${key}|${direction}|${data.length}`; const sig = `${key}|${direction}|${data.length}|${_recentDataVersion}`;
if (_recentSortCache.sig === sig) return _recentSortCache.result; if (_recentSortCache.sig === sig) return _recentSortCache.result;
const sorted = data.slice(); const sorted = data.slice();