Reader improvements #7

Open
opened 2026-04-05 12:24:38 +00:00 by mrwnslz · 2 comments
Owner

Sammlung von Verbesserungen am Buch-Reader, umgesetzt in mehreren Sessions.

Umgesetzt

PDF-Ansicht

  • Zwei-Seiten-Spread-Modus: Neuer "Spread"-Button in den Reader-Einstellungen. Seite 1 wird allein angezeigt (Cover), danach Paare (2+3, 4+5, ...) nebeneinander. Volle Bildschirmbreite, kein 900px-Cap mehr. Navigation und Scroll-Position funktionieren unverändert.
  • Pinch-to-Zoom auf Mobile: Zwei-Finger-Pinch wird vom PDF-Viewer abgefangen, blockiert nativen Browser-Zoom. Live CSS-Zoom während der Geste, snappt beim Loslassen auf 10%-Schritte. Einzel-Finger-Scroll unberührt. Touch-Listener werden beim Schließen des Readers korrekt aufgeräumt.

Reader-Einstellungen

  • Pro-Buch gespeichert: Einstellungen (Zoom, Spread, Invert, Theme, etc.) werden per localStorage unter diora_reader_settings_{bookId} gespeichert. Jedes Buch hat seinen eigenen Stand, beim Öffnen werden die Defaults zurückgesetzt und buch-spezifische Werte übernommen.
  • Settings-Panel schließt beim Tap auf Content: Wenn die Bars im Immersive-Mode verschwinden (Tap auf Content), wird das geöffnete Settings-Panel mitgeschlossen.

Upload & Dateilimits

  • Neue Bücher oben in der Liste: Beim Upload wird direkt ein EBookProgress-Eintrag angelegt, sodass neue Bücher sofort einen last_read-Timestamp haben und ganz oben erscheinen.
  • 50 MB Limit: EBOOK_MAX_BYTES war bereits korrekt in settings.py, aber Frontend prüfte noch 10 MB — korrigiert. Backend-Fehlermeldung ebenfalls angepasst.
  • Zentralisierte Upload-Limits: EBOOK_MAX_BYTES, BG_MAX_BYTES, HIGHLIGHTS_MAX_BYTES, BOOKMARKS_MAX_BYTES, PODCAST_INBOX_PAGE_SIZE, VOLUME_DEFAULT, ITUNES_TIMEOUT alle in settings.py. Frontend liest via DIORA_CONFIG (Context Processor → base.html).

Offen / Mögliche Folgearbeit

  • Pinch-Zoom Snap-Stufe konfigurierbar machen (aktuell fest auf 10%)?
  • Spread-Modus: Option für gerade/ungerade Seiten-Zuordnung (für PDFs wo Seite 1 keine Titelseite ist)?
  • Reader-Einstellungen: Export/Import über Geräte hinweg (aktuell nur localStorage)?
Sammlung von Verbesserungen am Buch-Reader, umgesetzt in mehreren Sessions. ## Umgesetzt ### PDF-Ansicht - **Zwei-Seiten-Spread-Modus**: Neuer "Spread"-Button in den Reader-Einstellungen. Seite 1 wird allein angezeigt (Cover), danach Paare (2+3, 4+5, ...) nebeneinander. Volle Bildschirmbreite, kein 900px-Cap mehr. Navigation und Scroll-Position funktionieren unverändert. - **Pinch-to-Zoom auf Mobile**: Zwei-Finger-Pinch wird vom PDF-Viewer abgefangen, blockiert nativen Browser-Zoom. Live CSS-Zoom während der Geste, snappt beim Loslassen auf 10%-Schritte. Einzel-Finger-Scroll unberührt. Touch-Listener werden beim Schließen des Readers korrekt aufgeräumt. ### Reader-Einstellungen - **Pro-Buch gespeichert**: Einstellungen (Zoom, Spread, Invert, Theme, etc.) werden per `localStorage` unter `diora_reader_settings_{bookId}` gespeichert. Jedes Buch hat seinen eigenen Stand, beim Öffnen werden die Defaults zurückgesetzt und buch-spezifische Werte übernommen. - **Settings-Panel schließt beim Tap auf Content**: Wenn die Bars im Immersive-Mode verschwinden (Tap auf Content), wird das geöffnete Settings-Panel mitgeschlossen. ### Upload & Dateilimits - **Neue Bücher oben in der Liste**: Beim Upload wird direkt ein `EBookProgress`-Eintrag angelegt, sodass neue Bücher sofort einen `last_read`-Timestamp haben und ganz oben erscheinen. - **50 MB Limit**: `EBOOK_MAX_BYTES` war bereits korrekt in `settings.py`, aber Frontend prüfte noch 10 MB — korrigiert. Backend-Fehlermeldung ebenfalls angepasst. - **Zentralisierte Upload-Limits**: `EBOOK_MAX_BYTES`, `BG_MAX_BYTES`, `HIGHLIGHTS_MAX_BYTES`, `BOOKMARKS_MAX_BYTES`, `PODCAST_INBOX_PAGE_SIZE`, `VOLUME_DEFAULT`, `ITUNES_TIMEOUT` alle in `settings.py`. Frontend liest via `DIORA_CONFIG` (Context Processor → `base.html`). ## Offen / Mögliche Folgearbeit - Pinch-Zoom Snap-Stufe konfigurierbar machen (aktuell fest auf 10%)? - Spread-Modus: Option für gerade/ungerade Seiten-Zuordnung (für PDFs wo Seite 1 keine Titelseite ist)? - Reader-Einstellungen: Export/Import über Geräte hinweg (aktuell nur localStorage)?
Author
Owner

das rendering von PDFs beim zoom in der chrome PWA funktioniert nicht richtig. es ist verschwommen

das rendering von PDFs beim zoom in der chrome PWA funktioniert nicht richtig. es ist verschwommen
Author
Owner

Fix: verschwommenes PDF-Rendering beim Zoom (commit f5c1416)

Problem: Zoom wurde per CSS zoom-Property auf den bereits gerenderten Canvas angewendet. Das streckt vorhandene Pixel, was bei hohem DPR (PWA auf Mobile) sichtbar verschwommen wird.

Fix: Zoom wird jetzt direkt in den PDF.js-Renderscale eingerechnet (scale * zoomFactor). Der Canvas wird also von vornherein mit der richtigen Auflösung gerendert — keine Streckung, keine Unschärfe.

Nebeneffekt: currentPdfDoc wird beim Re-Render nicht mehr genullt, dadurch bleibt der PDF.js-Page-Cache erhalten und Zoom-Re-Renders sind deutlich schneller.

**Fix: verschwommenes PDF-Rendering beim Zoom (commit f5c1416)** Problem: Zoom wurde per CSS `zoom`-Property auf den bereits gerenderten Canvas angewendet. Das streckt vorhandene Pixel, was bei hohem DPR (PWA auf Mobile) sichtbar verschwommen wird. Fix: Zoom wird jetzt direkt in den PDF.js-Renderscale eingerechnet (`scale * zoomFactor`). Der Canvas wird also von vornherein mit der richtigen Auflösung gerendert — keine Streckung, keine Unschärfe. Nebeneffekt: `currentPdfDoc` wird beim Re-Render nicht mehr genullt, dadurch bleibt der PDF.js-Page-Cache erhalten und Zoom-Re-Renders sind deutlich schneller.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: mrwnslz/diora-web#7
No description provided.