Le canvas PDF restait vide après rendu (blank-detected): la détection d'encre
reposait sur un seuil de blanc trop sensible et un fond de canvas non maîtrisé.
Le rendu passe à un fond sentinel explicite avec classification
rendered-ok/blank-detected et un seuil de pixels visibles.
Le lecteur est par ailleurs ramené à une base minimale stable: layout plein
viewport (app-main-reader), suppression des modes de lecture et des préférences
par livre, helpers de pagination/viewport extraits dans readerLayout.ts. Shell,
lecteurs CBZ/EPUB et styles alignés sur cette base.
Refs #31
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Rendu PDF via module dédié pdfRender (worker), correction des pages
blanches et gestion des timeouts de rendu
- Lecteur comics : crop plein écran, locators de page unifiés (pdf/cbz/cbr)
avec ancrage pour le calcul de progression
- Sauvegarde de progression mise en file (queueSave) pour éviter les
pertes lors des navigations rapides
- nginx/vite : en-têtes et proxy alignés pour le streaming des livres
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>