Desktop-Anwendung zum gleichzeitigen Hochladen auf mehrere File-Hoster
Go to file
Administrator 233952af8f perf(doodstream): gate per-upload _debugLog behind logVerbose (default off) — drop ~8-15 sync fs syscalls/upload off the main loop
doodstream-upload.js's _debugLog ran with NO verbose gate: every call did a
synchronous statSync (via maybeRotateLogFile) + appendFileSync directly on the
main-process event loop, ~8-15x per upload (server probe, response, redirect,
result page, filecode parse, hidden fields, submit/follow, plus retry branches).
DoodstreamUploader runs in the main process, so each pair of sync fs syscalls
blocked the event loop while uploading — delaying IPC, upload-progress-batch
forwarding, tray-tooltip and webhook handling for every other concurrent upload.
A constant per-upload main-thread tax (not history-scaling), surfaced by the
session-wide lag audit and confirmed as the one finding that bites in the real
upload scenario.

Fix: gate _debugLog behind the existing globalSettings.logVerbose setting
(default false), exactly mirroring main.js logDebug/_logVerbose. A module-level
_debugVerbose flag + setDebugVerbose() setter, an early-return at the top of
_debugLog, and one wire at main.js's single setLogVerbose chokepoint (covers
boot + save-config + the verbose toggle). When verbose is off the doodstream
trace simply isn't written — same contract as the main debug.log — and the
per-upload sync fs disappears. When a doodstream issue needs tracing, enabling
verbose restores the full trace.

The config-store audit findings (load() history-clone cost, per-write history
serialize) are real but scale only with history size — tens of microseconds at
this user's 8-batch config, and the safe fix is risky persistence surgery on
credential-bearing code for a latent micro-cost; deferred and documented in
tasks/todo.md rather than shipped.

397/397 tests pass, eslint clean, gate wiring verified (shared module instance,
default-off, toggles).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 02:29:59 +02:00
assets feat: custom app icon (arrows-up design) 2026-03-11 23:30:46 +01:00
docs feat(diagnostics): network bind + fail-closed IP allowlist + host-in-code (Tailscale, like rd-diagnostics-mcp) 2026-06-19 19:32:29 +02:00
gateway feat(diagnostics): network bind + fail-closed IP allowlist + host-in-code (Tailscale, like rd-diagnostics-mcp) 2026-06-19 19:32:29 +02:00
lib perf(doodstream): gate per-upload _debugLog behind logVerbose (default off) — drop ~8-15 sync fs syscalls/upload off the main loop 2026-06-21 02:29:59 +02:00
renderer perf(renderer): keep recent-uploads panel append-only past the cap (kill ~80ms per-completion freeze) 2026-06-21 01:47:59 +02:00
scripts fix: rcedit import in afterPack - icon was not being embedded in exe 2026-03-12 01:22:56 +01:00
tasks docs(todo,lessons): long-run lag root cause was the recent-panel append-gate cliff (measured 80ms->7ms) 2026-06-21 01:47:59 +02:00
tests perf(config): cache parsed config + lean serialize + drop load() from log flush (long-run lag) 2026-06-21 00:49:55 +02:00
.gitignore chore(gitignore): exclude electron-config + logs from tracking 2026-06-07 04:27:43 +02:00
app.py chore: initial commit - Electron multi-hoster uploader 2026-03-10 02:32:06 +01:00
eslint.config.mjs perf(config): cache parsed config + lean serialize + drop load() from log flush (long-run lag) 2026-06-21 00:49:55 +02:00
hosters.py chore: initial commit - Electron multi-hoster uploader 2026-03-10 02:32:06 +01:00
main.js perf(doodstream): gate per-upload _debugLog behind logVerbose (default off) — drop ~8-15 sync fs syscalls/upload off the main loop 2026-06-21 02:29:59 +02:00
package-lock.json chore(deps): npm audit fix --force — closes 12 deferred vulnerabilities 2026-04-28 11:53:53 +02:00
package.json release: v3.3.87 2026-06-21 01:49:23 +02:00
preload-drop-target.js feat: floating drop target window and English column labels 2026-03-12 04:11:01 +01:00
preload.js feat(diagnostics): read-only remote diagnostics agent over the existing WS transport (app side) 2026-06-19 17:24:32 +02:00
README.md docs: update README for Electron version 2026-03-10 02:35:43 +01:00
requirements.txt chore: initial commit - Electron multi-hoster uploader 2026-03-10 02:32:06 +01:00

Multi-Hoster-Upload

Desktop-Anwendung zum gleichzeitigen Hochladen von Dateien auf mehrere File-Hosting-Dienste.

Unterstuetzte Hoster

  • doodstream.com - API-Key basiert
  • voe.sx - API-Key basiert
  • vidmoly.me - Login basiert (Username/Passwort)
  • byse.sx - API-Key basiert

Installation

Setup (empfohlen)

Lade die Multi-Hoster-Upload Setup X.X.X.exe aus den Releases herunter und installiere.

Portable

Lade die Multi-Hoster-Upload X.X.X.exe herunter. Keine Installation noetig.

Entwicklung

npm install
npm start

Build

npm run release:win

Erzeugt Setup + Portable EXE im release/ Ordner.

Release

GITEA_TOKEN=dein_token npm run release:gitea -- 1.0.1 "Release notes"

Features

  • Drag & Drop oder Dateiauswahl
  • Gleichzeitiger Upload zu mehreren Hostern
  • Echtzeit-Fortschrittsanzeige
  • Ergebnis-Tabelle mit Sortierung und Kopier-Funktion
  • Upload-Verlauf (letzte 100 Eintraege)
  • Health-Check fuer Hoster-Verbindungen
  • Auto-Updater (prueft git.24-music.de)
  • Log-Datei kompatibel mit File & Image Uploader Format