+267
−0
Loading
- Capture bookmarks from live ReaderBookmark module (self.ui.bookmark.bookmarks) at onCloseDocument time — same in-memory hijack used for annotations - syncBookmarks(): dedup via synced_bookmarks, queue via pending_bookmarks, EPUB CFI via buildCfi, PDF mock CFI via buildMockPdfCfi, sidecar fallback - syncPendingBookmarks(): retry queued bookmarks on next syncPendingSessions call - APIClient:submitBookmark(): POST /api/v1/bookmarks with bookId, cfi, chapterTitle, notes; handles 401/403 token refresh - DB migration 16: pending_bookmarks + synced_bookmarks tables with indexes - Phase 2b in syncPendingSessions() retries pending bookmarks alongside pending annotations and ratings