Kobo upgrades that keep the books a reader already holds, exact positions between the web reader and KOReader, and per-account libraries on one shared server.
docker pull ghcr.io/new-usemame/calibre-web-nextgen:v4.1.44Upgrading
-
A one-time database migration runs on first start. It merges each
account's browser sources into one account-wide Browser source and sets up
the new per-device records, keeping highlights, notes, bookmarks and device
assignments. It is safe to run more than once. -
Kobo readers keep the books they already hold. Upgrading from v4.1.43 or
earlier no longer re-sends a Kobo's library; new and edited books, and
removals, still arrive as usual. There are limits, and a small number of
books may be re-sent once:- A Kobo missing a book that another device on the same account downloaded
will not get it automatically. Use Resend one book to this Kobo on the
account page, or Force full kobo sync. - A Kobo last synced by a version before v4.1.43 whose first sync after the
upgrade carries no sync token, for example after a factory reset or an
automatic sync right after a USB eject, receives its library once. - On a server where Hot Books pages had been opened, older versions had
deleted some download history, so those books go to each Kobo once. - Servers updating from v4.1.33 or older, and accounts with several Kobos
that sync only selected shelves, have two more once-only cases, listed in
the changelog.
- A Kobo missing a book that another device on the same account downloaded
-
Source and pip installs gain one runtime dependency:
html5lib
(>=1.1,<2). Docker users need do nothing. -
The KOReader plugin is now
cwngsync.koplugin(formerly
cwasync.koplugin). It copies your settings on first start and keeps your
device registration, but will not run while the old plugin is present, so a
book is never synced twice: removecwasync.kopluginand restart KOReader.
Kobo sync
-
Upgrading no longer tells an existing Kobo that its whole library is new.
Each reader keeps its books and reading places after the update, after a USB
eject and when a magic shelf changes, with one Kobo or several on an account
(#2207). Large libraries no longer stop adding books after the first sync
page; books a reader missed that way arrive on its next sync (#1735). -
Re-downloading a book no longer wipes its highlights, and downloading a
book no longer makes the next sync send it again. After a download the Kobo
gets the highlights the server already holds. The server answers from its own
copy only once it has a book's complete set, never from a partial or stale
cloud copy, and older highlights saved without their type or text no longer
hold a book back. Kobo highlights are attributed to that Kobo again, and
follow their text when a book is re-converted (#2224). -
Reading positions hold across devices. They are kept per Kobo and per
browser, survive a book being re-converted, and are not overwritten by a
fresh download opening at the cover. Factory-reset readers receive every
saved position, and a reader back after a week offline is not re-sent books. -
Smaller Kobo changes: Resend one book to this Kobo is on your own account
page and no longer makes other accounts' Kobos download the book again; a
configured read column syncs as Finished, and back; unplugging from USB no
longer loses downloaded-book state; a personal cover no longer re-downloads
held books; deletions and collection changes are retried when the database
is busy; sync no longer closes the library connection under other requests
(#1977, #1857); one failed KEPUB conversion no longer stops later ones
(@MKos75, @tobi); the sync log explains each response and warns when headers
need the nginx buffer setting from the README.
KOReader, Kindle and the web reader
-
Positions move exactly between the web reader and KOReader. When the
e-reader holds the same EPUB, each opens at the exact place you stopped on
the other rather than the same percentage, including in Project Gutenberg
books. Moving from a Kobo to KOReader opens at the Kobo's sentence when the
server can prove the match. The furthest position still wins. -
KOReader devices keep reporting their position on servers with a time zone
set. WithTZset (for exampleTZ=America/New_York), a position pulled
from the server carried a time hours in the future, so the plugin treated it
as newer and stopped sending its own; a Kindle could go quiet for hours after
the web reader or a Kobo saved a position. The pulled time is now the moment
the position was saved (#2306). -
Highlights and notes travel between KOReader, the web reader and other
e-readers, on the words they were made on. Edited notes are not
overwritten, deletions on the e-reader stay deleted, and a highlight whose
text no longer matches is left unplaced rather than misplaced (#324). -
KOReader opens to a library home made for big libraries: Reading,
Recent, Shelves, Authors and Series, accent-insensitive search, every book as
a cover that downloads when tapped, read status both ways, and shelves as
per-account collections. Pair with a short code, a QR link or a ready-made
plugin, with no password typed on the device; a guide covers Kindles. Books
can be queued to a specific device, and e-readers report their books and
free space and can carry out a "Delete from device" request. -
The web reader lets you choose where to resume from each browser, Kobo,
KOReader device and configured Storyteller source, and opens at a Kobo's
exact location when it can verify the book. Thanks to @uschi1 (#324). -
Smaller sync fixes: KOReader no longer moves a Kobo back a page, and
simultaneous syncs keep the furthest position; opening a book without reading
sends no position; progress-only devices appear on the Devices page; a device
moved between accounts sets books aside and brings them back; pairing waits
out slow servers and explains failures plainly; sign-in failures return
"Unauthorized"; the setup page is linked from the new UI.
Multi-account libraries and devices
-
Each account can keep its own selection of books from one shared
library (#1939). There is still one copy of each file and its metadata.
Upgrading changes nothing until an account is switched, and a switched
account starts with everything it could already see. Removing a book from My
Library deletes nothing and keeps your notes and place. Accounts that may
browse everything get a Global Library with full book details. Search,
shelves, OPDS and Kobo sync follow the selection. My Library is a default
view, not a permission: use allowed/denied tags or the restricted column to
keep books from an account. -
Administrators can try My Library for every account in one click, with a
true Undo and safe resumption if interrupted; Guest is left unchanged. Users
can remove several books from their library at once, scripts can change up to
200 per request, and the confirmation says what each kind of reader will do. -
Public shelves show their books to everyone who can see the shelf, in the
web view, API and OPDS, and those books can be read and downloaded without
adding them first. Adding to someone else's public shelf adds the book to the
owner's library, not yours. Reported by @iroQuai. -
One Browser source per account, while physical e-readers stay separate.
Every Kobo, KOReader device and browser has its own data page, admins get
a cross-account device board, and a new E-readers page handles pairing end to
end, including creating and revoking a Kobo sync URL. -
Smaller fixes: "The global library" and "My Library" are named consistently;
switching accounts or returning to a cached catalog no longer shows stale
books; smart shelves update immediately; shelving or uploading a book adds it
to your library. Per-account responses now sendCache-Control: private, no-store, so reverse proxies must not share them. A saved "newest" sort in
the classic library resets once.
New interface
-
The new interface opens by default for every session and login. Classic
is a temporary fallback for the session, used automatically by browsers that
cannot run the new one (#1959). -
Design a cover. Books without one can get a typographic cover from their
title, series and author, drawn by Calibre's own generator where installed,
with every arrangement, colour and lettering option and live previews. Save
and share designs, or have coverless imports designed automatically. Each
user can also choose a private cover seen only by them. -
The description editor has formatting buttons, clean pasting and an HTML
view with live preview. Thanks @mrdynamo, @jsparrowio and @Gauva1n (#919). -
Bulk metadata can add to existing values. Add is the default for Tags,
Authors, Publishers and Languages; Replace asks first. Requested by
@neontapir. -
The book page leads with Read now, Favorite, Add to shelf and a More
actions menu, clamps long descriptions, keeps short tag lists visible
(@magdalar) and gathers formats in a Files section. On phones the description
comes first (@iroQuai, #1828). Read now prefers EPUB, and a book's last
format can be deleted without deleting the book (#1705). -
Shelves gained a sort dropdown that never rewrites your manual order
(@Zenloth) and Select mode with bulk actions. Magic shelves sort by numeric
and date columns (@kanjieater, #2086); smart shelves with rule groups open in
the editor (@vinxa, #2257). -
Also new: the library opens on Recent, books you are reading on any
device first; the sidebar can be pinned open (@xVolta, @iroQuai); admin pages
have their own navigation; the Highlights button shows your count
(@iroQuai); admins can send a book to another user's eReader again
(@Glennza1962, #2296); Advanced Search survives going back and reloading, and
Yes/No columns no longer hide books from it (#2211). -
Smaller changes: reading badges can be hidden; visibility choices follow your
account; guests get their browser's language (@tbnobody, #2247); accounts no
longer see actions or shelves their role cannot use; shelf counts update
immediately (@theSeanO, #2235); Reset All CWA Settings asks first (@iroQuai,
#1694); menus, Account and User administration pages line up on desktop and
phones; the selection bar no longer covers books on mobile (@magdalar,
#1756); covers no longer stay lit after a touch; whole-book delete is clearer
(@chloeroform); the Duplicates link appears for editors. -
Translations: German (@tbnobody, #2246), Italian (@luke-70it, #2096,
#2159), Spanish for My Library and devices (@HaruIjima-kun, #2109), Swedish
administration screens and device strings (@yeager, #2212), 1,298 Traditional
Chinese (Taiwan) strings (@hug0-l, #2187), and clearer Dutch and French.
Reading in the browser
-
Footnotes open in a panel instead of leaving the book, including on
iPhone and iPad, and the table of contents shows every level (@futsiang76,
#2253). -
Font, spacing and theme stay put across chapters (@futsiang76, #2254) and
keep your passage. Highlighting works in Safari, every highlight and note has
an Edit action, overlapping highlights from different devices stay separate,
Kobo highlights open in the web reader, clearing a note works the same in
both readers, books open even when checking a synced position is slow, and
text files scroll with the keyboard.
Library, covers and ingest
-
The cover picker searches every source by title and author, says when a
source refused and why, and accepts image links from hosts such as Wikimedia
and Google Images. Setting a cover works in an unwritable book folder, locked
covers are respected, and a crash can no longer half-write a cover. -
Hardcover: marking a book read marks it Read there (@ashtakom, #2289);
auto-fetch stops repeating ambiguous matches (@magdalar, #2103) and can be
turned off on its own (@magdalar). -
Convert Library converts again after an ingest and reports failures
(@splitsec2, #2251, #2252), copes with Calibre warnings (@AliceTCrowe,
#1954), and its page and the EPUB Fixer page work before a first run
(@TheFactor1, #2227). -
Custom columns with dotted sub-groups browse as a tree in the classic UI
and OPDS (@Rol3333). Opening Hot Books no longer erases other accounts'
download history. -
Smaller fixes: uppercase extensions are ingested; polling ingest sees new
files on Docker Desktop and network mounts; retried imports no longer
duplicate books; title sorts that repeat the title follow your rule
(@bcsteeve, #2219); failed ACSM and LCPL fulfilment is kept (@jakejoh); EPUB
repair needs no manual ownership changes in Docker; long non-Latin titles
send to e-readers; concurrent downloads succeed; the caliBlur read icon shows
only on readable books (@splitsec2, #2249, #2250); "Unarchive selected" only
unarchives; advanced-search results add to a shelf from every page; book
pages no longer scroll sideways; Kindle EPUB Fixer backups no longer
overwrite each other; Shelfmark setup explains how its imports relate to My
Library.
Performance, administration and reliability
-
Large libraries scroll smoothly, and a looping notice animation no longer
costs phones dropped frames on every page. The catalog no longer collapses to
one book per row in Safari or after a hard refresh. -
Turning single sign-on off no longer locks everyone out (@lgwapnitsky,
discussion #2272). LDAP users can sign in to the new interface, including on
their first visit. Pages no longer fail briefly after the server starts. -
Reverse proxies: forwarded-header depths can be set separately, proxy SSO
opens the new interface (@justemu, #1931), and saves no longer fail with 403
behind a TLS-terminating proxy (#2180). -
Smaller fixes: bare-metal installs keep their files under the configured
data directory; native Windows checkouts start again (thanks Rol3333, #2168);
upgrading no longer prints alarmingno such columnwarnings; thumbnail
generation finishes on large libraries; many notices dismiss reliably; Send
to eReader uses your personal cover; deletions and bulk edits report
partial failures; a broken interface language can no longer lock you out of
settings; app-password sign-in is faster.
Security
- The new interface's sign-in, registration, magic-link and password-reset
requests enforce their rate limits, per address and username. - LDAP sign-in checks credentials more strictly, and OPDS sign-in paces repeated
failures the same way for every login type. - Device and administrator views re-check each owner's current library and
content restrictions. - The Convert Library and EPUB Fixer pages show text from books as plain text.
- Browser reading and book deletion follow the same roles in both interfaces;
deleting a book or format needs both "Delete books" and "Edit books". - Container startup validates stored settings before using them.
Everything user-facing in this release is also on the in-app What's New
page, reachable from the Help menu.
Full changelog: https://github.com/new-usemame/Calibre-Web-NextGen/blob/main/CHANGELOG.md