1.**Auto-sync** - Sessions already matched during extraction (by file hash) are uploaded immediately.
2.**Manual matching** - For each unmatched book the plugin attempts to find a match automatically using three strategies in order:
-**ISBN**— searches by ISBN-13 or ISBN-10 if embedded in the file metadata. If a match is found you are shown a confirmation dialog with "Proceed" / "Manual Match" / "Skip" options.
-**Hash**— queries the server by the file's MD5 hash. Auto-accepted if a match is returned.
-**Title search**— falls back to a title search and presents up to 5 results with match scores. Tap a result to confirm; tap "Skip this book" or "Cancel matching" to move on.
-**ISBN**- searches by ISBN-13 or ISBN-10 if embedded in the file metadata. If a match is found you are shown a confirmation dialog with "Proceed" / "Manual Match" / "Skip" options.
-**Hash**- queries the server by the file's MD5 hash. Auto-accepted if a match is returned.
-**Title search**- falls back to a title search and presents up to 5 results with match scores. Tap a result to confirm; tap "Skip this book" or "Cancel matching" to move on.
Once confirmed, the sessions for that book are uploaded immediately.
@@ -86,7 +86,7 @@ Iterates over all books in the local cache that have no BookLore match yet, and
For each unmatched book an input dialog is shown, pre-filled with the book's cached title. You can:
-**Edit the title** and press Search to search BookLore by title — up to 5 results are shown with match scores; tap a result to confirm the match.
-**Edit the title** and press Search to search BookLore by title - up to 5 results are shown with match scores; tap a result to confirm the match.
-**Enter a numeric ID** instead of a title to fetch a specific book directly from BookLore by its ID. The match is saved immediately without a confirmation step.
@@ -65,8 +65,8 @@ Enable **Debug Logging** and **Secure Logs** together before capturing a log to
When enabled, the plugin prompts for confirmation before turning on WiFi for any sync operation. The prompt shows the action that requires WiFi (for example, "sync sessions" or "upload annotation"). Two options are presented:
-**Enable**— turns on WiFi and proceeds with the action.
-**Skip**— leaves WiFi off; the action is deferred and data remains in the pending queue for the next sync opportunity.
-**Enable**- turns on WiFi and proceeds with the action.
-**Skip**- leaves WiFi off; the action is deferred and data remains in the pending queue for the next sync opportunity.
When disabled, the plugin enables WiFi automatically without prompting whenever a sync requires it.
@@ -80,7 +80,7 @@ Writes the current plugin configuration to a JSON file at:
Sensitive fields are excluded from the export: server URL, username, and password are never written to the file. All other settings — sync mode, thresholds, feature toggles, and logging options — are included.
Sensitive fields are excluded from the export: server URL, username, and password are never written to the file. All other settings - sync mode, thresholds, feature toggles, and logging options - are included.
A confirmation toast shows the full path when the export succeeds.
@@ -31,7 +31,7 @@ Before syncing, a confirmation dialog warns:
> **Will only sync to webUI, not in book, as spine is missing**
This is because the book is not currently open, so no live rendering context (spine) is available. Annotations are sent to BookLore's web interface — they appear in BookLore but cannot be injected back into the book file itself. Tap **Continue** to proceed.
This is because the book is not currently open, so no live rendering context (spine) is available. Annotations are sent to BookLore's web interface - they appear in BookLore but cannot be injected back into the book file itself. Tap **Continue** to proceed.
The plugin reads annotations from the book's sidecar (`.sdr`) directory on disk and uploads any that have not already been synced. A toast shows how many were synced or failed.
@@ -63,7 +63,7 @@ Description: **accepts title or id**.
Tapping **Match Book** opens an input dialog pre-filled with the book's title (or filename if no title is known). You can:
-**Edit the search term** and tap **Search** to find the book by title.
-**Enter a numeric BookLore ID** (e.g. `42`) and tap **Search** to match directly by ID — no confirmation dialog is shown.
-**Enter a numeric BookLore ID** (e.g. `42`) and tap **Search** to match directly by ID - no confirmation dialog is shown.
**Title search** returns up to five results, each showing the title, author, and a match-score percentage. Tap a result to confirm the match.
@@ -88,7 +88,7 @@ When tracking is disabled:
- No session is recorded when you open, close, or sleep while reading the book.
- No annotations or ratings are synced for the book.
- The book is silently skipped — no notification is shown.
- The book is silently skipped - no notification is shown.
The tracking state is stored in the local database (`tracking_enabled` column in `book_cache`) and persists across KOReader restarts.
description="Official documentation for the Booklore Sync KOReader plugin. Automatically track reading sessions, sync ratings, highlights, and notes to your self-hosted Booklore server."
theme="tanuki"
# Whether to automatically compile all Sass files in the sass directory