Recherche de fiches par nom peu fiable : sans ISBN, les providers
étaient interrogés avec des titres bruts peu discriminants.
- extraction de hints locaux (titre/auteur/année/isbn du fichier et du
nom de fichier) persistés dans books.local_metadata_json
- nouveau use-case ScoreMetadataMatch : tri des résultats par score de
correspondance avant sélection du meilleur candidat
- providers (google-books, open-library, bnf, local) durcis et nourris
par les hints ; colonne + index local_metadata_json avec migrations
idempotentes (création et rebuild legacy)
- web : nettoyage de la description de la fiche livre
(cleanBookDescription, white-space pre-line)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Régression worker PDF : le worker pdf.js est désormais instancié une
seule fois via un port dédié (?worker&url) et reconfiguré à chaque
montage, au lieu d'un workerSrc recalculé qui cassait le rendu.
- ReaderShell : chrome commun aux lecteurs (toolbar, zones de tap,
statut) et contrat ReaderControls pour EPUB/PDF/CBZ
- préférences de lecture par livre (mode horizontal/vertical, fit) :
table reader_preferences + migrations idempotentes, module API,
DTO partagés, client web avec fallback localStorage hors-ligne
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
La création d'une bibliothèque déclenche un scan initial avec état de
réessai en cas d'échec; suppression des fallbacks mock sur create/scan
pour ne masquer aucune erreur réelle.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Composant ReaderError avec diagnostic et actions de repli, worker
pdf.js servi localement (pdfWorker) pour éviter les CDN, typage du
view foliate, navigation retour vers la fiche livre et styles lecteur
associés.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Configuration des providers (activation, priorité, clé API), réglages
d'automatisation (watch des bibliothèques, auto-enrichissement,
planifications scan/enrichissement) et déclenchement manuel, avec
client API, mocks et styles associés.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- web: gestion d'erreur et d'état vide sur SearchPage/AdminPage
- web: client API — traitement des réponses sans contenu/erreurs réseau
- api: jobs.service — éviter le statut de scan perpétuellement en cours
- tests: client.test.ts
Refs: #12 (QA non-GREEN faute d'exécution, pas d'échec réel)