feat: suppression d'éléments de la file, téléchargement groupé #5

Merged
kyuno merged 1 commit from feat/queue-remove-and-bulk-download into main 2026-09-16 22:51:55 +02:00
Owner

Résumé

Trois demandes : agrandir la liste de résultats de recherche, permettre de supprimer des éléments de la file (pas seulement les annuler), et télécharger toute la file d'un coup.

Détails

  • QueueService.remove() remplace cancel() : supprime l'élément de la liste quel que soit son état (annule d'abord s'il était en attente/en cours - process yt-dlp arrêté via AbortSignal), au lieu de se limiter aux deux cas actifs et renvoyer false (→ 404 côté route) pour un élément déjà terminé.
  • Bug annexe corrigé en cours de route : consumeCompletedFile() ne remettait jamais fileName à null après livraison - un second appel à GET /api/queue/:id/file aurait tenté de relire un fichier déjà supprimé par le nettoyage post-livraison. Repéré en écrivant le bouton "Tout télécharger" (qui augmente la probabilité qu'un fichier soit redemandé). Corrigé + test.
  • QueuePanel : un même bouton retire l'élément quel que soit son état - "Annuler" en attente/en cours, "Supprimer" une fois terminé (DELETE /api/queue/:id gère maintenant les deux cas). Bouton "Tout télécharger" dans l'en-tête, décalé de 250ms entre chaque déclenchement (évite le blocage navigateur des téléchargements multiples simultanés).
  • Liste de résultats de chaîne : max-height 320px → 65vh.

Tests

11 nouveaux tests côté serveur (63 au total) : remove() sur chaque état (attente/en cours/terminé/inconnu), nettoyage du dossier de sortie, fileName à null après livraison, route DELETE qui retire bien l'élément de la liste suivante.

Vérifications locales

  • npm run lint (Biome) + tests + typecheck + build, serveur et client : clean
  • Testé en navigateur réel : ajout → échec → bouton "Supprimer" → l'élément disparaît bien de la liste

🤖 Generated with Claude Code

## Résumé Trois demandes : agrandir la liste de résultats de recherche, permettre de supprimer des éléments de la file (pas seulement les annuler), et télécharger toute la file d'un coup. ## Détails - **`QueueService.remove()`** remplace `cancel()` : supprime l'élément de la liste quel que soit son état (annule d'abord s'il était en attente/en cours - process yt-dlp arrêté via `AbortSignal`), au lieu de se limiter aux deux cas actifs et renvoyer `false` (→ `404` côté route) pour un élément déjà terminé. - **Bug annexe corrigé en cours de route** : `consumeCompletedFile()` ne remettait jamais `fileName` à `null` après livraison - un second appel à `GET /api/queue/:id/file` aurait tenté de relire un fichier déjà supprimé par le nettoyage post-livraison. Repéré en écrivant le bouton "Tout télécharger" (qui augmente la probabilité qu'un fichier soit redemandé). Corrigé + test. - **QueuePanel** : un même bouton retire l'élément quel que soit son état - "Annuler" en attente/en cours, "Supprimer" une fois terminé (`DELETE /api/queue/:id` gère maintenant les deux cas). Bouton "Tout télécharger" dans l'en-tête, décalé de 250ms entre chaque déclenchement (évite le blocage navigateur des téléchargements multiples simultanés). - **Liste de résultats de chaîne** : `max-height` 320px → 65vh. ## Tests 11 nouveaux tests côté serveur (63 au total) : `remove()` sur chaque état (attente/en cours/terminé/inconnu), nettoyage du dossier de sortie, `fileName` à `null` après livraison, route `DELETE` qui retire bien l'élément de la liste suivante. ## Vérifications locales - `npm run lint` (Biome) + tests + typecheck + build, serveur et client : clean - Testé en navigateur réel : ajout → échec → bouton "Supprimer" → l'élément disparaît bien de la liste 🤖 Generated with [Claude Code](https://claude.com/claude-code)
kyuno added 1 commit 2026-09-16 22:51:12 +02:00
feat: suppression d'éléments de la file, téléchargement groupé
Some checks failed
Publier l'image Docker / test (pull_request) Failing after 4s
Publier l'image Docker / publish (pull_request) Has been skipped
a96322f64e
- QueueService.remove() remplace cancel() : supprime l'élément de la
  liste quel que soit son état (annule d'abord s'il était en attente/en
  cours), au lieu de se limiter aux deux cas actifs et renvoyer false
  pour un élément déjà terminé.
- consumeCompletedFile() met fileName à null une fois le fichier livré
  (et son dossier nettoyé) : évite qu'un second appel tente de relire un
  fichier qui n'existe déjà plus.
- QueuePanel : un même bouton retire l'élément quel que soit son état -
  "Annuler" en attente/en cours, "Supprimer" une fois terminé. Bouton
  "Tout télécharger" dans l'en-tête, qui déclenche avec un léger décalage
  chaque téléchargement encore disponible (évite le blocage navigateur
  des téléchargements multiples simultanés).
- Liste de résultats de recherche de chaîne agrandie (320px -> 65vh).

11 nouveaux tests côté serveur (63 -> alignés). Vérifié en navigateur :
ajout, échec, suppression effective (l'élément disparaît de la liste).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
kyuno merged commit 915a2af0de into main 2026-09-16 22:51:55 +02:00
kyuno deleted branch feat/queue-remove-and-bulk-download 2026-09-16 22:51:56 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: kyuno/youtubeDownloader#5
No description provided.