github new-usemame/Calibre-Web-NextGen v4.1.39
v4.1.39 — Kobo and KOReader highlights stop going missing, and the New UI shows what you have started

8 hours ago

Kobo and KOReader highlights stop going missing, and the New UI shows what you have started.

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

Most of this release is one subject seen from several sides: highlights you made on a Kobo, in the
web reader, or in KOReader could be silently lost, silently miscoloured, or silently never shown at
all. Each of those had a different cause, and all of them are fixed here.

Highlights

  • A KOReader sync can no longer delete a highlight it did not make. It could previously take
    ownership of a highlight created on your Kobo or in the web reader and then remove it — sometimes
    in that same request. KOReader can still edit the contents of those highlights; it can only
    delete the ones it created.
  • Highlights now work throughout books that keep many chapters in a single file — the shape
    almost every Project Gutenberg book has. A Kobo recognises a chapter by the file it lives in, so
    in these books only the first chapter per file could hold a highlight; everything you marked in
    the rest was saved on the device and never displayed. Newly uploaded, converted, or auto-ingested
    books are stored one chapter per file. Measured on a 41-book library: 13 of 1653 chapters could
    hold a highlight before this work, 1192 after the existing repair, and 1584 with chapter
    splitting on top. Books you have already highlighted are deliberately left alone, because
    restructuring them would stop those highlights showing on your device.
  • Highlights come back in books whose contents links point at an anchor, including safe repairs
    to books you converted before upgrading. Sync and open the book on your Kobo to pick up the
    repair.
  • Imported Kobo highlights keep their real colours — yellow, pink, blue, green and grey now
    survive a KoboReader.sqlite import into the reader, the Highlights page and exports. Notes can
    again be saved on imported pink and grey highlights.
  • The KOReader plugin's colour table was wrong four ways. Blue and green arrived swapped, Kobo
    pink was misnamed, and greyscale-reader highlights fell back to yellow. The plugin and the server
    now share one device-measured mapping.
  • The repair notice now tells you what to do. It used to say a book had been repaired and that
    older highlights might need recreating — true, but not actionable. It now leads with "sync, then
    try highlighting again", and gives the fallback for devices that will not re-download on their
    own.
  • The log no longer overstates how many books cannot show highlights, having previously counted
    page-number anchors as broken chapters.

The New UI

  • A "Reading" badge on books you have started, matching what the classic UI always showed.
    Everywhere: library grid, shelves, magic shelves including Currently Reading, and search results.
    Until now a part-read book looked identical to one you had never opened. Reported by @magdalar and
    @JamesHACS (#1702).
  • Covers stop re-checking with the server on every scroll, and a book page requests an image
    sized for your screen instead of the full original.
  • Replacing a cover now reaches everywhere it is used — other pages refresh, Kobo is told to
    sync it, and the change is written into the downloadable file.
  • Reduce Motion now stops all seven loading spinners, not four.
  • Returning to a browser tab no longer refreshes the entire app. Live polling such as the task
    queue is unaffected.
  • Opening the library no longer fetches a page-sized response it cannot use, removing a failed
    request and retry from every load.

Server

  • Container updates and restarts shut down promptly instead of running out the full Docker
    grace period waiting on the ingest watcher.
  • An import in progress no longer triggers a false "run a duplicate scan" prompt on bare-metal
    installs and servers with a customised ingest marker path.

Also in this release

The Kobo LastModified fix from #1706 — a device sending a timestamp with milliseconds failed the
whole reading-state sync with a generic 400. Reported with a full payload and the correct fix by
@jakejoh; it merged shortly after v4.1.38 was tagged, so this is its first published release.

Thanks to @magdalar, @JamesHACS and @jakejoh for reports that were specific enough to act on
directly.

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

NewReleases is sending notifications on new releases.