v4.1.31 — your Kobo gets Kobo's own format automatically, and the library stops freezing during imports and syncs
LatestYour 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 adocker execcommand 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--useror rootless Podman every
service died trying to switch to its own app user, the supervisor restarted
them forever, anddocker psshowed 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
/configvolume, 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