From 2f2646c68a170f2b516cb3768c595e4c927a72b3 Mon Sep 17 00:00:00 2001 From: Sucukdeluxe Date: Wed, 10 Jun 2026 00:43:45 +0200 Subject: [PATCH] =?UTF-8?q?docs(tasks):=20Webhook-Audit=20abgeschlossen=20?= =?UTF-8?q?=E2=80=94=2029=20Findings,=2016=20Themen=20gefixt=20(v1.7.195),?= =?UTF-8?q?=206=20begruendete=20Nicht-Fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tasks/todo.md | 48 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/tasks/todo.md b/tasks/todo.md index 97a8694..de68a74 100644 --- a/tasks/todo.md +++ b/tasks/todo.md @@ -1,8 +1,48 @@ -# Real-Debrid-Downloader — Tasks (Stand 2026-06-09) +# Real-Debrid-Downloader — Tasks (Stand 2026-06-10) -**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. +**Status:** Webhook-Audit ABGESCHLOSSEN + released (v1.7.195). Davor: Bug-Audit (v1.7.189/190), +Sichtbarkeits-Paket (v1.7.191-194). Verbleibende QoL-Kandidaten weiter unten. + +--- + +## ✅ Webhook-Bug-Audit — RELEASED v1.7.195 (2026-06-10, Gitea + GitHub-Mirror 37430ba) + +User-Goal: "intensiv prüfen obs Bugs gibt wodurch Webhooks nicht getriggert werden + drumrum". +Workflow: 6 Finder → 29 adversarial bestätigte Findings (0 widerlegt, 65 Non-Findings), +dedupliziert auf 16 Themen in 6 Fix-Commits. Volle Gate: tsc=6, 801 Tests (+9), self-check, build. + +### Gefixt (Commits f060d02, 99a2459, 8acb22d, 3fb9e85, 5f8b02e, 86d935e + Test-Commit) +1. **notify.ts Zustellung** (N5/RATELIMIT HIGH): Send-Queue seriell + 450ms-Gap (Discord + 5/2s-Bucket), 429 mit retry_after (Sek→ms), 5xx/Netz-Backoff-Retries, Body-Konsum, + surrogat-sichere 2000er-Kappung, Invalid-URL-Warnung. 17 notify-Tests. +2. **Terminal-Abdeckung** (N1/DEDUP-2 HIGH, N2 HIGH, N4): refreshPackageStatus benachrichtigt + JEDEN Failed-Übergang (success===0-Gate weg — Mixed-Paket mit letztem Fail = häufigste + Reihenfolge verlor den ❌) + History für Mixed; 3 Early-Return-Fehlerpfade (416/toter + Link/Debrid-Link) riefen refreshPackageStatus nie → Paket hing bis Neustart auf + downloading; skipItems finalisiert jetzt jedes terminal gewordene Paket. +3. **Dedup-Lifecycle** (DEDUP-1 HIGH, -3, -4): recoverRetryableItems + retryExtraction/extractNow + geben den Notify-Marker frei (Recovery-✅ kam sonst NIE); retryExtraction tritt Run unbedingt + bei; addTrailingPostProcessPackageIds erhält Run-Mitgliedschaft laufender Entpackungen an + allen 5 runPackageIds-Ersetz/Clear-Stellen; Marker-Freigabe bei endgültig gescheitertem Send. +4. **Run-Lifecycle** (RUN-1..4): stop() schickt "Durchlauf gestoppt"-Summary; Scheduler-Respawn + in finally heilt Stop→Start-Race (führerloser Run!); finishRun sagt "Downloads beendet + + Entpacken läuft noch" statt zu lügen; armScheduledStart beim Boot re-armt (geplanter Start + überlebte keinen Neustart; vergangene Zeit → log+clear statt Blind-Start). +5. **Settings/Security** (SET-2, SET-4): notifyUrl in importBackup-SENSITIVE_KEYS; + Support-Bundle notifications-Block (konfiguriert/plausibel/Toggles, ohne URL-Leak). +6. **Renderer** (R1, R2): Testen-Toast mahnt Speichern bei dirty Settings; Button disabled + während Quick-Action läuft (statt Klick still zu schlucken). + +### Bewusst NICHT gefixt (verifiziert, Begründung) +- **SET-3** (rememberToken=false wipt notifyUrl nicht): Webhook als Credential zu wipen würde + Benachrichtigungen für rememberToken=false-Setups brechen; Konsistenz-Trade-off akzeptiert. +- **R3** (URL als Klartext-Feld statt password): Sichtbarkeit hilft beim Prüfen/Debuggen, + Einzel-Operator-Setup. +- **R4** (Boot-Window Draft-Race): generisches, vorbestehendes Settings-Hydration-Muster, + nicht notify-spezifisch. +- **DEDUP-5** (immediate-Cleanup schrumpft Zähler in der ✅-Meldung): kosmetisch, Policy-Kombi + beim User nicht aktiv. **RUN-5** (Quit mid-run still): nach Prozesstod nicht zustellbar. + **RUN-6** (Dauer-Fallback 1s): kosmetisch. **N6**: durch Marker-Freigabe + URL-Warnung subsumiert. ---