Releases: bookorbit/bookorbit
Release list
v2.3.0
Highlights
- Crowdin-powered translations - BookOrbit now supports English, German, Dutch, Brazilian Portuguese, and Slovenian. Help improve existing translations or contribute a new one on Crowdin; requests for additional languages are welcome.
- Faster navigation in large libraries - An adaptive jump rail lets you quickly move through a library by title, author, series, date added, publication date, and more. Choose the display style that suits you in your library preferences.
- Duplicate book resolution - Find potential duplicate books in your library, compare their metadata, and resolve them without leaving BookOrbit.
- More metadata sources - Libro.fm is now available as a metadata source, improving metadata matches for audiobooks.
- Improved readers and device sync - The PDF reader has received a visual polish and more reliable page rendering. KOReader synchronization no longer blocks its interface, Kobo sync avoids reading-state feedback loops, and reading sessions retain their full duration.
-
New reading insights - Explore privacy-aware statistics and keep a history of every reading attempt, including books you started but did not finish.
-
Personalize your experience - Use your system color-scheme preference automatically, or turn off achievements and gamification when you prefer a quieter reading experience.
Features
- settings: allow users to disable achievements and gamification (f6e0cbd5) by @neonsolstice
- reader: polish the PDF reading experience (a83f258b) by @neonsolstice
- library: refactor creator modal and virtualize folder browser (0707e477) by @neonsolstice
- metadata: add Libro.fm as a metadata source (890c7183) by @neonsolstice
- stats: add reading attempt history (130bdd07) by @neonsolstice
- client: add Dutch language localization (0258343b) by @Dennis-van-der-Stelt
- stats: expose privacy-aware reading insights (e110f9f5)
- koreader: enhance settings and plugin behavior (6df9cbb5)
- client: add Brazilian Portuguese language localization (d0b052be) by @zanivann
- books: add duplicate book detection and resolution tools (da50bbcf) by @neonsolstice
- client: support system theme mode (d9cf2a71) by @neonsolstice
- books: add adaptive temporal jump rail (bb638da8) by @neonsolstice
- books: expand and refine library jump navigation (b6b31182) by @neonsolstice
- books: add jump rail display preference (d1f259c4) by @neonsolstice
Bug Fixes
- metadata: preserve embedded metadata on new book imports (863be60e) by @neonsolstice
- kobo: strip leading v from server version in KOReader plugin (12967c38) by @neonsolstice
- storygraph: skip progress sync on read transition (75c4641a) by @neonsolstice
- books: support accent-insensitive search (77e4a783) by @neonsolstice
- client: add annotations to mobile dropdown menu (f49dd171) by @neonsolstice
- reader: run KOReader sync jobs and HTTP requests asynchronously (5664466e) by @neonsolstice
- scanner: support bigint inodes to prevent folder mis-merges (2b9b2c51) by @neonsolstice
- reader: preserve native text selection touch gestures (6c76a788) by @neonsolstice
- reader: render PDF pages on initial layout (dad8dd40) by @neonsolstice
- annotations: open non-EPUB annotations in the correct reader (5102faa4) by @neonsolstice
- metadata: improve Libro.fm metadata integration (3d9004a9) by @neonsolstice
- kobo: prevent reading-state sync feedback loop (ec433674) by @neonsolstice
- metadata: fall back to file name when Book Dock title is missing (f5de58d5) by @neonsolstice
- kobo: preserve reading session duration without subtracting idle time (880d761e) by @neonsolstice
- library: filter entity duplicate detection by accessible libraries (daccefb9) by @neonsolstice
- authors: allow closing author enrichment progress notification (4cf74819) by @neonsolstice
- metadata: support MP4 native series tags in audio format writer and extractor (494f2104) by @neonsolstice
- annotations: filter deleted highlights from the highlight widget (d4a432bd) by @neonsolstice
- stats: convert PostgreSQL storage sum from string to number (3f5cc858) by @neonsolstice
- metadata: persist Hardcover and Open Library IDs during Book Dock import (fb6f980b) by @neonsolstice
Internationalization
- client: sync translations from Crowdin (4c842e89) by @neonsolstice
- client: sync translations from Crowdin (24924fbe) by @neonsolstice
Security
- remediate dependency and code scanning alerts (79ab72a8) by @neonsolstice
Database
- library: add missing foreign key indexes for deletion (c809418f) by @neonsolstice
Docker
docker pull ghcr.io/bookorbit/bookorbit:2.3.0Multi-arch: linux/amd64 and linux/arm64.
v2.2.0
Highlights
- KOReader plugin upgrades - The plugin now serializes sync jobs to avoid conflicts and syncs your personal reviews and ratings with BookOrbit. Book detail pages surface related series, authors, and similar books, while download actions and tall-screen catalog layouts are easier to use on-device.
- Readwise and StoryGraph sync - Send BookOrbit highlights to Readwise automatically. Sync reading status and progress to StoryGraph too, with per-book controls, automatic matching, and manual edition selection when a match needs attention.
- Better Book Dock imports - Pause and resume a Book Dock import when you need to inspect files, storage, or metadata before continuing. During finalization, discard unwanted duplicate books directly instead of importing them and cleaning up afterward.
- Personal reviews and richer metadata - Keep private reviews alongside your books and clear a rating when it no longer reflects your opinion. Full publication dates are now stored instead of year-only values, preserving more accurate edition metadata.
-
More reliable Kobo sync - Sync Smart Scopes to Kobo to keep device collections aligned with your BookOrbit library. Library snapshots and reading progress are now tracked separately for every device, improving visibility and reliability when you use more than one Kobo.
-
More flexible reading - Go fullscreen in every reader for a cleaner, distraction-free reading view. Books marked want to read can now receive progress updates too, so you do not need to change their status before you start.
Features
- books: add AudiobookCovers.com as a cover search source (#565) (7184294) by @Dukko, closes #564
- books: allow progress updates for manual want_to_read books (08dcf6e) by @neonsolstice, closes #566
- books: export single-book zip with pattern-based filename (9f2c860) by @neonsolstice
- books: support reviews, rating removal, and plugin enhancements (117e1cf) by @neonsolstice, closes #552
- client: make dashboard greeting respect user timezone (c5034b5) by @neonsolstice, closes #551
- kobo: clarify collection sync requirement in settings (5f2a6d6) by @neonsolstice, closes #522
- kobo: sync smart scopes to kobo (#570) (7e48d59) by @imanel, closes #202
- library: allow discarding duplicate books from finalize dialog (daed6ce) by @neonsolstice, closes #591
- library: allow pausing book dock import task (df05db1) by @neonsolstice, closes #593
- library: support LIBRARY_BROWSE_ROOT to restrict file path access (38ee01f) by @neonsolstice, closes #567
- library: use configurable max upload size limit (17516ec) by @neonsolstice, closes #550
- metadata: add full publication date support (#598) (6f6f727) by @chrismansell26, closes #596
- opds: honor configured download file pattern for downloads (e1866b2) by @neonsolstice, closes #569
- reader: adapt KOReader catalog layouts for tall screens (f855fa9) by @neonsolstice, closes #526
- reader: improve KOReader book details and download button label (6f021a0) by @neonsolstice
- reader: serialize and coordinate sync jobs in KOReader plugin (e4d8dcf) by @neonsolstice
- reader: support fullscreen mode in all readers (3d09b14) by @neonsolstice, closes #561
- readwise: sync highlights to Readwise (#578) (74e009b) by @oscarnogueira
- series: display multiple series memberships (#597) (acf6371) by @chrismansell26, closes #595
- smart-scope: add toggle to collapse series in smart scopes (a6e9397) by @neonsolstice, closes #609
- storygraph: add StoryGraph sync integration (#568) (2937606) by @blinkidy, closes #274
Bug Fixes
- books: add support for collapsed series in list view (bc3423a) by @neonsolstice, closes #586
- books: clear reading progress and history when resetting book (dc2eea7) by @neonsolstice, closes #606
- books: skip rename if metadata write fails (0a1f411) by @neonsolstice, closes #532
- dashboard: exclude finished books from continue reading (640c9c0) by @neonsolstice, closes #528
- kobo: stop proxying delete requests for bookorbit collection tags (89773af) by @neonsolstice, closes #536
- kobo: sync reading progress when two-way sync is disabled (33222d8) by @neonsolstice, closes #584
- kobo: track library snapshots and sync progress per device (723ab63) by @neonsolstice, closes [#314](https://githu...
v2.1.0
Highlights
- KOReader plugin improvements - Several quality-of-life additions to the KOReader plugin: bulk book selection and download in the catalog, skip automatic progress sync when offline, a system action shortcut to jump to your BookOrbit dashboard, device removal and unmatched book tracking surfaced in the settings panel, and manual book hash linking to resolve unmatched books without a full rescan.
- Custom icons support - Libraries, shelves, and collections can now display custom icons, letting you personalise your library at a glance.
- Rich text description formatting bar - The book description editor now has a formatting toolbar. Bold, italic, links, and lists are all available without leaving the metadata panel.
- Kobo device sync history - A new sync history view in the Kobo settings panel shows the timestamp and outcome of every past sync session, making it easy to diagnose sync problems.
-
Import Booklore reading state - Users migrating from Booklore can now import their reading progress and history directly, so your reading journey carries over intact.
-
Custom metadata fields in table view - Custom fields defined for a library now appear as sortable columns in the book table view.
-
Book Dock work queue and adaptive heap - Book Dock processing now runs through a managed work queue to prevent pipeline overload. The Node.js heap is also auto-sized based on available memory, reducing OOM crashes on memory-constrained servers.
-
Public API documentation (Swagger) - A Swagger UI is now available at
/api/docsfor exploring and testing the public REST API.
Features
- icons: add custom icons support (e6380c8) by @neonsolstice
- books: add rich text description formatting bar (3093713) by @neonsolstice, closes #460
- books: surface custom metadata fields in table view (527fb3c) by @neonsolstice, closes #465
- client: expand global search to display all matching books (54e228e) by @neonsolstice, closes #480
- kobo: add catalog bulk download and selection to KOReader plugin (c0adecd) by @neonsolstice, closes #478
- kobo: add device sync history tracking (7699719) by @neonsolstice
- kobo: add manual KOReader book hash linking and unmatched tracking (1c15bc5) by @neonsolstice, closes #458
- koreader: add option to skip auto-sync when offline (4472501) by @neonsolstice, closes #471
- koreader: add system action to open dashboard in koreader plugin (d215c8b) by @neonsolstice, closes #449
- library: allow renaming books into existing folders (e18d7fe) by @neonsolstice, closes #523
- metadata: allow manual search with providers outside field rules (89275ac) by @neonsolstice
- metadata: parse Calibre #extra_tags custom column into book tags (#476) ([0a4df27]
- reader: add KOReader device removal and unmatched book tracking (28f6dff) by @neonsolstice, closes #504
- reader: add persistent sidebar pin (d573f3a) by @neonsolstice, closes #497
- reader: support single-page mode for fixed-layout epubs (ccc7d70) by @neonsolstice, closes #487
- scanner: add work queue for book dock pipeline and auto-size node heap (1f7620a) by @neonsolstice, closes #441
- server: add swagger setup for public api documentation (ae74b35) by @neonsolstice, closes #399
- server: import Booklore reading state (702b4eb) by @neonsolstice, closes #482 #483
- smart-scope: support provider filtering for community ratings (046dd0f) by @neonsolstice, closes #477
- stats: demote reading source in default charts and breakdowns (691f1d2) by @neonsolstice
- users: allow setting default library access for new users (169b775) by @neonsolstice, closes #486
Bug Fixes
- aladin: use ItemLookUp for ISBN search instead of keyword lookup (#470) (5e3b18e) by @kyungw00k, closes #437
- authors: chunk inserts to prevent call stack overflow on backfill (cb4edec) by @neonsolstice, closes #452
- authors: wire author book delete action (d38b7c6) by @neonsolstice, closes #211
- books: cast date offset to int to fix smart scope crash (c4e6125) by @neonsolstice, closes #508
- books: restore metadata editing for multiple selected books (7d37c12) by @neonsolstice, closes #455
- client: prevent cached state leaking across user sessions (54178fc) by @neonsolstice, closes #510
- dashboard: exclude active and read books from discover something new (76aabcb) by @neonsolstice, closes #484
- library: rename all audio tracks of multi-file audiobooks (61c5f9f) by @neonsolstice, closes #521
- metadata: add poppler pdfinfo fallback for pdf metadata parsing (aa5eed5) by @neonsolstice, closes [#491](...
v2.0.1
Highlights
- Full KOReader integration via BookOrbit Plugin - KOReader is now a first-class citizen. The Bookorbit plugin syncs your reading progress automatically as you read, uploads your entire read history in a single sweep, and keeps your highlights and notes in sync. A built-in catalog lets you browse and download books from your Bookorbit library without leaving your e-reader.
- Annotations sync across all three platforms - Highlights and notes from Kobo, KOReader, and the built-in web reader now live in one place. Annotations survive file updates and format changes, and are never lost to duplicate detection or sync conflicts.
- New Annotations Hub - A dedicated page showing all your highlights and notes across every book and library. Filter by book, annotation style, or source (Kobo / KOReader / web reader), select in bulk, and export.
- Revamped Reading Log - The per-book reading log is completely rebuilt. See total reading time, session count, start and finish dates, and an achievement ring at a glance. A per-book activity heatmap shows your reading rhythm over time. A journey chart plots your progress across the life of the book. A source breakdown shows how much you read on each device. You can now log manual sessions directly from this tab too.
- Custom book metadata fields - Define your own fields on top of the standard metadata set - text, URL, number, date, or boolean. Fields can be scoped to specific libraries, and their values are saved back into your EPUB, PDF, and CBZ files.
- Community ratings from all providers - Book details now show community scores and vote counts from every configured metadata provider (Goodreads, Hardcover, Amazon, Audible, Google Books, iTunes, OpenLibrary, RanobeDB), right alongside the rest of the metadata.
- Per-book Hardcover sync controls - Choose between two sync modes: sync all eligible books by default, or only sync books you explicitly opt in. A per-book toggle on the book detail page gives you fine-grained control, and unread books are handled correctly - your choice is remembered and sync activates automatically when you start reading.
- Source distribution chart in statistics - A new chart on the statistics page breaks down your total reading time by source - Kobo, KOReader, and web reader - so you know exactly where you do most of your reading.
Action Required: Replace the KOReader Plugin
The old plugin is not compatible with v2.0.1. You must replace it manually - the in-KOReader update mechanism cannot perform this migration.
- On your device, delete the
bookorbit.kopluginfolder fromkoreader/plugins/. - In the BookOrbit web UI, go to Settings > KOReader and click Download Plugin.
- Extract the zip and copy the
bookorbit.kopluginfolder intokoreader/plugins/. - Restart KOReader.
The downloaded plugin is already preconfigured with your server URL and credentials - no pairing step needed. Your reading progress and annotations on the server are untouched by this upgrade.
Video Walkthroughs (No Audio):
- Overview, Book Browser and Two-Way Progress Sync
- Two-Way Annotation Sync and Management
- Reading Sessions Sync
Features
- sync: three way (kobo, koreader and bookorbit) progress and annotation sync (6da3c910) by @neonsolstice
- kobo: add KOReader catalog plugin integration (1e58f21b) by @neonsolstice
- metadata: add configuration for custom book metadata fields (498d23ca) by @neonsolstice
- metadata: add community rating and rating count (ab371077) by @neonsolstice
- metadata: store and write hardcover edition IDs (934f7cea) by @neonsolstice
- hardcover: add per-book sync controls and book sync scope (780064ab) by @neonsolstice
- book-dock: allow importing duplicates and same-path collisions (5dcd4196) by @neonsolstice
Bug Fixes
- kobo: support syncing native kepub files (a9b4d218) by @neonsolstice
- library: lock organization mode after creation (856e6084) by @neonsolstice
- metadata: preserve Book Dock epub metadata (3c4cdd13) by @neonsolstice
- metadata: prioritize edition release date over book release year (3b43edf1) by @neonsolstice
- metadata: use ISBN context for Hardcover slug lookup (cfc24343) by @neonsolstice
- metadata: always unpause queue on manual trigger (5542f1bc) by @neonsolstice
- metadata: persist auto-fetch library overrides (e2522652) by @neonsolstice
- client: preserve scroll position when navigating back to book grid views (f64a87d8) by @neonsolstice
- server: resolve bulk selection queries for collections and email (db813413) by @neonsolstice
- reader: skip throttling for EPUB file streams (61181cc7) by @neonsolstice
Docker
docker pull ghcr.io/bookorbit/bookorbit:2.0.1Multi-arch: linux/amd64 and linux/arm64.
v1.12.0
Highlights
- Import books directly from Hardcover - A new import workflow lets you pull books from your Hardcover account into your library without manual entry.
- Match books to multiple series at once - The series-matching workflow now supports picking more than one series in a single operation, making it faster to handle crossovers and shared universes.
- Empty entity cleanup controls - A new settings control lets you find and remove authors, series, and other entities that no longer have any books attached.
Features
- hardcover: add Hardcover import workflow (f3c2814) by @neonsolstice, closes #394
- metadata: add empty entity cleanup controls (8fb6cc4) by @neonsolstice, closes #370
- metadata: allow matching of multiple series (e89409d) by @neonsolstice, closes #383
- metadata: scope provider metadata fields by library (f28fc68) by @neonsolstice, closes #320
Bug Fixes
- books: prevent focus loss when typing in empty series row (fe61ffa) by @neonsolstice, closes #370
- client: fix copy to clipboard fallback mechanism (61dd98d) by @neonsolstice, closes #204
- cover: extract first naturally-sorted image for cbz cover (c85d727) by @neonsolstice, closes #378
- kobo: prevent sync crashes on empty tag requests (f3d715b) by @neonsolstice, closes #396
- reader: allow dictionary APIs in CSP connect-src (48f4033) by @neonsolstice, closes #403
- reader: provide feedback for copy action in selection popup (28955f2) by @neonsolstice, closes #400
- reader: remove tooltips from selection popup (c28977f) by @neonsolstice, closes #402
- reader: show delete annotation button in selection popup (16f33a0) by @neonsolstice, closes #401
- scanner: handle watched moves across docker libraries (b23d4d4) by @neonsolstice, closes #386
Docker
docker pull ghcr.io/bookorbit/bookorbit:1.12.0Multi-arch: linux/amd64 and linux/arm64.
v1.11.0
Highlights
- What's New is now built in - BookOrbit can show release highlights inside the app, including the update popup, full
/whats-newarchive, images, videos, and parsed technical changelogs.
- Books can belong to multiple series - Track crossovers, omnibus editions, and shared universes without choosing a single series. The new Up Next filter can also find the next unread book in an active series.
- New achievements for ratings and devices - Achievement tracking now includes book ratings and multi-device reading, with reading sessions recording their source more accurately.
- Korean and Polish metadata providers - Aladin and LubimyCzytac are now available as metadata sources, with provider IDs saved through fetches, locks, file metadata, and the book detail UI.
Features
- add in-app release notes viewer (b7487c5) by @neonsolstice
- books: add lock status to library filter rules (cfa1181) by @neonsolstice, closes #327
- books: add support for multiple series per book (0ffe370) by @neonsolstice, closes #353
- books: support details preference in cover card overlay (9606bcc) by @neonsolstice
- collections: reword message when adding an item to a collection (cc1eb62) by @neonsolstice, closes #306
- metadata: add Aladin Korean book metadata provider (#351) (e75985b) by @kyungw00k
- metadata: add fallback scanner for EPUBs with missing ISBNs (05796e5) by @neonsolstice, closes #350
- metadata: add LubimyCzytac metadata provider (#324) (705dd9c) by @chrismansell26, closes #304
- metadata: support calibre 9.x opf3 metadata formats (444518c) by @neonsolstice, closes #341
- query: add up-next in series filter operator (d5eb6a0) by @neonsolstice, closes #321
- server: add safe directory creation to path service (58ba164) by @neonsolstice, closes #332
- settings: add option to turn book spine off for comics (cb922ba) by @neonsolstice, closes #295
- stats: add device and rating achievement evaluators with session source tracking (9dfae88) by @neonsolstice
Bug Fixes
- allow resetting migration source setup (c4f4fa9) by @neonsolstice, closes #354
- books: prevent next-book navigation from sticking at boundaries (62896c6) by @neonsolstice, closes #325
- books: treat missing read status as unread for sorting (d3c7e7e) by @neonsolstice, closes #367
- client: add enterkeyhint to ChipInput for mobile keyboards (07b3b55) by @neonsolstice, closes #310
- client: add shift-click selection to entity manager (9aff2e4) by @neonsolstice, closes #352
- client: move filter panels out of the scroll container (a79aaeb) by @neonsolstice, closes #326
- client: respect device orientation lock in pwa (bb47485) by @neonsolstice, closes #309
- client: restore shadow display for natural-bottom covers (72a42e0) by @neonsolstice, closes #298
- cover: refresh cached cover URLs (33221d5) by @neonsolstice
- library: only process books marked for rename in bulk rename (1091935) by @neonsolstice, closes #361
- library: skip file write for encrypted PDFs (d5d0fc3) by @neonsolstice, closes #368
- metadata: allow saving edits to re-locked metadata fields (f01597a) by @neonsolstice, closes #328
- metadata: extract and save audiobook chapters and embedded metadata (6031792) by @neonsolstice, closes #322
- metadata: improve hardcover edition matching algorithm (32aa1fe) by @neonsolstice, closes #333
- metadata: normalize zero page count to null to prevent save errors (5f9fdad) by @neonsolstice, closes #329
- metadata: offload large pdf parsing to worker thread (907260f) by @neonsolstice, closes #371
- metadata: prioritize physical hardcover editions over audiobooks (12cd08d) by @neonsolstice, closes #334
- metadata: restore Goodreads fetching via autocomplete fallback when detail pages are WAF-gated (b775c58) by @neonsolstice
- reader: totalBookDuration computation accounts for metadata duration when files lack duration data (#331) (cf0af2c) by @JamesMcNee
- scanner: populate per-file audio duration on upload (0850f8e) by @neonsolstice, closes #330
- server: accept empty requests with unsupported media types (a795831) by @neonsolstice, closes #348
- server: fix floating p...
v1.10.0
Highlights
- Upload files right from a book - Add or replace a book's files without leaving the app. Open the Files tab, drop in an EPUB, PDF, MOBI, CBZ, M4B and more (up to 500 MB each), and optionally rename every file to match the book.
- Manage every book file in place - Each file now has its own actions: set the primary format, read or peek at it, download, rename, or delete, all from the Files tab.
- Jump through your library by letter - A new A-Z jump rail lets you skip straight to any letter in large libraries, so finding a title is a single tap instead of endless scrolling.
Features
- book: implement file rename and delete interactions (70f86c8) by @neonsolstice, closes #214
- books: add file upload UI to book detail files tab (b0be705) by @neonsolstice
- books: add jump rail navigation to book listings (#318) (171b214) by @neonsolstice, closes #163
- books: add send via email action to details page (1972d6d) by @neonsolstice, closes #289
- kobo: sync star ratings from ratebook analytics events (#269) (15cdee7) by @Logan-Selley
- metadata: import cover image from OPF sidecar guide and manifest (e3a54d4) by @neonsolstice, closes #273
Bug Fixes
- auth: surface actionable error when OIDC issuer resolves to private address (cbcebd4) by @neonsolstice, closes #264
- client: use local timezone for reading session timeline (5ede11e) by @neonsolstice
- collections: allow focus in teleported icon picker search box (67d5b39) by @neonsolstice, closes #280
- cover: resolve spine sizing and consistency issues (744d5c1) by @neonsolstice, closes #294
- kobo: enhance kobodeviceservice to manage device snapshots (#277) (9e8fa28) by @Logan-Selley
- library: rename all book files during metadata write (9d9f000) by @neonsolstice, closes #265
- reader: add floating back button to exit pdf viewer (1ad6cdd) by @neonsolstice, closes #290
- reader: ignore keyboard shortcuts in shadow dom inputs (3f7eac9) by @neonsolstice, closes #291
- scanner: fallback to original filename when title is missing in patterns (6efa74d) by @neonsolstice, closes #308
- scanner: treat pt ## audiobook subfolders as part folders (b2b0f28) by @neonsolstice, closes #262
- select format in findAllBookFiles (9ccc8b9) by @neonsolstice
- series: keep startup alive when series backfill fails (#271) (448e131) by @neonsolstice, closes #270
Visual Changes
- client: make edit metadata action buttons icon-only on narrow screens (852a475) by @neonsolstice, closes #292
Docker
docker pull ghcr.io/bookorbit/bookorbit:1.10.0Multi-arch: linux/amd64 and linux/arm64.
v1.9.0
Highlights
-
Two-way page-level progress sync - Your reading position now syncs precisely, page by page, across Kobo, KOReader, and the web. Pick up exactly where you left off on any device.
-
Metadata and covers written into audiobooks - Cover art and book details are now embedded directly into your audiobook files, so exported audiobooks stay portable and display correctly in any player.
- Kobo metadata provider - A dedicated Kobo provider fetches localized metadata, accurate ISBNs, and high-resolution covers straight from Kobo's catalog.
- Every format exposed over OPDS - The OPDS feed now lists all available formats for a book at once, so third-party reading apps can grab the exact file type they need.
-
Native Kobo reading sessions - Offline reading on your Kobo is now captured automatically, calculating active reading time and progress to fill in your reading log.
-
Genre blocklist - Block specific genre tags from ever being written during metadata fetches, keeping your library's categories clean and clutter-free.
- Peek at books without tracking - A new peeking mode lets you open and skim any book without updating progress or marking it as Currently Reading.
Features
- add continue listening and want to read dashboard scrollers (368f01e) by @neonsolstice
- audio: embed cover image in audiobook files (#197) (935fce9) by @chrismansell26, closes #145
- book-dock: support custom container directory via BOOK_DOCK_PATH (e05141f) by @neonsolstice, closes #178
- books: link authors on book details to author page (ed5b77e) by @neonsolstice, closes #252
- books: remember show paths setting on files page (031dd12) by @neonsolstice, closes #212
- books: write metadata directly to audiobook files (#219) (8b9a87f) by @chrismansell26
- kobo/koreader: two way page level sync between kobo/koreader and bookorbit (#250) (11b6d98) by @neonsolstice, closes #249
- kobo: sync native reading sessions from analytics events (#245) (9a557d6) by @Logan-Selley
- metadata: add fetch pipeline diagnostics (cd1b062) by @neonsolstice
- metadata: add genre blocklist to exclude unwanted tags (57cfd13) by @neonsolstice, closes #235
- metadata: add Kobo metadata provider (3bab324) by @neonsolstice, closes #247
- opds: expose all content files for multi-format books (f63e07a) by @neonsolstice, closes #224
- reader: auto scroll table of contents to current chapter (95c0f01) by @neonsolstice, closes #193
- reader: support peeking books without tracking progress (28ff196) by @neonsolstice, closes #161
- series: add option to group books by media type (0063cb4) by @neonsolstice, closes #154
- series: add stack display mode for series thumbnails (05ac347) by @neonsolstice, closes #223
- series: implement 3d perspective fan and hero cover sorting for series stack (11cf21a) by @neonsolstice
- settings: add option to change default thumbnail click behavior (283999e) by @neonsolstice, closes #240
Bug Fixes
- book-dock: refine duplicate detection for books without isbn (06a9b9f) by @neonsolstice, closes #175
- client: deduplicate file format badges in list view (2b20c1b) by @neonsolstice
- client: fix chip input placeholder logic and styling (7d01f11) by @neonsolstice, closes #251
- kobo: capture paired analytics progress (20cbdfa) by @neonsolstice
- kobo: re-deliver books removed on device while still eligible (#194) (41c579b) by @Logan-Selley
- koreader: trigger hardcover auto-sync on progress update (4a7d1e2) by @neonsolstice, closes #258
- metadata: extract metadata from sidecar opf files (b731595) by @neonsolstice, closes #200
- metadata: improve goodreads search relevance and ranking (35658ec) by @neonsolstice
- metadata: restore RanobeDB file metadata and links #207 #210 (9d842bf) by @neonsolstice
- opds: strip xml 1.0 illegal control characters from metadata (e350568) by @neonsolstice, closes #260
- reader: load correct chapter in web reader (a737dff) by @neonsolstice, closes #203
- scanner: prevent nested folders from being marked missing (ba91817) by @neonsolstice, closes #170
- series: prevent 404 for long series titles (#201) (e90bc35) by @danielcgilibert
- series: prevent stretched background shadow on audiobooks (e8d5e1a) by @neonsolstice, closes #221
- series: use nume...
v1.8.0
Highlights
- Up next in series on your dashboard - The Continue Reading area now surfaces the next book in a series you're working through, so you always know what to pick up next.
- Edit metadata for many books at once - Select multiple books and change authors, genres, tags, series, and more in one dialog. Pick add, remove, replace, or clear per field, and only the fields you toggle are touched.
- RanobeDB metadata provider - Pull accurate Japanese light novel metadata from RanobeDB, with no setup or API key required.
- Choose how collapsed series look - Pick the cover shown for a collapsed series in the grid: a fanned stack, a mosaic of covers, or the first, latest, or first-unread book.
- Adaptive cover display modes - Control how real covers fit their slots when aspect ratios differ: a blurred fill behind the full cover, an edge-cropped fill, or the natural ratio anchored to the bottom.
- Appearance that follows you across devices - Save your theme and display preferences to your account so every device looks the same, or keep them per-device if you prefer.
- Titles and authors on grid cards - Show the title and author under each grid card, reveal them on hover, or hide them entirely.
Features
- books: add manual write-and-rename action in metadata editor (9f3d19a) by @neonsolstice, closes #143
- client: add shift-click selection to book dock (06dd9ec) by @neonsolstice, closes #136
- client: prevent audiobook cover cropping in series view (f8c6988) by @neonsolstice, closes #153
- client: support square audiobook covers and inline series cells (0bd1f27) by @neonsolstice
- dashboard: add up next in series to continue reading (f5695ac) by @neonsolstice, closes #162
- metadata: add bulk metadata edit dialog (#164) (b8882f9) by @chrismansell26, closes #150
- metadata: add provider connection testing and token validation (6b12efc) by @neonsolstice, closes #127
- metadata: add RanobeDB as metadata provider (#185) (200d885) by @chrismansell26, closes #114
- metadata: fallback to search if lookup by id fails (62b936c) by @neonsolstice, closes #182
- series: add selectable cover modes for collapsed series cards (d2ed68f) by @neonsolstice, closes #160
- settings: add adaptive cover display preferences (#169) (589ccd6) by @chrismansell26, closes #152
- settings: add option to show titles under grid cards (#181) (c09dac6) by @neonsolstice, closes #159
- settings: add theme persistence across devices (b8364bf) by @neonsolstice, closes #146
Bug Fixes
- auth: allow https in csp img-src for oidc provider icons (#140) (174d76d) by @neonsolstice, closes #131
- books: sync book context during lazy loading (f9e1d41) by @neonsolstice, closes #187
- books: update date when metadata is auto fetched (7f10a04) by @neonsolstice, closes #186
- books: update metadata and locks atomically (c32babb) by @neonsolstice, closes #172
- cover: apply spine overlay to details tab covers (61859ab) by @neonsolstice, closes #148
- cover: disable spine overlay for audiobook covers (d0ae2b4) by @neonsolstice, closes #147
- cover: make placeholder palettes react to theme accent (6fb6e51) by @neonsolstice
- cover: retain audiobook square covers in discovery carousels (341e345) by @neonsolstice, closes #149
- library: increase reading threshold constraint max to 100 (d4d26ab) by @neonsolstice, closes #142
- percent-encode credentials when building DATABASE_URL (#126) (#167) (a5a069a) by @MohammadYusif
- series: disable virtualization for series book grid (cbcdf01) by @neonsolstice, closes #171
- server: sanitize book dock published year before finalize ([cd60c1d](cd60c1d...
v1.7.0
Features
- library: add bulk rename tool and e2e coverage (#124) (acc8a19) by @chrismansell26, closes #121
- reader: add no gaps infinite scroll mode for webtoons (48b440c) by @neonsolstice, closes #108
Bug Fixes
- auth: tolerate refresh-token rotation races (7481631) by @neonsolstice, closes #120
- settings: restore magic links admin tab access (853a514) by @neonsolstice
- smart-scope: make icon picker responsive to viewport bounds (04f1b8f) by @neonsolstice, closes #125
Docker
docker pull ghcr.io/bookorbit/bookorbit:1.7.0Multi-arch: linux/amd64 and linux/arm64.