Eight fixes. The significant one: books that failed to convert were being dropped instead of imported.
docker pull ghcr.io/new-usemame/calibre-web-nextgen:v4.1.22
Fixed
A book that fails to convert still lands in your library. If a file could not be converted to your target format — a large PDF that ran out of time, or internals Calibre chokes on — the book was dropped altogether and the file left the ingest folder, with Successfully processed in the log on its way past. The original is now imported whenever a conversion fails. Long conversions needed a second fix to get there: they now have their own time limit set just inside the ingest watchdog's, so overrunning ends as a normal failure instead of killing the ingest outright. Raising Ingest Timeout in CWA Settings raises both. Reported by @auspex (#1094).
Pages no longer fail at random when the server is busy. The server kept one working copy of your library and shared it across every request it was handling, so whichever page finished first closed it out from under the others. It showed up as Instance ... is not persistent within this Session, pointing at a different unlucky page each time. A related case: background jobs (duplicate scans, thumbnails, metadata backups, Hardcover syncs) could close the library connection while a page you had open was still reading from it, giving Cannot operate on a closed database. Requests and background jobs now each keep their own handle (#1150, #1121 reported downstream by @auspex).
Books recorded as ger, fre or dut show their real language. Only the deu/fra/nld form was recognised, so a book carrying the other form — common in library-catalogue records and some EPUB files — showed "Unknown", and importing one could be refused with "'ger' is not a valid language". Both forms now work for all twenty languages where they differ. Whether a language counts as valid also no longer depends on which language you read the interface in (#1109).
Your library keeps working when its extra fields can't be read. Book pages, the books table and both search screens returned an error if the custom-column lookup failed, even when the rest of the library was readable. They now load without the extra fields and note the reason in the log (#1153).
Opening your library runs one search instead of two. Every visit fetched the first page of books, then immediately fetched it again at a different size and threw the first answer away. On a large library that first page is the slowest query on it, and it ran twice on every load, for every reader (#1144).
Book pages stop scrolling sideways on a phone. Libraries catalogued with Library-of-Congress subject headings carry tags wider than a phone screen, and the tag row would not break one onto a second line, so the whole page could be dragged sideways. It hit anyone reading without an editor account, guests included (#1170).
The series line under a cover is dark enough to read. The small text was styled with the interface's muted grey and then faded a second time on top of that, landing near 4:1 contrast against the card. The second fade is gone (#1135).
Changed
The "read" mark on a cover is now a green "Read" label at the bottom-left. It was a 22-pixel checkmark circle in the top-right with no wording, which was easy to miss at a glance. It now sits where the classic view's labelled badge sits, says what it means, and gets larger again on phones and tablets. The wording follows your language, so a German library reads "Gelesen". Reported by @uschi1 (#1117).
Something still not right? Open an issue.