- Backend: EBookHighlights and EBookBookmarks models with encrypted blob storage; GET/POST views with size guards (700 KB / 100 KB); migration applied - Reader header: search, settings, bookmark add/list buttons - Font & layout settings panel (font size, line height, max width, themes for EPUB; zoom, invert, paginated for PDF); persisted in localStorage - Bookmarks: encrypted per-book blob, toast on add, sidebar with jump/delete - Full-text search: EPUB TreeWalker mark injection, PDF span search; Ctrl+F / F3; arrow key cycling; highlights re-applied on search clear - PDF paginated mode: single-page view, tap-zone / swipe / arrow key navigation, smart zoom (text bounding box → scale+translate canvas), auto-enable on mobile - Progress tracking fixes: save before hiding overlay (was always writing 100%), wait for EPUB images to load before restoring scroll, PDF paginated uses page fraction, sendBeacon cache for unload/visibilitychange reliability - PDF text layer disabled pending overlay rendering fix Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
12 lines
556 B
Python
12 lines
556 B
Python
from django.urls import path
|
|
from . import views
|
|
|
|
urlpatterns = [
|
|
path('', views.book_list, name='book_list'),
|
|
path('upload/', views.upload_book, name='upload_book'),
|
|
path('<int:pk>/data/', views.get_book_data, name='get_book_data'),
|
|
path('<int:pk>/delete/', views.delete_book, name='delete_book'),
|
|
path('<int:pk>/progress/', views.save_progress, name='save_book_progress'),
|
|
path('<int:pk>/highlights/', views.book_highlights, name='book_highlights'),
|
|
path('<int:pk>/bookmarks/', views.book_bookmarks, name='book_bookmarks'),
|
|
]
|