feat(annotations): add a library-wide notebook for every book

Add read-only /notebook routes that list highlights, journal entries, bookmarks and reviews
across every book a reader can open, as one cursor-paged stream with per-kind counts, a By Book
listing, a daily review deck, a seeded review shuffle, On this day and a library-wide trash. Each
kind is read through its own index-ordered arm cut at the page size before a UNION ALL merge, so a
deep page costs what the first does, and book labels travel once per page in a sidecar map.

Scope follows library access and content filters. Everything is additive and advertised as the
notebook-hub app-info feature. The iOS app calls these routes and the web client does not yet, so
they look unused from the client alone. No migration: the extra indexes for the edited sort and
search wait until the chapter-editor migrations land.
This commit is contained in:
neon
2026-10-04 23:39:10 +00:00
parent ff880a470c
commit a24dc2e2cc
25 changed files with 3706 additions and 1 deletions
+2
View File
@@ -38,6 +38,7 @@ import { AuthModule } from './modules/auth/auth.module';
import { CbzModule } from './modules/reader/cbz/cbz.module';
import { BookmarkModule } from './modules/bookmark/bookmark.module';
import { BookJournalModule } from './modules/book-journal/book-journal.module';
import { NotebookModule } from './modules/notebook/notebook.module';
import { BookModule } from './modules/book/book.module';
import { CatalogModule } from './modules/catalog/catalog.module';
import { CoverModule } from './modules/cover/cover.module';
@@ -160,6 +161,7 @@ import { PodcastModule } from './modules/podcast/podcast.module';
BookmarkModule,
BookJournalModule,
AnnotationModule,
NotebookModule,
DashboardModule,
HealthModule,
CbzModule,