Commit Graph

340 Commits

Author SHA1 Message Date
2dad295451 fix: supprime le layout shift du bouton Prowlarr sur la page série
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>
2026-03-27 08:44:19 +01:00
f5ddeb461b fix: supprime le layout shift des boutons qBittorrent au chargement
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>
2026-03-27 08:38:57 +01:00
59f9a657a4 feat: lien vers la page série sur les résultats de détection
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 08:31:27 +01:00
4fd6909334 chore: bump version to 2.12.13
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 51s
2026-03-27 08:19:59 +01:00
6580149e85 feat: nettoyage après import — supprime le répertoire source et le torrent qBittorrent
- 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>
2026-03-27 08:19:49 +01:00
fb06dc7f65 chore: bump version to 2.12.12 2026-03-27 08:10:12 +01:00
013d7a50ba fix: onglets settings scrollables horizontalement sur mobile
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 08:07:55 +01:00
5d91ffbc09 fix: responsive mobile de la page téléchargements
- Header : titre réduit et bouton refresh icône seule sur mobile
- Filtres : scroll horizontal, texte compact
- DownloadRow : layout empilé sur mobile (nom+badge / volumes+date)
- Section disponibles : releases empilées, padding réduit, texte compact

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 08:05:11 +01:00
c79bb75b53 chore: bump version to 2.12.11
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 47s
2026-03-26 23:08:47 +01:00
6834d00b15 feat: pagination et lignes compactes sur la page téléchargements
- 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>
2026-03-26 23:08:34 +01:00
ca17d02116 feat: refresh metadata ciblé par série après import et dans la modale
- 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>
2026-03-26 23:05:06 +01:00
072d6870fe feat: persistance des filtres server-side via cookies
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 47s
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>
2026-03-26 22:45:48 +01:00
274b605a27 chore: bump version to 2.12.10 2026-03-26 22:45:46 +01:00
32078c715a feat: section disponibles au téléchargement + fix nommage import
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 43s
- 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>
2026-03-26 22:38:31 +01:00
888db484fb chore: bump version to 2.12.9 2026-03-26 22:36:59 +01:00
d94112bae2 chore: bump version to 2.12.8
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 46s
2026-03-26 22:29:38 +01:00
bbd2be3d7d chore: bump version to 2.12.7
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 45s
2026-03-26 22:23:47 +01:00
e95bfc9676 chore: bump version to 2.12.6 2026-03-26 22:23:03 +01:00
9fce5a946b chore: bump version to 2.12.5 2026-03-26 22:21:51 +01:00
2d74ef1a60 chore: bump version to 2.12.4
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 41s
2026-03-26 22:10:49 +01:00
40e7bd272d chore: bump version to 2.12.3
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 47s
2026-03-26 22:08:06 +01:00
a8f6976f54 chore: bump version to 2.12.2
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 48s
2026-03-26 21:59:39 +01:00
ac53bd950b chore: bump version to 2.12.1
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 55s
2026-03-26 21:46:58 +01:00
ad05f10ab2 fix: remove unused wget install from backoffice Dockerfile
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 7s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 21:09:02 +01:00
6987ef1066 chore: bump version to 2.12.0 2026-03-26 21:09:02 +01:00
21f84dad9d chore: bump version to 2.11.0 2026-03-26 21:09:02 +01:00
8fb273e32e feat: gestion des téléchargements qBittorrent avec import automatique
- 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>
2026-03-26 21:09:02 +01:00
a2de2e1601 chore: bump version to 2.10.0
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 43s
2026-03-26 09:16:50 +01:00
f08fc6b6a6 feat: unify job creation — tous les types créent N jobs par librairie côté backend
- 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>
2026-03-26 09:16:24 +01:00
8f48c6a876 fix: disable Next.js fetch cache for settings API calls
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 08:39:02 +01:00
163e78813e fix: cache getServerSnapshot return value to prevent useSyncExternalStore infinite loop
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 08:37:22 +01:00
ef57ad0631 chore: bump version to 2.9.6
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 45s
2026-03-26 08:09:19 +01:00
6a2e1e4b09 chore: bump version to 2.9.5 2026-03-26 08:07:43 +01:00
4293800f83 chore: bump version to 2.9.4 2026-03-26 08:07:13 +01:00
04971b56e8 fix: merge duplicate series created by pre-rename scanner bug
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>
2026-03-26 08:06:11 +01:00
336c9dc4c7 chore: bump version to 2.9.3 2026-03-26 08:05:43 +01:00
33dabfb250 chore: bump version to 2.9.2 2026-03-26 08:04:37 +01:00
d103dc20df fix: redirect instead of silent return when metadata refresh fails
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>
2026-03-26 08:02:02 +01:00
66d0a9f56d fix: prevent scanner from recreating renamed series
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 47s
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>
2026-03-26 07:00:18 +01:00
c3cbf716a7 chore: bump version to 2.9.1 2026-03-26 07:00:08 +01:00
94a4b7ffcb chore: bump version to 2.9.0
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 55s
2026-03-26 06:37:31 +01:00
684fcf390c feat: add type, status, and library filters to jobs list
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>
2026-03-26 06:37:16 +01:00
34322f46c3 refactor: split job detail page into dedicated components
Extract 8 components from the 1144-line jobs/[id]/page.tsx:
- JobSummaryBanner, JobOverviewCard, JobTimelineCard
- JobProgressCard, IndexStatsCard, ThumbnailStatsCard
- MetadataReportCards, ReadingStatusReportCards
- DownloadDetectionCards, JobErrorsCard

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 06:34:57 +01:00
7db0fb83f8 chore: bump version to 2.8.1
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 44s
2026-03-26 06:27:29 +01:00
d81d941a34 feat: add replay button for download detection jobs and color-coded job type badges
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>
2026-03-26 06:27:04 +01:00
0460ea7c1f feat: add qBittorrent download button to download detection report
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>
2026-03-26 06:24:00 +01:00
a63b658dc4 feat: streamline mobile header navigation
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 52s
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>
2026-03-26 06:19:15 +01:00
7bce41b73b chore: bump version to 2.8.0 2026-03-26 06:19:05 +01:00
0b8264c8d1 chore: update backoffice .env.local default placeholders
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 06:13:48 +01:00
d1261ac9ab feat: replace inline save status with toast notifications in settings
Add a standalone toast notification system (no Provider needed) and use it
for settings save feedback. Skip save when fields are empty. Remove save
button on Anilist local user select in favor of auto-save on change.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 06:13:25 +01:00