github new-usemame/Calibre-Web-NextGen v4.1.44
v4.1.44 — Kobo upgrades keep the books a reader already holds, exact KOReader positions, and per-account libraries

3 hours ago

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.44

Upgrading

  1. 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.

  2. 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.
  3. Source and pip installs gain one runtime dependency: html5lib
    (>=1.1,<2). Docker users need do nothing.

  4. 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: remove cwasync.koplugin and 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.
    With TZ set (for example TZ=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 send Cache-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 alarming no such column warnings; 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

Don't miss a new Calibre-Web-NextGen release

NewReleases is sending notifications on new releases.