Compare commits
No commits in common. "7269504d3d3b12c19af995f7641491b5bf7a3a34" and "3ece93c36309293f3bcf47d8130a97daa2c3b331" have entirely different histories.
7269504d3d
...
3ece93c363
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "multi-hoster-uploader",
|
||||
"version": "3.3.7",
|
||||
"version": "3.3.6",
|
||||
"description": "Upload files to doodstream, voe, vidmoly, byse simultaneously",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
|
||||
@ -1973,17 +1973,6 @@ function handleBatchDone(summary) {
|
||||
uploading = false;
|
||||
applySummaryResults(summary);
|
||||
_deletedJobIds.clear(); // Free memory — stale IDs no longer needed after batch completes
|
||||
// Prune session-stats sets to current queue contents. Without this, IDs
|
||||
// of jobs that were removed from queueJobs (via removeFromQueueOnDone
|
||||
// or the cap-prune below) live forever in these sets — small leak per
|
||||
// entry, real over weeks of use. _completedUploadKeys is intentionally
|
||||
// kept (it's the dedup against re-queueing the same file).
|
||||
if (_sessionTrackedJobs.size > 0 || _sessionDoneJobs.size > 0) {
|
||||
const aliveIds = new Set();
|
||||
for (const j of queueJobs) aliveIds.add(j.id);
|
||||
for (const id of _sessionTrackedJobs) if (!aliveIds.has(id)) _sessionTrackedJobs.delete(id);
|
||||
for (const id of _sessionDoneJobs) if (!aliveIds.has(id)) _sessionDoneJobs.delete(id);
|
||||
}
|
||||
|
||||
// Reset aborted jobs back to queued so they can be restarted
|
||||
for (const job of queueJobs) {
|
||||
|
||||
@ -8,17 +8,15 @@
|
||||
- ✅ 3.3.4 — `applyQueueSelectionClasses` + `applyRecentSelectionClasses` nutzen `getElementsByClassName` (live HTMLCollection statt querySelectorAll re-query bei jedem Klick)
|
||||
- ✅ 3.3.5 — Log-Rotation extrahiert nach `lib/log-rotation.js` + 10 neue Unit-Tests (cap, shift, eviction, idempotency, maxBackups=1, invalid input, no-extension)
|
||||
- ✅ 3.3.6 — CSS `.queue-row` transition nur noch auf `:hover` (kein 150ms compositor-tween bei status-flips)
|
||||
- ✅ 3.3.7 — `_sessionTrackedJobs`/`_sessionDoneJobs` werden bei handleBatchDone gegen current queueJobs geprunt (no more unbounded session memory growth across batches)
|
||||
|
||||
## Open items (priorisiert)
|
||||
|
||||
### Code-Qualität (deferred — bräuchte jsdom für DOM/state)
|
||||
- [ ] queue-cap-prune-Logik (3.3.0 handleBatchDone)
|
||||
- [ ] sortQueueJobs dynamic-throttle (3.3.0)
|
||||
- [ ] removeFromQueueOnDone microtask-coalesce (3.3.1) — Microtask-Timing schwer zu testen ohne fake-timer setup
|
||||
### Code-Qualität
|
||||
- [ ] queue-cap-prune-Logik (3.3.0 handleBatchDone) — DOM-abhängig, bräuchte jsdom; deferred bis sich anderes lohnt
|
||||
- [ ] sortQueueJobs dynamic-throttle (3.3.0) — modul-state-abhängig im renderer; deferred
|
||||
|
||||
### Loop-Status
|
||||
Alle initial im 3.3.0-Audit identifizierten Items sind nun adressiert. Loop kann pausiert werden bis neue User-Beschwerden / neue Audit-Findings auftauchen, oder weiterlaufen für Quality-Improvement-Sweep (z.B. eslint cleanup, comment audit, dead-code).
|
||||
### UX-Politur
|
||||
- [ ] Module-level Sets `_sessionTrackedJobs`/`_sessionDoneJobs`/`_completedUploadKeys` werden nie geleert — minor memory growth.
|
||||
|
||||
## Loop-Notes
|
||||
- Cron-Job `01e33ae1` läuft alle 30min (:07/:37), Session-only.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user