Two sync and metadata fixes, plus a way to support the project.
Update:
docker pull ghcr.io/new-usemame/calibre-web-nextgen:v4.0.167
Kobo shelf sync no longer removes the book you're reading. If you sync your Kobo by shelves, a brief database hiccup while the server worked out which books belonged on your shelves could drop a book you were currently reading from the device and force a re-download (it looked random). The sync now leaves your books in place when it can't read that list reliably and reconciles on the next sync, instead of treating the failure as "this shelf is empty." Reported by @Glennza1962 and @bigbold1023.
Hardcover metadata search no longer gives up on a stale token. If you had both a per-account and a global Hardcover API token, search used the per-account one and stopped if it had expired, even when the global token still worked. It now tries each configured token until one is accepted, and trims a stray Bearer prefix or whitespace from a pasted token. Thanks to @WasabiBurns.
Calibre-Web NextGen now has its own Ko-fi if you'd like to support development.