Les configs Prowlarr et qBittorrent sont récupérées côté serveur et
passées en props au ProwlarrSearchModal, évitant les deux fetchs
client qui causaient l'apparition tardive du bouton.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
La config qBittorrent est maintenant récupérée côté serveur et passée
en prop au QbittorrentProvider, évitant le fetch client qui causait
l'apparition tardive des boutons de téléchargement.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Après import réussi, supprime le sous-répertoire content_path dans
/downloads/ (ne touche jamais /downloads/ lui-même)
- Supprime le torrent de qBittorrent via DELETE avec deleteFiles=true
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remplace les cartes par des lignes compactes (DownloadRow) pour
réduire l'espace vertical de chaque téléchargement
- Pagination côté client (10 par page) avec navigation prev/next
- Reset automatique à la page 1 au changement de filtre
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Après import torrent, refresh automatique des métadonnées uniquement
sur la série importée (via refresh_link) au lieu d'un job complet
- Nouvel endpoint POST /metadata/refresh-link/:id pour rafraîchir un
seul lien metadata approuvé
- Bouton "Rafraîchir" dans la modale metadata (état linked) avec
spinner et confirmation visuelle
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remplace localStorage par des cookies pour la persistance des filtres.
Le proxy restaure les filtres sauvegardés côté serveur, éliminant le flash au chargement.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Endpoint GET /download-detection/latest-found : résultats "found" du
dernier job de détection par bibliothèque
- Section dans la page Téléchargements avec les releases disponibles
groupées par bibliothèque, bouton qBittorrent intégré
- Fix nommage import : exclut les volumes importés de la recherche de
référence (évite le cercle vicieux vol 8 → ref vol 8 → même nom)
- Fix extraction volumes : gère "Tome.007" (point après préfixe) en
plus de "Tome 007" dans extract_volumes_from_title
- Fallback disque pour la référence de nommage quand la DB ne matche pas
- Logging détaillé du processus d'import pour debug
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Nouvelle table `torrent_downloads` pour suivre les téléchargements gérés
- API : endpoint POST /torrent-downloads/notify (webhook optionnel) et GET /torrent-downloads
- Poller background toutes les 30s qui interroge qBittorrent pour détecter
les torrents terminés — aucune config "run external program" nécessaire
- Import automatique : déplacement des fichiers vers la série cible,
renommage selon le pattern existant (détection de la largeur des digits),
support packs multi-volumes, scan job déclenché après import
- Page /downloads dans le backoffice : filtres, auto-refresh, carte par download
- Toggle auto-import intégré dans la card qBittorrent des settings
- Erreurs de détection download affichées dans le détail des jobs
- Volume /downloads monté dans docker-compose
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- metadata_batch, metadata_refresh, reading_status_match, reading_status_push,
download_detection : library_id devient optionnel, la boucle passe côté API
- rebuild (index_jobs.rs), thumbnail_rebuild, thumbnail_regenerate : même logique,
suppression du job unique library_id=NULL au profit d'un job par lib
- Backoffice simplifié : suppression des boucles frontend, les Server Actions
appellent directement l'API sans library_id pour le cas "toutes les librairies"
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add migration 0063 to fuse series where the scanner recreated an
old filesystem-named entry alongside the user-renamed canonical one
(e.g. "LES MYTHICS" alongside "Mythics"). Uses the original_name
column from 0062 to identify and collapse all such duplicates:
reassigns books, external_metadata_links, anilist_series_links, then
deletes the stale series_metadata row.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When the API returns an error (e.g. no approved links for ongoing series),
the catch block was silently returning undefined from the server action,
making the button appear frozen with no feedback to the user.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When a user renames a series via the UI, the scanner was using the
filesystem directory name to overwrite the DB series name, effectively
undoing the rename. This adds an original_name column to series_metadata
that tracks the filesystem-derived name, so the scanner can map it back
to the user-chosen name. The migration also back-fills existing renamed
series by comparing book file paths with DB series names.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Filter jobs by type, status, or library with dropdowns above the table.
Shows filtered count and a clear button when filters are active.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add download_detection to replayable job types and replay route handler.
Give each job type a unique colored background badge for better visual
distinction in the jobs table.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Show a download button on each available release in the detection report
when qBittorrent is configured, matching the Prowlarr search modal behavior.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove dashboard link from desktop/tablet nav (logo already links to /).
Move user switcher into hamburger menu as inline clickable items on mobile.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>