-
Multi-Hoster-Upload v3.3.51 Stable
released this
2026-06-08 19:22:54 +02:00 | 0 commits to master since this releaseFiles panel + history table sort headers: the first click on any column header now sets the natural default direction for that column (desc for date, asc for text) instead of toggling away from it.
Why: the initial sort state was already 'date|desc' (the intuitive 'newest first' order for the Files panel and history table). The click handler treated this as 'user clicked the already-selected column → toggle direction', so the first time the user clicked Datum they actually flipped to ascending — new uploads then landed at the bottom, out of view. The user then had to click Datum a second time to flip back to descending and see them at the top.
Fix: track whether the user has explicitly clicked a sort header during this session. On the first click on any header (or any click that changes the column), set the column's natural default direction. Only on a subsequent click on the same already-active column does the direction toggle. The arrow indicator already reflects the state, so the second click for explicit toggle still works as expected.
Applied to both the Files panel (lower 'recent uploads' panel) and the Verlauf tab's history table.
Downloads
-
Multi-Hoster-Upload v3.3.49 Stable
released this
2026-06-08 03:04:25 +02:00 | 4 commits to master since this releaseAccounts prüfen button no longer silently fails. Two changes to the runHealthCheck guard:
-
The 'uploading && mode === manual' block is removed — health checks already use their own per-hoster clients (VoeUploader, DoodstreamUploader, …) with independent cookie jars and don't share state with the upload manager, so running both concurrently is safe. The 3.3.39 per-hoster serialization for VOE still applies, so concurrent health checks won't trigger the CSRF burst that originally motivated the guard.
-
When a health check is already in flight and the user clicks the button again, the function now surfaces a 'Account-Check läuft bereits.' toast instead of returning silently — the previous behavior left the user clicking with no visible feedback.
Downloads
-
-
Multi-Hoster-Upload v3.3.48 Stable
released this
2026-06-08 01:30:19 +02:00 | 6 commits to master since this releaseThird + most targeted fix for the Start-button freeze. Two changes:
-
startBatch was synchronous from rotLog('batch-start') through the entire 5365-task dedup loop AND the 5365 _runJob promise spawn loop before hitting the first 'await Promise.allSettled'. With no event-loop yield, the main process couldn't service the IPC reply to the renderer's await window.api.startUpload() — so the renderer sat 'Not Responding' for as long as it took main to plow through the whole synchronous prelude (30-60 seconds at this scale). Both loops now yield via 'await new Promise(setImmediate)' every 200 tasks (dedup) and every 100 tasks (spawn), letting the IPC reply, OS messages, and incoming progress events flow during the spawn.
-
rotLog was a synchronous fs.appendFileSync per call. Each rot-log event (~30-50 in the startup burst: batch-start + per-job upload-start + pre-resolved fallback + …) blocked the main thread 5-20ms. Now it pushes into the existing _rotLogBuffer and reuses the same async flush path that debugLog already uses — same on-disk format, same file targets, just unblocking.
Downloads
-
-
Multi-Hoster-Upload v3.3.47 Stable
released this
2026-06-07 21:11:53 +02:00 | 8 commits to master since this releaseFour HIGH-impact perf fixes from the audit:
-
Per-batch baseline pre-fetch for byse + doodstream. Until now uploadFile fetched a 100-item file list per JOB to seed its post-upload poller — at 600 byse jobs that was 600 HTTPS roundtrips to api.byse.sx instead of 1 per (hoster, apiKey). Upload-manager now resolves the baseline once via prefetchBaseline, caches the Promise per (hoster, apiKey) for the batch, and passes the Set into uploadFile via opts.{byseBaseline,doodBaseline}. Concurrent jobs share the in-flight Promise — no duplicate fetches even if they start in the same tick.
-
Async folder walk. select-folder + resolve-folder-files used to do fs.readdirSync recursively on the main process, blocking the entire IPC bus on deep folder trees. Now walks asynchronously with fs.promises.readdir + an explicit yield via setImmediate every 8 directories so the event loop stays responsive even on tens of thousands of files.
-
renderHistoryTable fast path. The forEach + 4× escapeHtml + template-string per row was the dominant cost when switching to Verlauf with thousands of entries. Replaced with a single-array string-builder that pushes pre-computed escaped values — same DOM, no behavior change, just less GC pressure and no V8 deopt from the template-literal compose.
-
Progress IPC batching at main. Per-job progress emits (30 active jobs × 4Hz = 120 IPC msgs/sec) are now coalesced at main into 'upload-progress-batch' events flushed every 100ms — deduped by jobId, terminal events (done/error/aborted/skipped) preserved in order. Renderer handles both the new batch event and the legacy single event, so older preload + renderer combinations keep working. Effective IPC volume drops from ~120/s to ~10/s during active uploads.
Downloads
-
-
Multi-Hoster-Upload v3.3.46 Stable
released this
2026-06-07 20:59:34 +02:00 | 10 commits to master since this releaseSecond hotfix for the Start-button freeze with 2000+ queued jobs. Three changes that compound to remove the freeze entirely:
-
Renderer no longer fires window.api.debugLog (an IPC roundtrip back to main) on every received upload-progress / upload-stats / upload-batch-done event. With 3000 initial queued events, that was 3000 sync-ish IPC invokes flooding main's debug-log handler queue and blocking the renderer event loop for ~30 seconds (visible as 'Not Responding' in the title bar).
-
Upload-manager no longer emits the redundant initial 'queued' progress event per job. The renderer already holds each job in 'queued'/'preview' state from its own queueJobs array; the first event it actually needs from main is the 'getting-server' / 'uploading' transition for the jobs the semaphore lets through. With 3000 tasks this was 3000 main → renderer IPC sends back-to-back at startBatch.
-
fileSize is now reused from the per-file cache populated in startBatch (line 315) instead of re-statting in every _runJob call. That removes a redundant fs.statSync per task on the startBatch hot path.
Downloads
-
-
Multi-Hoster-Upload v3.3.45 Stable
released this
2026-06-07 20:41:25 +02:00 | 12 commits to master since this releaseHotfix for the freeze on Start with thousands of queued jobs. The 3.3.43 diagnostic logging probed every queued job's file head and emitted an 'upload-start' rot-log event BEFORE the semaphore, which fired 3000× simultaneously when a big batch started — 3000 fs.open syscalls + 3000 main→renderer IPC messages back-to-back, blocking the main process and the renderer event loop. Probe and rot-log now run AFTER semaphore acquisition (only the currently-uploading parallel-count jobs do the work). The duplicate fs.statSync per job is gone (reuses fileSize from the existing pre-check). Diagnostic rot-log events ('upload-start', 'upload-failure', 'hoster-transient', 'fast-fail', etc.) are still written to account-rotation.log and to the per-job log buffer, but no longer forwarded to the renderer — only user-visible rotation events (switchAccount, mark-failed, doodstream-via-api, …) reach the toast handler now.
Downloads
-
Multi-Hoster-Upload v3.3.44 Stable
released this
2026-06-07 20:33:07 +02:00 | 14 commits to master since this releaseAccounts panel: each hoster group now shows the lifetime success rate from the last 50 batches (e.g. 'voe.sx 98% ok (147)') so weak hosters surface as a number, not a feeling. Accounts that the rotation engine marks as session-failed get a 'Pausiert (Session)' badge with a one-click reactivate button — the auto-disable was already in place under the hood, this just makes it visible and manually undoable until the next app restart. After every batch with failures a summary modal groups the errors by category (Datei abgelehnt / Account-Problem / Hoster-Flake / Netzwerk / Unbekannt / Abgebrochen) with two retry buttons: 'Transiente erneut hochladen' (re-queues only retryable categories) and 'Alle Fehler erneut versuchen' (excludes aborts). Queue actions get a new format selector — copy all links as Plaintext / BBCode / Markdown / HTML / CSV / JSON for direct paste into forums, boards, or scripts.
Downloads
-
Multi-Hoster-Upload v3.3.43 Stable
released this
2026-06-07 18:50:24 +02:00 | 16 commits to master since this releaseForensic upload logging. Every job now emits two structured rot-log events: 'upload-start' with file size/mtime and detected container kind (mp4-iso / matroska / avi / flv / asf-wmv / mpeg-ps / mpeg-ts / etc., derived from the first 64 bytes) plus the actual head hex; 'upload-failure' on any error with the same probe info plus the HTTP status, content-type, and a 1000-byte JSON snippet of the hoster's response. This means when byse returns 'Not video file format' on a valid file, the rot-log shows 'detectedKind=mp4-iso isVideoLike=true' next to the exact payload byse sent back — instant proof of whether the issue is the file or the hoster. Visible per file via right-click → Log anzeigen, and bundled into the support .txt.
Downloads
-
Multi-Hoster-Upload v3.3.42 Stable
released this
2026-06-07 16:35:19 +02:00 | 18 commits to master since this releaseDiagnostics overhaul. New Settings → Diagnose section exposes every log path with a 'Reveal in Explorer' button and an 'Export support bundle' button that writes a single .txt with app/electron/node versions, all four log tails, and a sanitized config (passwords, API keys, tokens redacted). Optional Verbose toggle enables DEBUG-level entries in debug.log. New structured log helpers add level prefixes ([INFO]/[WARN]/[ERROR]/[DEBUG]) and a context tag for batch/job/hoster/attempt. App start, batch start/end, and verbose toggle are now bold marker lines in debug.log for easier forensic grep.
Downloads
-
Multi-Hoster-Upload v3.3.41 Stable
released this
2026-06-07 04:49:43 +02:00 | 20 commits to master since this releaseSettings: the log-mode dropdown no longer truncates the 'Pro Session' option (.hs-input max-width override for selects).
Downloads