github new-usemame/Calibre-Web-NextGen v4.1.31
v4.1.31 — your Kobo gets Kobo's own format automatically, and the library stops freezing during imports and syncs

4 hours ago

Your Kobo now gets books in the format it was built for, without you asking. The
library also stops going unresponsive while an import or a Kobo sync is running,
which is the thing most likely to have made this feel slow.

docker pull ghcr.io/new-usemame/calibre-web-nextgen:v4.1.31

Your Kobo gets Kobo's own format, automatically

Kobo devices read two kinds of EPUB: a plain one, and a "kepub" that Kobo's own
store always sends. The kepub is the one the device is built for — faster page
turns, working chapter progress, and highlights that stick. Until now NextGen
only made a kepub the first time a device asked for a particular book, so most
of a library sat in the plain format.

There's a Produce and prefer KEPUB for Kobo delivery switch in Settings →
Kobo, on by default, and it prepares the kepub ahead of time for every book
you've already sent to a Kobo. EPUB stays the source format and nothing is
replaced. The kepub is an extra file of roughly the same size, so expect the
books you sync to a Kobo to take about twice the disk they do now. Turn the
switch off for the old behaviour. If kepubify isn't installed the switch says
so rather than doing nothing quietly.

The library stops freezing while it works

Most of this release is one problem with many faces: work that should have
happened in the background was happening inside a request, so one person's
action stopped every other page for everyone.

  • Importing a book stopped the whole library. Saving a metadata edit,
    renaming or merging a tag, or uploading during an import could stop the server
    answering anyone until the import finished. Nothing was logged and it
    recovered on its own, so it read as "the server is randomly slow". An
    unrelated page load during that wait went from 6.5 seconds to 36 milliseconds.
  • The first Kobo download of any book froze everything. The conversion ran
    inside the download request. On a 24 MB book an unrelated page load went from
    9 ms to 754 ms; it now stays at 21 ms.
  • Sending a large book to a Kobo froze the site, if you have embed-metadata
    turned on. Same 24 MB book: 493 ms down to 21 ms, and the book arrives just as
    fast.
  • Kobo syncs re-read every book from disk to check one rarely-used property,
    inside the sync request. On a 215-book library the per-100-book cost went from
    400 ms to 11 ms. Two caveats worth stating: the memory holds 4,096 books, so
    larger libraries see less benefit on a full sync, and on a NAS each book still
    costs one small filesystem check.
  • Kobo cover padding and Kobo-Store passthrough each held up other pages too
    — the passthrough for up to 12 seconds when the store was slow to answer. Both
    now wait out of the way. Passthrough only affects you if you turned it on.
  • Kobo syncs wrote to the database once per book instead of once per batch, so
    a hundred-book sync did a hundred writes with everyone else queued behind them.

Kobo reliability

  • A book could end up permanently broken on your Kobo if the container was
    stopped mid-conversion. The half-written file was accepted as finished and
    recorded in the library, and nothing would ever repair it. Converted books are
    now written aside and swapped in only once complete and verified as readable.
  • One unreadable book could stop every other book being prepared — on every
    restart, forever.
    A single failure, for instance on a read-only library,
    stopped the run and started over from scratch next boot, getting no further.
    It now skips what it can't do, reports how many failed, and finishes the rest.
  • Books could arrive in the wrong format right after updating. A download
    landing during the first-run background preparation queued behind the whole
    job, timed out, and fell back to the plain format. Downloads now go through
    immediately while that work continues.

Also in this release

  • Re-apply covers and metadata to your whole library from the admin page.
    NextGen writes your edits into the ebook files, but only for the book you just
    edited, so anything changed before a fix kept the old values inside the file.
    The only sweep was a docker exec command that isn't in the docs. There's now
    a NextGen Cover & Metadata Enforcement page next to the EPUB Fixer, with a
    Start button, live progress and log, Cancel, and an archive of previous runs.
    Reported by @stripeymonkey.
  • Turn off the "Read now" and edit buttons on book covers. On a touchscreen
    both stayed visible rather than appearing on hover, which made the library look
    busy. A Show Read now and edit buttons switch in the library's View
    settings removes them everywhere covers appear. Both actions remain on the
    book's own page. On by default.
  • Running the container as a non-root user gave you a container that claimed
    it was fine and served nothing.
    Under --user or rootless Podman every
    service died trying to switch to its own app user, the supervisor restarted
    them forever, and docker ps showed Up with nothing listening. NextGen now
    checks whether it can switch users first, and stays as whoever started it when
    it can't. Diagnosed down to the call sites by @KucharczykL over nine days of
    running it under rootless Podman.
  • The Russian interface fell back to English in the new tag tools. Merging
    and deleting tags shipped in v4.1.30 without Russian, so the Tags page switched
    to English exactly when asking you to confirm something destructive. All
    thirteen phrases are translated and Russian is complete again at 2,622 of
    2,622. Contributed by @standhaftsohnsergius, translation by ZIZA.
  • "Source Code" in the package details opened the releases list instead of
    the code. Repointed, finishing the link work @chloeroform started.
  • Metadata working files moved onto your /config volume, so they survive a
    container rebuild.

Thanks

@stripeymonkey, @KucharczykL, @chloeroform, @standhaftsohnsergius, ZIZA and
@Glennza1962 for the reports, patches and translation in this release.

Something still not right? Open an issue at
https://github.com/new-usemame/Calibre-Web-NextGen/issues

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

NewReleases is sending notifications on new releases.