From 4684144093d27a5ad54022c51bd404f2c94503cb Mon Sep 17 00:00:00 2001 From: Sucukdeluxe Date: Tue, 9 Jun 2026 20:59:29 +0200 Subject: [PATCH] docs(tasks): QoL Sichtbarkeits-Paket released (v1.7.191) + 9 verifizierte QoL-Kandidaten mit Gotchas dokumentiert --- tasks/todo.md | 50 +++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/tasks/todo.md b/tasks/todo.md index 9e1f1a9..fa9863c 100644 --- a/tasks/todo.md +++ b/tasks/todo.md @@ -1,12 +1,52 @@ -# Real-Debrid-Downloader — Tasks (Stand 2026-06-08) +# Real-Debrid-Downloader — Tasks (Stand 2026-06-09) -**Status:** Alle zugesagten Features erledigt+released (Archiv unten). Aktuell läuft ein -**intensiver Bug-Audit** (User-Goal 2026-06-08, "schaue intensiv nach weiteren Bugs") — -Fortschritt direkt unten. +**Status:** Bug-Audit ABGESCHLOSSEN (v1.7.189/190). QoL-Ideation gefahren (36 Kandidaten → +12 code-verifiziert) → **Sichtbarkeits-Paket released als v1.7.191**. Verbleibende verifizierte +QoL-Kandidaten direkt unten. --- -## 🔴 LAUFEND — Bug-Audit 2026-06-08 (Multi-Agent find→verify, 18 bestätigt) +## ✅ QoL Sichtbarkeits-Paket — RELEASED v1.7.191 (2026-06-09, Gitea + GitHub-Mirror) +1. **ntfy-Push** (e753ea1): notify.ts, Settings notifyUrl + 3 Toggles (Allgemein-Tab); 3 Hooks + (Post-Process-Ende, refreshPackageStatus all-failed-Lücke, finishRun-Summary); Dedup-Set + Lifecycle wie historyRecordedPackages; Guard running||runPackageIds (Recovery pusht nicht). +2. **audioStripSummary am Paket** (2a1a554): PackageEntry-Feld + Status-Spalten-Badge + ("Tonspur: 5 OK · 1 ohne DE-Tag", Tooltip mit Datei-Details); storage-Whitelist + Delta-Hash. +3. **"Letzte Fehler anzeigen"** (be4d54a): Hilfe-Menü → Error-Ring-Snapshot im Dialog, + Bestätigen-Knopf = in Zwischenablage kopieren. +787 Tests, tsc=6, self-check+build grün; latest.yml-path verifiziert; Mirror f61fbc4 clean. + +## 🟡 QoL-Backlog — code-verifiziert mit Hook-Punkten (aus Ideation 2026-06-09) +Volle Details (exakte Zeilennummern, Verifier-Gotchas) im Ideation-Workflow-Output; Kurzform: +1. **Mega-Web Per-Account-Timeout** (M, Score 9) — 20s eigenes Timeout pro Account via + AbortSignal.any + Signal-IDENTITÄT (nie Error-Text!) im Rotations-catch VOR Z.~1979; + äußeres 60s-Budget bleibt. GOTCHA: tests/debrid.test.ts:1376 asserted Signal-Objekt-Identität + → Test lockern. Nur mode==='web'. +2. **ffmpeg-Pfad als Setting + Testen-Button** (M, Score 9) — ffmpegPath/ffprobePath, Setter + + resetVideoToolingCache(); GOTCHA: auch im KONSTRUKTOR setzen (setSettings reicht nicht nach + Neustart); IPC CHECK_VIDEO_TOOLING; UI unter keepGermanAudioOnly-Toggle. +3. **Bibliothek-Batch Tonspur für Bestand** (M, Score 9) — Button neben Toggle; Kandidaten-Filter + aus keepGermanAudioOnlyImpl als shared Predicate extrahieren (Overlap-Guard NICHT schwächen); + sequenziell + Single-In-Flight + AbortController + mtime-Age-Gate. +4. **Auto-Reset gefailter Items bei Tageswechsel** (S–M, Score 8) — Toggle, Default aus; + GOTCHA: NICHT synchron aus ensureProviderDailyUsageFresh (Re-Entranz: läuft in getSnapshot/ + Scheduler) → über 60s-runtimeStatsTimer (app-controller ~164); resetItems löscht Teil-Downloads. +5. **POST /control am Debug-Server** (M, Score 8) — add-links/start/stop/pause; GOTCHA: über + AppController routen (Audit-Log), nicht manager direkt; Start-Konflikt-Guard beachten. +6. **Mobile Statusseite GET /ui + Remote-Toggle** (M, Score 8) — handgeschriebenes flaches HTML, + pollt /status+/errors; Toggle schreibt debug_host.txt um; GOTCHA: stop+start Race (EADDRINUSE + → Server tot bis Neustart) → closeAllConnections/restartDebugServer. +7. **Mega-Cooldown-Status + aufheben** (S, Score 7) — listMegaDebridAccountCooldowns() export, + Snapshot-Feld, Badge + Button; GOTCHA: Keys sind `${id}:api|web` getrennt; lazy expiry. +8. **Status-Filter-Chips Downloads-Tab** (S, Score 7) — GOTCHAS: PackageCard-memo-Comparator + braucht neue Prop; Prädikat an 2 Stellen (6615 + visibleOrderIds 3546); VOR Rendering-Limit. +9. **Support-Bundle: Explorer zeigen + Desktop-Schnellweg** (S, Score 7) — filePath wird schon + returned, Toast ignoriert ihn nur; shell.showItemInFolder; preload-api.ts nicht vergessen. +Long-Tail: Low-Disk-Auto-Pause (S), Autostart/Tray (S). + +--- + +## ✅ ERLEDIGT — Bug-Audit 2026-06-08 (Multi-Agent find→verify, 18 bestätigt) Advisor-Triage: **A = einzige echte Daten-Verlust-Notlage** (zerstört echte Datei auf Platte) → zuerst, ALLEINE Release. **B verifiziert demoted:** applyRetroactiveCleanupPolicy/