docs(tasks): Webhook-Audit abgeschlossen — 29 Findings, 16 Themen gefixt (v1.7.195), 6 begruendete Nicht-Fixes

This commit is contained in:
Sucukdeluxe 2026-06-10 00:43:45 +02:00
parent 2f13035725
commit 2f2646c68a

View File

@ -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.
---