Update ghcr.io/new-usemame/calibre-web-nextgen Docker tag to v4.1.41 #165
No reviewers
Labels
No labels
audit-work
bug
docs
general-admin
major-upgrade
needs-vps-sync
new-service
on-hold
outside-work
post-podman
renovate
upstream
vps
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
mysticalsoap/docker!165
Loading…
Reference in a new issue
No description provided.
Delete branch "renovate/ghcr.io-new-usemame-calibre-web-nextgen-4.x"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
v4.1.39→v4.1.41Release Notes
new-usemame/Calibre-Web-NextGen (ghcr.io/new-usemame/calibre-web-nextgen)
v4.1.41Compare Source
Added
exchange instead of relying on request-line access logs. Operators can use
a deliberately explicit private-data environment gate to capture the device
request, the actual filtered request sent to Kobo, Kobo's raw response, and
the final byte stream returned to the device for
checkforchangesandannotation GET/PATCH calls. Credentials are redacted, records never enter
ordinary logs or support bundles, and local retention is capped.
Changed
every pull request. Each change now carries an isolated
changelog.dfragment, and release preparation assembles the fragments deterministically.
Fixed
A series added or changed in the library now reaches the Kobo copy of the
book. Download-time metadata embedding was removing the EPUB 3 collection
metadata Kobo firmware reads, even when the stored KEPUB had already been
corrected. The served KEPUB now carries the current series and index while
retaining its cover marker, modified timestamp, refinements, and unrelated
collections. Reported by @bjekel
(#1372).
The small edit pencil under each book cover no longer looks like a dark
sticker on the light, sepia and high-contrast themes. It was drawn with the
palette reserved for controls that sit on top of cover artwork — deliberately
opaque and the same colour whatever theme you use, so it stays readable over any
image. Since it moved out from over the cover and onto the card itself, that made
it a near-black disc with a white outline on a pale card. It now uses the same
quiet surface colours as every other control on the card, in every theme.
Pull requests opened before a release no longer fail their changelog CI
check after that release is tagged. The guard now considers only releases
contained in the branch under test, while retaining the committed release
ledger as a strict fallback when Git tag reachability is unavailable.
Cover thumbnails load faster, and the gap widens the bigger your library
gets. Every cover request searched the whole thumbnail table instead of
going straight to the row it wanted, and the book grid asked for each cover
twice — once for the WebP version and once for the JPEG. Both are fixed, so a
page of covers now costs a fraction of the database work it used to. Reported
by @ericsilberberg on Discord, who was running NextGen and stock Calibre-Web
side by side and noticed pages populating more slowly here
(#1571).
A comic dropped into the ingest folder now keeps the title, series, issue
number, author and language its
ComicInfo.xmlalready carries. Auto-ingestran a bare
calibredb addfor comic files, which does not read that embeddedmetadata, so a
.cbz/.cbrtagged by ComicTagger, Kapowarr, Mylar3 or awell-tagged scene release landed as
<filename>byUnknown— the sameguesswork an untagged file gets. Uploading the identical file by hand through
the web UI already read it correctly; ingest now does too. A comic with no
embedded tags is unaffected. Contributed by
@rfsbraz
(#1690,
#1691).
Kobo annotation uploads are no longer acknowledged when their JSON shape
prevents CWNG from addressing the uploaded annotations. Non-empty
non-object bodies and non-empty non-list annotation batches now receive a
temporary failure so the device retains the delta for retry, while legitimate
empty sync and delete-carrying batches continue normally. Operators running
the explicit private
Reading Services diagnostic can also capture the body of a pre-authentication
401 refusal in a separate, tightly bounded unauthenticated store. Repeated
attempts for the same unresolved upload now share one protected recovery
record, preventing one retrying device from exhausting the instance-wide
spool and denying recovery staging to other users.
Kobo annotation recovery copies could be deleted by maintenance meant for a
different folder. The background job that expires old recovery records
looked up which folder to clean when it eventually ran, rather than when it
was scheduled, so a change in between could point it somewhere else. It now
carries its target with it.
A highlight that fails to save no longer looks saved. If the database
rejected the write, the web reader still showed the highlight as created and
a delete still reported success — the change was gone but nothing said so.
Those paths now report the failure, and KOReader is told its push did not
land instead of being acknowledged.
Slow storage no longer discards Kobo annotation recovery bodies. If a
durable spool write outlasts the request deadline, it now finishes in the
background, and one following PATCH can also be admitted instead of being
rejected merely because the first write is still completing.
A Kobo annotation upload now has a bounded local recovery record even if
local processing throws before it can persist the delta. Before parsing or
dispatch, CWNG fsyncs the exact raw PATCH body and its new directory entries.
Blocking storage work runs off the gevent hub behind a 100 ms request
deadline; on timeout or any storage failure, the PATCH continues without a
new record. Unresolved records are never evicted to admit a newer body, and
transactional replacement restores the previous record set if a new write
fails. Private retention remains bounded even when no new PATCH arrives. The
device still receives the same explicit failure it does today when nothing
was stored — recovery is in addition to that refusal, not a replacement for
it.
Bulk actions now report partial failures truthfully. Delete, read/unread,
add-to-shelf, and metadata updates count each request separately; failed books
are reported instead of being included in a false success total, and only
confirmed deletions are removed from the library cache.
Restoring a Kobo backup no longer drops the annotations from most of your
books. The recovery importer only understood the chapter identifier that a
Kobo writes for books whose EPUB keeps its package file at the top level. For
every other book — the common case — it counted the annotations as
unreadable and skipped them, so a restore that reported success could bring
back a fraction of what the backup held. Those annotations now import.
Kobo PATCH recovery no longer commits a record after retention scheduling
has already failed. Timer admission now happens before the durable spool
transaction, so a maintenance setup failure leaves the established recovery
record set unchanged and the annotation PATCH still fails open.
Test-suite reliability: concurrent test processes no longer fight over the
same lock file. Several maintenance scripts guard themselves with a
one-at-a-time lock in the system temp directory, which is correct when the app
runs but meant any second process on the machine — a parallel test worker, a
second test run, or the app itself — could make unrelated tests report
failures. Each test process now gets its own temp directory.
v4.1.40Compare Source
Added
away. On mouse-and-keyboard desktops it stays as a narrow icon rail, then
expands over the page when you hover over it or focus it with the keyboard.
Touch devices and smaller screens keep the existing menu drawer. Proposed and
contributed by @chloeroform (#1019,
#1652).
Fixed
After opening a sidebar destination, the expanded desktop navigation could
stay over the new page and block its left-side controls simply because the
pointer was still resting over the item that was clicked. The rail now
stays collapsed while the pointer travels out toward the page; deliberately
returning to the rail or focusing it with the keyboard still expands it
without shifting the page content.
The Discover strip no longer changes its books when you return to the
browser tab. The earlier app-wide fix stopped most cached pages from
refreshing on focus, but Discover's random-book request had its own rule and
still fetched a fresh set. It now keeps the same picks until you deliberately
shuffle or reload them. Reported by
@TangentFoxy and fixed by
@chloeroform (#1628,
#1653).
A book now takes you back to the list you opened it from instead of
dropping you at the library root. The back link returns to the same author,
series, tag, publisher, language, rating, format, shelf, magic shelf, or
discovery view (Hot, Discover, Top rated, Favourites, or Archived), so a
filtered view no longer has to be rebuilt by hand. A library search also
returns with its
?q=query intact. Advanced search is an honest exception:/searchreturns to the search page with an empty form, not the previouscriteria or results, because that page keeps its criteria in component state
and puts nothing in the URL. The destination survives a reload of the book
page, but the list's loaded pages and scroll position do not, so it returns at
the top; a book opened from a deep link with no recorded origin still falls
back to the library root as before. Opening a book from somewhere that is not
a list — a notice banner on another page, for example — or going straight
from one book to another shows “← Library”, because there is no list behind
it. Reported by @Arjan61 in #666.
Smart shelves and other library activity now keep recording statistics when
source-tree and container installs launch outside the application directory.
Those launches could not find the CWA settings database module, which filled
the log with
No module named 'scripts'errors and silently dropped activityrecords for smart shelves, searches, shelves, OPDS, Kobo sync, and related
actions. Reported in
#1755.
Profile pictures and update reminders now follow the configured data
directory instead of assuming every install uses
/config. Source andbare-metal installs could otherwise read or write the container paths, making
a saved profile picture disappear from one interface or preventing it from
updating, and making the once-a-day update reminder forget its state. Both
files now live wherever the installation's configuration actually lives.
Reported by @Thovi98 and fixed by
@chloeroform (#1556,
#1678).
A Kobo can no longer erase a book's local highlights when its Calibre-Web
session expires or an admin has just disabled Kobo sync. Those transition
windows, plus alternate spellings of Kobo's
checkforchangesrequest, couldbypass the owned-book filter and tell the device to replace its complete
local highlight set from the cloud response. Every equivalent request now
reaches the same ownership containment; owned books receive an empty change
list, while Kobo-store content continues to proxy normally.
Merging duplicate books no longer discards the newest copy of a highlight
or note when both books carry the same annotation. The merge always dropped
the annotation attached to the book being removed, even when that copy held a
later edit than the one on the book being kept. It now compares the available
edit times and revision, then preserves the newest complete version and its
sync state.
Deleting KOReader highlights from a heavily annotated book is no longer
slower the more highlights that book holds. Removing a handful of
highlights made the server load every live KOReader highlight in that book
first, so the work grew with the size of your collection rather than with the
number of deletions. The server now looks up only the highlights actually
being removed, in bounded groups. Which highlights get deleted is unchanged,
and unrelated highlights are untouched.
Two people could not find how to delete a book in the new UI and switched
back to the classic view over it. Deletion worked, but the edit page had no
whole-book delete control and the book page buried Delete at the end of a
wrapping row of ordinary actions. The edit page now puts Delete book beside
Edit metadata, and the book page gives it its own clearly labelled
destructive section — the two places people actually look. Both remain
permission-gated and confirm before deleting. Reported through anonymous
feedback (#1046,
duplicate #1037).
People who had permission to manage someone else's public smart shelf could
not do so in the new UI. Its Edit, Duplicate, and Delete controls were all
hidden unless you owned the shelf, even though the server allows admins to
edit it, shelf editors to delete it, and any signed-in viewer to duplicate it.
Each control now follows its own server-provided permission, matching ordinary
shelves; Kobo sync remains available only to the shelf owner. Reported by
@iroQuai (#1734,
umbrella #867).
Pages and API requests no longer fail sporadically with a dropped
connection or
socket hang upbehind a reverse proxy or in a client thatpools connections. The server deliberately closes every HTTP connection
after its response; it now sends
Connection: closeso HTTP/1.1 clients donot return that closing socket to their pool and try to reuse it.
The dependency list on the Statistics page now tells you when something is
actually missing. The list is built from the packages Calibre-Web NextGen
declares it needs, but a few of those only apply to certain systems — one is
Windows-only, another is for older Python versions. On everything else they
were reported as "not installed", so the page hid every "not installed" row to
keep them out of sight, and a dependency that was genuinely absent got hidden
along with them. That only matters if you run from source rather than the
Docker image, where it is possible to end up short a package after an upgrade:
the page showed nothing wrong and the app failed later with an import error
instead. Entries that do not apply to your system are now left out at the
source, and anything genuinely missing is listed again. Docker users see the
same list as before, minus two rows that never applied. Packaging work by
@chloeroform (#1442).
This PR has been generated by Mend Renovate CLI.
815491e5b1toa7cd02e0d3Update ghcr.io/new-usemame/calibre-web-nextgen Docker tag to v4.1.40to Update ghcr.io/new-usemame/calibre-web-nextgen Docker tag to v4.1.41View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.