Skip to content

Add Phase 3: Reading Experience features#10

Merged
gvonness-apolitical merged 2 commits intomainfrom
feature/phase-3-reading-experience
Feb 2, 2026
Merged

Add Phase 3: Reading Experience features#10
gvonness-apolitical merged 2 commits intomainfrom
feature/phase-3-reading-experience

Conversation

@gvonness-apolitical
Copy link
Copy Markdown
Collaborator

Summary

  • Table of Contents: Extract and display TOC from EPUB, PDF, and CBZ formats
  • Zoom & Display: 50%-300% zoom with fit modes and keyboard shortcuts (Ctrl+/-/0)
  • Layout Toggle: 1-page and 2-page spread views for PDF and CBZ
  • Minimizable Toolbar: Icon-only controls that start minimized, expand on click
  • Session Persistence: Zoom level and scroll positions persist during navigation

New Components

  • ZoomController - Manages zoom state with clamping (0.5-3.0)
  • DisplayController - Manages layout and scroll position persistence
  • ReaderToolbar - Minimizable toolbar with TOC, zoom, layout, and nav controls
  • TocPanel - Slide-in TOC navigation with tree structure
  • ZoomControls - Zoom in/out buttons with percentage display

Test plan

  • Unit tests for ZoomController (21 tests)
  • Unit tests for DisplayController (15 tests)
  • E2E tests pass on Chromium (17 passed)
  • Visual regression snapshots updated
  • Build passes
  • Lint passes

- Table of Contents: Extract and display TOC from EPUB (foliate-js toc), PDF
  (outline), and CBZ (folder structure)
- Zoom & Display: ZoomController with 50%-300% range, fit modes (page/width/none),
  keyboard shortcuts (Ctrl+/-/0)
- Layout Toggle: 1-page and 2-page spread views for PDF and CBZ
- Minimizable Toolbar: Icon-only controls with expand/collapse, replaces old
  navigation buttons
- New UI Components: ReaderToolbar, TocPanel (slide-in), ZoomControls
- DisplayController for session-only zoom/scroll position persistence
- Auto-switch to single-page layout on narrow viewports (<768px)
- Unit tests for ZoomController and DisplayController (36 new tests)
- Updated E2E tests and visual regression snapshots
- Fix CBZ scroll clipping: use margin:auto instead of justify-content:center
  to allow full scrolling when zoomed in
- Add persistent scrollbars with styling when content overflows
- Reduce zoom step from 10% to 5% for smoother transitions
- Add `locked` property to disable loadFile() and lock to src/manifest
@gvonness-apolitical gvonness-apolitical merged commit 2939cc1 into main Feb 2, 2026
3 checks passed
@gvonness-apolitical gvonness-apolitical deleted the feature/phase-3-reading-experience branch February 2, 2026 00:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant