Releases: bookorbit/bookorbit
Release list
v3.2.0
Highlights
- BookOrbit, now made for iPad (iOS): The entire app has been reimagined for iPad, with spacious two-pane layouts across Home, Library, Search, Book Details, Requests, Activity, Downloads, More, and Settings, plus purpose-built EPUB, PDF, comic, and audiobook experiences with panels, spreads, search, scrubbers, keyboard shortcuts, trackpad gestures, pointer support, and a Home Screen widget.
- A faster way to manage libraries: Library setup now uses a single settings sheet instead of a seven-step wizard, while the Libraries page adds live scan status, recent history, in-place automation controls with undo, responsive cards, and the option to copy settings from another library.
- Search and compare metadata in one place: The new two-pane match sheet ranks results by match strength, shows word-level field differences, lets you keep or use each value, preserves selections while browsing candidates, and brings the same workflow to Book Dock.
- More control over each library and account: Libraries support precise fractional completion thresholds and a read-aloud filename token, while each user can hide Requests and its notifications without interrupting requests already in progress.
- Dedicated ebook and audiobook covers: Books with both media now store independent covers for each medium. Audio screens show square artwork while library browsing, Kobo, and OPDS display the ebook cover, with automatic migration on upgrade.
Features
- annotations: add bounded dashboard highlights route (826584e) by @neonsolstice
- cover: give books with both media separate ebook and audiobook covers (e28bd67) by @neonsolstice
- library: rebuild the library editor as a settings sheet (e92cc36) by @neonsolstice
- library: support fractional finished thresholds (8dfb093) by @neonsolstice
- metadata: merge search and compare into one match sheet (6f673e2) by @neonsolstice
- settings: add per-user Requests visibility toggle (55110d5) by @neonsolstice, closes #1476
- settings: add read-aloud filename token (d66f853) by @neonsolstice, closes #1590
- settings: polish the libraries page and add in-place controls (de0954e) by @neonsolstice
- types: expose the book file id on audiobook manifest assets (a35e222) by @neonsolstice
Bug Fixes
- annotations: clear KOReader state on device removal (7e3bb18) by @neonsolstice, closes #1576
- authors: keep non-latin letters when matching enrichment candidates (#1615) (d1b3fae) by @SergeiAK, closes #1459 #1459
- auth: recover from expired edge auth proxy sessions (#1557) (bc12143) by @heckler1, closes #642 #642
- books: extract chapters from attached audiobooks (995cc24) by @neonsolstice, closes #1532
- books: include subtitles in search (0b2df6e) by @neonsolstice, closes #1552
- books: list a book's formats from one ranked, read-along aware source (218f8d5) by @neonsolstice
- books: re-rank the primary file when an import joins an existing book (4b90dc7) by @neonsolstice
- books: stop synthesizing audiobook chapters from unknown durations (236c178) by @neonsolstice
- client: paginate Book Dock navigation (5a108bb) by @neonsolstice
- client: persist visible Book Dock destination on done (a572bad) by @neonsolstice, closes #1573
- kobo: scope plugin update gate to requesting device (0d8648f) by @neonsolstice, closes #1519
- koreader: respect KOReader global HTTP proxy settings (#1562) (900514c) by @Irohoho, closes #753
- library: display reading start threshold accurately (244924a) by @neonsolstice, closes #1563
- library: honor browser clock for cron schedules (6381f02) by @neonsolstice, closes #1559
- metadata: keep a pinned hardcover edition past the edition cap (#1549) (04ba2ff) by @foux, closes #1252 #1252
- metadata: write finalized metadata back to the imported file (#1499) (d4bc62f) by @vishnumad, closes #1385
- reader: accept audiobook positions in the last second of a track (35d5a8c) by @neonsolstice
- reader:...
v3.1.0
Highlights
-
Your library, now on iPhone and Apple Watch (in v3.0.0+): The official BookOrbit app is here, native and offline-first. Read EPUBs, PDFs, and comics, play audiobooks with chapters and a sleep timer, and have any book read aloud to you. Download all of it for the commute, push files in from any app's share sheet, and then leave your phone behind entirely: the Apple Watch app downloads and plays your audiobooks on its own, and syncs your place when you are back.
Download from Apple App Store: https://apps.apple.com/us/app/bookorbit-the-official-app/id6811807346
- Reader tune bar and custom fonts (iOS): Adjust appearance directly over the page with a fluid tune bar, render your server and uploaded custom fonts, and configure account reading defaults in Settings for books, PDFs, and comics.
- Redesigned Apple Watch experience (iOS): The Apple Watch companion features a redesigned player, speed sheet, and library list for seamless, phone-free audiobook listening on the go.
- Polished audiobook player (iOS): The player highlights larger cover art and centered titles, displays dedicated covers separate from ebook editions, and prevents accidental seeks while scrolling.
- Faster downloaded EPUBs and Read Along (iOS): Downloaded books now load individual chapters and Read Along audio on-demand, opening large files instantly while letting you tap any sentence to start narrated playback.
- Conflict-free reader settings sync - Reader preferences now update field-by-field over PATCH instead of replacing the entire settings row, preventing web and companion apps from overwriting each other's customizations.
- Enhanced read-along playback - Read-along EPUBs sync reading positions with standalone EPUB files, start narration at the exact selected sentence, and preserve active word highlights across all color themes.
- Automatic format re-ranking on import - Adding new formats into an existing book automatically re-evaluates the primary file based on library priority rules, so preferred formats take the lead right away.
Features
- reader: merge reader settings field by field over PATCH (a06b111) by @neonsolstice
- stats: record android as a reading source (bc10ebc) by @neonsolstice
Bug Fixes
- auth: keep signed-out reset links on their page (1dd29c7) by @neonsolstice, closes #1503
- books: align progress bar color with read status (12cf724) by @neonsolstice, closes #1465
- client: keep confirmation dialogs above sheets (27cfdc2) by @neonsolstice, closes #1502
- client: send only the reader settings that changed (d87312a) by @neonsolstice
- cover: rebuild book thumbnails that went missing beside a cover (#1482) (970b152) by @neonsolstice, closes #1475
- metadata: populate Hardcover genres for identified books (5609b38) by @neonsolstice, closes #1422
- reader: decode character references in read-aloud text (a480951) by @neonsolstice, closes #39 #39 #39 #39 #1486
- reader: preserve iOS text selection adjustment (304ccd5) by @neonsolstice, closes #1487
- reader: preserve narration highlights across themes (926f5de) by @neonsolstice, closes #1479
- reader: prevent duplicate media overlay playback (6fa4d68) by @neonsolstice, closes #1477
- reader: skip zero-length overlay clips (c25a756) by @neonsolstice, closes #1492
- reader: sync progress between an EPUB and its read-along copy (3c032e0) by @neonsolstice, closes #1508
- scanner: repair incomplete audiobook durations (759ec73) by @neonsolstice, closes #1498
- server: prevent broad fuzzy search matches (09ea8bd) by @neonsolstice, closes #1490
- stats: count completed attempts in the activity goal (9afa3a2) by @neonsolstice, closes #1474
- stats: repair stale KOReader file identities (4a4b62b) by @neonsolstice, closes #1497
- stats: route KOReader hash collisions safely (94eca19) by @neonsolstice, closes #1457
Docker
docker pull ghcr.io/bookorbit/bookorbit:3.1.0Multi-arch: linux/amd64 and linux/arm64.
v3.0.0
Highlights
-
Your library, now on iPhone and Apple Watch: The official BookOrbit app is here, native and offline-first. Read EPUBs, PDFs, and comics, play audiobooks with chapters and a sleep timer, and have any book read aloud to you. Download all of it for the commute, push files in from any app's share sheet, and then leave your phone behind entirely: the Apple Watch app downloads and plays your audiobooks on its own, and syncs your place when you are back.
Download from Apple App Store: https://apps.apple.com/us/app/bookorbit-the-official-app/id6811807346
-
Read-along EPUBs - A book with EPUB 3 media overlays, such as the ones Storyteller produces, now plays its real recorded narration in the reader. The sentence being read is highlighted, the audio streams straight out of the EPUB, and closing the book resumes on the exact sentence.
How I use this in practice: https://bookorbit.app/my-workflow/
-
Bring your own speech engine: Admins connect any OpenAI-compatible text-to-speech server, such as a local Kokoro container, under Settings. Test the connection, let it list its own voices, preview them, and curate which ones readers can choose. Providers are ordered, so readers always fall back to a working one.
Koroko setup guide: https://bookorbit.app/text-to-speech/
- Prowlarr and SABnzbd - Manage synchronized torrent and Usenet sources through a single Prowlarr connection, and fulfil requests through SABnzbd with NZB uploads, queue monitoring, reconciliation, and completed-download imports. Search health is reported per source.
- One reading position across audiobook, ebook, and devices: Read-aloud progress sync keeps the audiobook, the web reader, Kobo, and KOReader on the same spot. A switch on the book's Details tab turns it on per book and says plainly when a book cannot use it, for example when the durations do not match.
Features
- add read-aloud and media playback support (e0d3d42) by @neonsolstice
- books: rebuild duplicate books as a ledger (c239cfa) by @neonsolstice
- client: link the iOS app from the sidebar footer (b057e5e) by @neonsolstice
- docker: support file-backed secrets (2ced827) by @neonsolstice, closes #373
- reader: synchronize Storyteller reading progress (d3f3382) by @neonsolstice
- settings: add Prowlarr and SABnzbd support (#1416) (3395232) by @neonsolstice
Bug Fixes
- books: record reading dates on the reader local calendar day (2759893) by @neonsolstice, closes #1458
- client: show the platform's own shortcut modifier (6e608e7) by @neonsolstice
- docker: support mounted files for every app secret (0007a9d) by @neonsolstice
- library: preserve folder creation order (6cbf8f5) by @neonsolstice, closes #1412
- metadata: honor configured Amazon domain in book links (c292d6c) by @neonsolstice, closes #1423
- migration: verify BookLore v2.4.0 compatibility (4dabacb) by @neonsolstice
- server: authenticate against qbittorrent 5.2 and newer (89af341) by @neonsolstice, closes #1306
- server: tolerate invalid system timezone in cron jobs (c99f968) by @neonsolstice, closes #1415
- settings: stop cropping the sidebar search placeholder (2da27cb) by @neonsolstice
Internationalization
- client: sync translations from Crowdin (#1418) (b10bb58) by @neonsolstice
- client: sync translations from Crowdin (#1427) (d22faea) by @neonsolstice
Docker
docker pull ghcr.io/bookorbit/bookorbit:3.0.0Multi-arch: linux/amd64 and linux/arm64.
v2.10.0
Highlights
- Expanded book request automation - Automated requests now support Usenet via Newznab and NZBGet alongside torrents, customizable release scoring profiles, per-indexer seed goals, and in-app indexer plugin updates.
- Flexible "Date Added" sources - Libraries can now determine a book's added date from its import time, file modification time, or file creation time, with one-click recomputation for existing collections.
- Collapsible series on author pages - Author pages can now collapse books into series groups, making large author bibliographies much cleaner and easier to navigate.
- Configurable listen address - Bind the server to specific IPv4 or IPv6 network interfaces using the HOST environment variable for customized network deployments.
Features
- add BookOrbit attribution requirements (d9ea13b) by @neonsolstice
- authors: collapse series on author pages (#1271) (73ac0bb) by @SergeiAK, closes #301
- book-requests: add indexer plugin updates and release profiles (8f1215d) by @neonsolstice
- book-requests: add newznab and nzbget support (fcdd72a) by @neonsolstice, closes #1312
- book-requests: add per-indexer seed goals (3bb33b6) by @neonsolstice, closes #1360
- library: per-library added_at source (imported/file_modified/file_created) (#1239) (17aa742) by @bobberb
- reader: add dedicated audiobook playback API (ceda742) by @neonsolstice
- server: allow configuring the listen address (04a0f21) by @neonsolstice, closes #1315
Bug Fixes
- annotations: preserve source highlight timestamps (b9609b1) by @neonsolstice, closes #1300
- auth: explain untrusted OIDC certificate failures (33c7260) by @neonsolstice, closes #1346
- auth: honor delegated admin permissions (c316e52) by @neonsolstice, closes #1401
- books: hide completed audiobooks from continue listening (f0bf903) by @neonsolstice
- client: add missing icon tooltips (7a203a0) by @neonsolstice, closes #588
- client: preserve synced reading calendar dates (72871fa) by @neonsolstice, closes #1322
- library: ignore current library during folder prescan (e514be1) by @neonsolstice, closes #1340
- library: respect locale for cron time display (2f22abe) by @neonsolstice, closes #1391
- reader: honor line spacing over publisher styles (6c65c39) by @neonsolstice, closes #1302
- reader: preserve touch text selection in PDF reader (911f61e) by @neonsolstice, closes #1388
- scanner: support uploads to ACL-controlled storage (daf61cb) by @neonsolstice, closes #1342
- scanner: surface Book Dock finalize error details (3aebf90) by @neonsolstice, closes #1367
- server: resolve hybrid torrent hashes in qbittorrent (2dcf166) by @neonsolstice, closes #1318
- server: support nested subfolders in book dock discovery (3a4d467) by @neonsolstice, closes #1311
- users: select exact content restriction matches (cf40058) by @neonsolstice, closes #1295
Internationalization
- client: sync translations from Crowdin (#1236) (5d0c2e6) by @neonsolstice
- client: sync translations from Crowdin (#1307) (b7e1e21) by @neonsolstice
Security
- books: enforce per-file mutation permissions (5303a50) by @neonsolstice, closes #1293
- metadata: scope catalog suggestions to visible books (#1366) (26712eb) by @neonsolstice
Docker
docker pull ghcr.io/bookorbit/bookorbit:2.10.0Multi-arch: linux/amd64 and linux/arm64.
v2.9.0
Highlights
- Automated book requests - Users can request books, send them through approval, search configured sources, and import fulfilled releases through the Book Dock. Permissions and requester visibility stay scoped throughout the workflow.
- PDF highlights and annotations - Create, style, search, revisit, and delete PDF highlights and notes in the web reader, with improved responsive outline and annotation navigation.
- More control over EPUB typography - Adjust paragraph spacing and indentation while preserving publisher formatting by default, with synchronized defaults and per-book overrides.
- SSO-only authentication - Administrators can require OIDC sign-in after linking an enabled superuser, with password flows blocked consistently across the API, web app, WebSockets, and administrative actions.
- Safer automatic metadata refreshes - Books with trusted provider IDs now refresh only from those identities, avoiding accidental matches to a different edition while keeping manual search flexible.
Features
- auth: add SSO-only authentication mode (9165dbe) by @neonsolstice, closes #1002
- book-requests: add automated request fulfillment (fc6e6f0) by @neonsolstice, closes #248 #1115
- metadata: restrict autofill to stored provider ids (e3779c1) by @neonsolstice, closes #1222
- reader: add epub paragraph spacing (53cfe16) by @neonsolstice, closes #1206
- reader: add epub typography controls (2912429) by @neonsolstice, closes #1206
- reader: add PDF highlights and annotations on web only (#1213) (04ec495) by @wmTJc9IK0Q, closes #1195
- reader: improve PDF sidebar navigation (eb60744) by @neonsolstice, closes #1235
- reader: show book titles in reader tabs (7057d35) by @neonsolstice, closes #1147
- smart-scope: filter by community review count (0f54291) by @neonsolstice, closes #1041
Bug Fixes
- align Book Dock ready filter with filing readiness (cc1b767) by @neonsolstice, closes #1215
- books: fully expand book synopsis (9391555) by @neonsolstice, closes #1202
- books: open personal review editor from summary (26503bc) by @neonsolstice, closes #1211
- books: scope request ownership by media type (16e63f2) by @neonsolstice
- client: keep book detail layouts responsive (3561d5d) by @neonsolstice, closes #1192
- client: keep cover controls within their column (d8f87d8) by @neonsolstice, closes #1280
- client: keep reading activity text inside card (e63c4b3) by @neonsolstice, closes #1262
- client: restore titles for cached views (f5bb88f) by @neonsolstice, closes #1261
- client: stabilize book detail layout across screen sizes (028d428) by @neonsolstice, closes #1259
- client: stop compact detail covers shrinking (978ef8a) by @neonsolstice, closes #1279
- cover: respect PDF crop box during extraction (3f06d4e) by @neonsolstice, closes #1242
- email: keep attachment filenames in sync after rename (8361861) by @neonsolstice, closes #1286
- metadata: accept goodreads pages that preload waf script (5346414) by @neonsolstice, closes #1240
- metadata: handle large Hardcover libraries (40c5abb) by @neonsolstice, closes #1196
- metadata: preserve calendar dates across timezones (661b265) by @neonsolstice, closes #1194
- metadata: reject mismatched iTunes media lookups (5052f17) by @neonsolstice, closes #1285
- metadata: restore Amazon metadata search (6edde6c) by @neonsolstice
- metadata: support CBZ archive comments (43bf1b7) by @neonsolstice, closes #1272
- reader: sanitize KOReader device download paths (eb5aef3) by @neonsolstice, closes #1203
- scanner: handle legacy Book Dock series indexes (adab5c8) by @neonsolstice, closes #1241
- scanner: invalidate dir scan state on book deletion (#1226) (2498e09) by @stradichenko
- server: bind dc namespace during epub metadata writes (cf84e37) by @neonsolstice, closes #1207
- server: handle Prowlarr torznab endpoint responses (19afacb) by @neonsolstice, closes #1244
- **serv...
v2.8.1
Highlights
- Redesigned book detail tabs: The Details, Edit Metadata, Files, Reading Log, and Highlights tabs now use single-screen layouts. Reading Log and Highlights remain mounted between tab changes to prevent loading flashes.
- Bulk rename and missing-resource cleanup tools: Bulk Rename now provides server-side search, virtualized selection, inline filename diffs, tree previews, and progress reporting. Missing Resources reviews absent books, orphaned cover references, and leftover cover folders before deletion.
- Public collections: Collection owners can make a collection readable by every authenticated user. Editing, reordering, and deletion remain restricted to the owner.
- Per-category notification levels and repeat collapsing: Each notification category supports Off, Problems, or All. Repeated events collapse into one notification with a count, and scheduled scans with no changes no longer create notifications.
- Overhaul settings pages: Redesign the settings interface to reduce cognitive load and simplify complex configurations.
-
KOReader and Kobo reading statistics: KOReader sync progress and Kobo reading-time counters now create reading sessions used by streaks and statistics. Daily calculations use the reader's configured timezone.
-
Series volume tracking and next-comic navigation: Series cards and lists show read, reading, available, and missing volumes on one track. Reaching the last page of a comic can now open the next issue in the series.
Features
- annotations: rebuild the hub and the highlights tab as one reading surface (95239ba) by @neonsolstice
- book-detail & books: rebuild details (2861aff), highlights (75ccb8d), and reading log (095113a) tabs into single-screen layouts; rebuild edit metadata (3f9d21d) as a four-column ledger; overhaul Files tab with tree rail, inspector, and file list focus (d587d8f, 58c3ef8); and add primary file size filter rule (1dd39bf) by @neonsolstice
- client: confirm destructive Book Dock discards (e165812) by @neonsolstice, closes #1007
- client: modernize the entity manager browse interface (4bd90b8) by @neonsolstice
- client: rebuild duplicate cluster review in entity manager (21a7f89) by @neonsolstice
- collections: add public collections with shared read access (5a668b0) by @neonsolstice
- library: add a Missing Resources cleanup tool (7d3ff99) by @neonsolstice, closes #312
- library: filter dashboards by selected libraries (a3bc499) by @neonsolstice, closes #1113
- library: rebuild the bulk rename tool (a511222) by @neonsolstice
- metadata: merge fetched genres with existing values (8c854da) by @neonsolstice, closes #1125
- naming: add a narrators token to file naming patterns (c383ad1) by @neonsolstice, closes #1108
- notifications: add per-category levels and collapse repeat notifications (a253622) by @neonsolstice, closes #1141
- reader: continue a comic series from the last page (63d4dc3) by @neonsolstice, closes #998
- reader: jump to reading session checkpoints (6702d5b) by @neonsolstice, closes #1045
- series: rebuild the list as a card and a list view sharing one volume track (c1794b6) by @neonsolstice
- settings: redesign users, field rules, file naming and libraries (5ec34ae) by @neonsolstice
- stats: count KOReader sync reading toward streaks and statistics (#1140) (e2af7ba) by @chrismansell26, closes #261
Bug Fixes
- series: repair legacy series index upgrades (93c8136) by @neonsolstice, closes #1189
- book-detail: stop the reading log and highlights tabs flashing (8b9442b) by @neonsolstice
- books: order audiobook files naturally (691dfd9) by @neonsolstice, closes #1109
- books: read back user-supplied dates Postgres stored (c403ccb) by @neonsolstice, closes #1143
- books: reshuffle random sort per visit instead of per day (4c42e0c) by @neonsolstice, closes #1153
- books: show read status on the book detail discovery shelf (ddb296c) by @neonsolstice, closes #1163
- client: keep downloads from stranding an iOS home-screen web app (84c3cfc) by @neonsolstice, closes #1158
- client: report progress while an iOS web app buffers a download (e81848f) by @neonsolstice, closes #1159
- kobo: derive reading sessions from the device reading-time counter (a596133) by @neonsolstice, closes #1058 [#741](https://github.com/...
v2.7.0
Highlights
- Audiobookself and Calibre-Web Automated import support: Migrate from Audiobookshelf through a live connection or offline backup, or from a stopped Calibre-Web Automated snapshot, while preserving matched books and user reading state.
- Goodreads as Author metadata provider: Add biographies, photos, dates, websites, genres, and influences, with a preferred metadata source and merge strategy for each field.
- Retire a KOReader without erasing its history: Take an old device off the active list while keeping its synced events, progress, file naming pattern, and unmatched books. A returning device becomes active again automatically.
- Read EPUBs in the font style you actually chose: Pick real weight and style variants, including uploaded variable-font axes, and keep those choices stable as font catalogs load.
- Keep reading history consistent across edits and devices: Manual reading dates now drive book status correctly, KOReader progress resets stick, and rebuilding a library no longer silently drops device reading history.
Features
- authors: add Goodreads as an author metadata source (183ae7a) by @neonsolstice
- koreader: retire devices without deleting their synced data (a215161) by @neonsolstice, closes #996
- reader: let readers pick the font style for body text (7d093ef) by @neonsolstice, closes #533
- server: add Audiobookshelf and Calibre-Web Automated migration sources (c91ce2d) by @neonsolstice, closes #986
Bug Fixes
- authors: stop an image upload discarding unsaved author edits (060a83e) by @neonsolstice, closes #1037
- auth: surface private OIDC issuer guidance (2b400f0) by @neonsolstice, closes #1065
- books: let manual reading dates drive the reading lifecycle (10d5e93) by @neonsolstice, closes #1073
- docker: drop pip from the runtime image to clear the image scan (edb0b37) by @neonsolstice
- docker: stop the image build re-installing into a partial workspace (3fad07c) by @neonsolstice
- kobo: acknowledge device state pushes so hub progress reaches the reader (eda3235) by @neonsolstice, closes #749
- kobo: stop endless sync retries and cut round trips (bcb4b7e) by @neonsolstice, closes #1005
- koreader: make the catalog navigable without a touchscreen (22c4d4b) by @neonsolstice, closes #880
- koreader: stop a rebuilt library silently dropping reading history (5ac96f2) by @neonsolstice, closes #1049
- koreader: stop a stale device position undoing a progress reset (ba815ab) by @neonsolstice, closes #1032
- library: run scans on the stored auto-scan schedule (cd07c2c) by @neonsolstice, closes #985
- metadata: bound provider ids and surface why a save was rejected (657e48c) by @neonsolstice, closes #1015
- metadata: preserve authors during metadata refresh (647f342) by @neonsolstice, closes #1001
- metadata: stop comicvine searches timing out into no results (83688da) by @neonsolstice, closes #1039
- metadata: stop hardcover sync colliding on reading attempt read ids (a60d054) by @neonsolstice, closes #907
- metadata: stop one book record being assembled from several books (3903c41) by @neonsolstice, closes #1023
- notifications: enforce settings access permission (e75e2c3) by @neonsolstice, closes #1057
- reader: follow inflections so define reaches a real definition (73bee0f) by @neonsolstice, closes #1020
- reader: give the mobile settings sheet a way to close (a33aa2b) by @neonsolstice, closes #1016
- scanner: resolve case-insensitive path identity to prevent duplicate books (46799bb) by @neonsolstice, closes #1012
- server: match entity names that carry non-collapsed whitespace (af80ce7) by @neonsolstice, closes #1014
- settings: display complete endpoint path in koreader sync url (dea939e) by @neonsolstice, closes #981
- settings: expose koreader credential rotation (a4bce27) by @neonsolstice, closes #990
- stats: evaluate achievements for updated KOReader sessions (8aa59da) by @neonsolstice, closes #991
- stats: show manually logged progress in the reading log ring (5f8ae4f) by @neonsolstice, closes #1030
- stats: track last read separately from progress row updates (6266a98) by @neonsolstice, closes #1013
Internationalization
- client: preserve protected technical terms during crowdin sync (b7ffe99) by @neonsolstice
- client: sync translations from Crowdin (#1000) (11893d2) by @neonsolstice
- client: sync translations from Crowdin (#1010) (f67fc21) by @neonsolstice
- client: sync translations from Crowdin ([#1026](#102...
v2.6.0
Highlights
- A faster way through Book Dock: Review incoming books in a responsive triage list with attention-first sorting, a needs-review filter, clearer match scores, and visible write destinations.
- Build roomier dashboard shelves: Give each shelf one to three rows, fill books in natural reading order, and customize the dashboard from a clearer, wider settings drawer.
- BookOrbit now speaks 25 languages: Nine more interface languages join the catalog, with one searchable picker that understands native names, English names, and locale codes on desktop and mobile.
- Open registration when you want it: Administrators can enable self-registration, giving new readers a dedicated sign-up page while keeping closed instances closed by default.
- Kobo purchases arrive alongside BookOrbit books: Optionally deliver Kobo Plus and purchased titles during device sync, with working covers for store books throughout the Kobo experience.
Features
- auth: add self-registration toggle and sign-up page (e6b9a16) by @neonsolstice, closes #952
- client: add configurable multi-row dashboard shelves (93af8bb) by @neonsolstice, closes #928
- client: add nine interface languages and a searchable language picker (d99956c) by @neonsolstice
- client: make the sidebar Browse zone collapsible (213eb1f) by @neonsolstice
- collections: keep books in the order they were added (0dbfa22) by @neonsolstice, closes #978
- cover: let users pick the default provider for cover search (8060bc4) by @neonsolstice, closes #983
- kobo: deliver Kobo store titles and fix store cover 404s (70818d3) by @neonsolstice, closes #789
- library: add {library} placeholder to file naming patterns (#976) (68a1425) by @XylotoGhost
- metadata: add hardcover edition selection and refresh pinning (#936) (99de4d9) by @Dukko
- metadata: limit fetched genres per book (21fd3e7) by @neonsolstice, closes #710
- reader: allow smaller EPUB text sizes (67b2741) by @neonsolstice, closes #784
- scanner: rebuild the Book Dock page as a uniform-row triage list (fa50762) by @neonsolstice
Bug Fixes
- annotations: resolve html entities when indexing chapter text (3785ba3) by @neonsolstice, closes #944
- auth: make account lockout recoverable and visible (e1a7cb8) by @neonsolstice
- auth: recover live sessions when an access token expires (976f966) by @neonsolstice, closes #942
- auth: split Book Dock access from Book Dock administration (ab284ae) by @neonsolstice, closes #961
- client: stop requiring plural categories no count can select (0aad947) by @neonsolstice
- kobo: keep metadata file writes off the re-download path (a90218f) by @neonsolstice, closes #925
- kobo: sync normalized language and ISBN metadata (6ed2b06) by @neonsolstice, closes #920
- koreader: accept optional KOSync document metadata (#966) (df7e624) by @jadehawk
- library: exclude missing books from library counts (b173915) by @neonsolstice, closes #639
- library: expose rename setting in scoped library list (8491ea4) by @neonsolstice, closes #918
- metadata: stop iTunes returning audiobook editions for ebooks (ab94455) by @neonsolstice, closes #982
- opds: advertise search inline for clients that skip OpenSearch (4c5b9fa) by @neonsolstice, closes #860
- reader: route KOReader progress by format so paged books resume (04b243d) by @neonsolstice, closes #954
- series: make select mode work when series are collapsed (275eb03) by @neonsolstice, closes #963
- series: stop the series name input collapsing on narrow screens (a37553f) by @neonsolstice, closes #949
- settings: show white accent swatch correctly (e0f29f7) by @neonsolstice, closes #948
- settings: stop Chrome offering to save provider secrets (abdb35b) by @neonsolstice
- settings: unify responsive settings navigation (066e6ee) by @neonsolstice
- users: stop the admin preset granting demo restricted (9a32ae0) by @neonsolstice, closes #953
Internationalization
- client: sync translations from Crowdin (#939) (7f69346) by @neonsolstice
- client: sync translations from Crowdin (#972) (afb82cb) by @neonsolstice
- client: sync translations from Crowdin (#994) (b258845) by @neonsolstice
Performance
- cover: stop the loading shimmer once the cover has loaded (#958) (39b07d8) by @neonsolstice, closes #626
Docker
docker pull ghcr.io/bookorbit/bookorbit:2.6.0Multi-arch: linux/amd64 and linux/arm64.
v2.5.0
Highlights
- Updating the KOReader plugin no longer crashes KOReader: Tapping Update inside KOReader crashed the app on devices still running plugin v1.3.x. That update is no longer offered to affected devices, so the crash cannot happen. Those devices need one manual install to get going again: Settings > KOReader flags them as Manual update required and the steps are below.
Action Required: Devices on plugin v1.3.x need one manual install
If updating the plugin from inside KOReader crashed the app, that device is still on v1.3.x and cannot update itself. The broken updater is the same code that would have to install the fix, so it can never self-deliver. One manual install per affected device clears it for good.
- In the BookOrbit web UI, go to Settings > KOReader. Any device that needs this is flagged Manual update required.
- Click Download Plugin.
- Extract the zip and copy the
bookorbit.kopluginfolder intokoreader/plugins/on the device, replacing the existing folder. - Restart KOReader.
The downloaded plugin comes preconfigured with your server URL and credentials. Your reading progress, annotations, and device links on the server are untouched.
What causes it: plugin v1.3.x calls a KOReader function that KOReader removed in July 2026. The old updater does not check whether that function exists and does not contain the failure, so the missing function crashes KOReader instead of showing an error. Plugin v1.4.0 fixed this, and devices on v1.4.0 or newer are unaffected and continue to update normally.
Two limits worth knowing:
- The update check identifies your account, not the individual device, so while any one of your devices is still on v1.3.x, in-app plugin updates pause on all of them. They resume once that device is updated by hand, or removed from Settings > KOReader.
- A device that has never completed a full sync has not reported its plugin version, so BookOrbit cannot tell it apart and does not protect it. Run Sync all books now once, or install the plugin manually.
Features
- books: add ambient book cover tinting to book detail view (9b0ff21) by @neonsolstice
- books: allow editing book added timestamp (ba7c6f8) by @neonsolstice, closes #894
- reader: add zoom controls and wheel shortcuts to cbz reader (98c4e05) by @neonsolstice, closes #898
- reader: redesign comic settings as one panel in two containers (c59c678) by @neonsolstice
Bug Fixes
- authors: include read status in author book card query response (d6f1a39) by @neonsolstice, closes #876
- authors: persist dismissal of metadata enrichment completed notifications (286ae8f) by @neonsolstice, closes #895
- client: add copyable stock KOReader sync URL (#904) (07c842a) by @neonsolstice
- client: normalise validate-styles paths so the allowlist matches on Windows (#914) (e3fd1da) by @andysom25, closes #824
- client: prevent Crowdin translation loss (b0bb142) by @neonsolstice
- client: wrap entity index route views in a single root element (2c0105d) by @neonsolstice, closes #899
- dashboard: handle initial library loading and error states (0825632) by @neonsolstice, closes #866
- kobo: rewrite reading state resource URL in initialization (750927b) by @neonsolstice, closes #883
- kobo: stop offering plugin updates to devices that crash applyin⦠(#912) (38d109f) by @neonsolstice, closes #905
- metadata: split embedded subtitle out of long hardcover titles (#887) (11af00a) by @ohoeltke, closes #867 #867
- reader: disable page swipe gestures and use screen coordinates in scrolled flow (0b94c83) by @neonsolstice, closes #910
Internationalization
- client: sync translations from Crowdin (#901) (6115a11) by @neonsolstice
Performance
- dashboard: optimize random book lookups and scroller batching (c69222d) by @neonsolstice
- metadata: index hardcover title author fuzzy matching for large libraries (6fd6ee8) by @neonsolstice, closes #881
- server: stream zip archive rewrites sequentially to prevent main thread blocking (629d6ce) by @neonsolstice, closes #893
Visual Changes
- books: align static book grid card baselines to bottom (b558250) by @neonsolstice
Docker
docker pull ghcr.io/bookorbit/bookorbit:2.5.0Multi-arch: linux/amd64 and linux/arm64.
v2.4.0
Highlights
- Move books between libraries: Move individual books or large selections without importing them again. Preview each move and follow its progress while BookOrbit preserves reading progress, annotations, collections, and device sync history.
- KOReader, rebuilt: A faster, pixel-perfect overhaul keeps sync and bulk downloads responsive and resumable in large libraries, while fixing crashes on older hardware and Kindle devices. It also adds bookmark sync, personalized dashboards, reading statistics, series browsing, and on-device views.
-
Make BookOrbit feel like yours: Reorder sidebar sections, choose your home dashboard shelves, and pick from more accent colors. Richer navigation keeps libraries, collections, and SmartScopes close at hand without slowing down large libraries.
-
Reader settings, redesigned: Ebook and comic controls now live in one easy-to-scan panel with visual theme previews, clear sliders, and layouts tailored to desktop and mobile. Administrators can also provide shared fonts for every reader.
- Keep metadata inside more formats: Save metadata and cover changes directly inside MOBI, AZW, and FB2 files, so edits travel with the book to your Kindle or another reader. Per-library controls let you choose which formats BookOrbit updates.
- BookOrbit now speaks 16 languages: Interface support grows from 5 to 16 languages with Czech, Danish, Spanish, Finnish, French, Italian, Polish, Russian, Swedish, Ukrainian, and Simplified Chinese.
-
Administration built for larger communities: Search, filter, and page through users with clearer account status and magic-link actions. Richer audit details and filters make activity easier to investigate, and file-naming settings now include live previews.
-
Reading sync you can trust: Continuous-scroll CBZ books reopen at the right place, StoryGraph keeps reading-attempt dates intact, and read-status changes made in BookOrbit reach Kobo devices on the next sync.
-
See what is missing from a series: BookOrbit can learn a series total and compare it with your collection. A new ownership meter shows completeness, while expanded gap detection reveals missing volumes beyond your latest book.
-
Better covers and comic metadata: Updated EPUB covers now display correctly across more reading apps and OPDS clients. ComicVine IDs and issue titles also stay clean when metadata is imported, edited, and saved back to files.
Features
- audit: add detailed entry metadata and filtering to audit logs (8caa8c6) by @neonsolstice, closes #747
- book: move books between libraries (#818) (9ff0f5c) by @ohoeltke, closes #257 #257
- books: allow sorting by custom metadata fields (bb202e5) by @neonsolstice, closes #829
- books: rework cross-library moves with preview and progress (4239d7a) by @neonsolstice, closes #818 #818 #257
- client: add nine locales with English fallback catalogs (1456006) by @neonsolstice, closes #86 #86 #363 #576
- client: improve shell responsive gutters and cover hover transforms (48df93a) by @neonsolstice
- client: redesign sidebar navigation, settings, and user management (9f11699) by @neonsolstice
- fonts: add admin-managed server fonts for the web reader (9621cd4) by @neonsolstice
- koreader: add bookmark sync and exchange support (4642ebc) by @neonsolstice
- koreader: add catalog detail info rows and series navigation (51b4d8c) by @neonsolstice
- koreader: add dashboard reading statistics and recency metadata (b29bb88) by @neonsolstice
- koreader: add not-on-device tile, bulk folder picker, browse counts (4f98f1a) by @neonsolstice, closes #869
- koreader: refine catalog detail layout and widget height calculations (258146c) by @neonsolstice
- koreader: support configurable dashboard sections in KOReader catalog (0b3d73c) by @neonsolstice
- koreader: support customizable dashboard sections (#820) (66c0884) by @jadehawk
- library: add FB2 file metadata writing and library settings (fbd3a2e) by @neonsolstice
- library: add MOBI file metadata writing and Kindle library settings (16746ef) by @neonsolstice
- reader: add configurable spread gap for two-page comic view (f10800c) by @neonsolstice, closes #740
- reader: increase font file size limit to 50MB for CJK fonts (1315337) by @neonsolstice, closes #793
- reader: make KOReader plugin sync non-blocking and resumable (0a37034) by @neonsolstice
- reader: redesign ebook settings as one panel in two containers (4bc1a35) by @neonsolstice
- scanner: align bookdock duplicate detection with upload behavior (17da695) by @neonsolstice, closes #736
- series: track expected series length and surface library completeness (88c4212) by @neonsolstice, closes #801
- settings: expand accent color palette options (ebdbba7) by @neonsolstice
- smart-scope: allow filtering by custom metadata fields ([320e038](320e038...