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