github new-usemame/Calibre-Web-NextGen v4.0.43
v4.0.43 — Calibre-Web NextGen rebrand + redesigned book organizer with bulk editor

latest releases: v4.0.171, v4.0.170, v4.0.169...
one month ago

What changed

Major UX rework of every multi-book listing page plus the user-visible product brand.

Calibre-Web NextGen — the new name

The product name on user-visible surfaces switches from "Calibre-Web Automated" to Calibre-Web NextGen: page title, About page, admin version table, CWA settings + stats headings, error pages, OPDS feed description. SPDX headers, copyright credits, and links to the upstream crocodilestick/Calibre-Web-Automated and janeczku/calibre-web projects are untouched — both are still credited as the projects this fork stands on.

Redesigned book organizer

The row of 6–10 icon-only sort buttons that dominated the top of every listing on mobile is replaced with three controls in one row:

  • Sort dropdown (left, pinned) — same glyphicons you know, paired with plain-English labels: "Date added, newest first", "Title A → Z", "Author A → Z", "Published, oldest first", and so on.
  • Multi-select toggle (right) — flips the page into selection mode. Cover overlays gain checkboxes, tapping a cover toggles selection, hover quick-actions are suppressed. ESC exits.
  • Settings gear (right) — dropdown with a placeholder "Cover Settings" entry.

When selection is active, a second row appears under the bar (separated by a thin divider) with three bulk operations:

  • Add to Shelf — sub-dropdown of your shelves; 200 / 207 partial-success / 400 all-already-on-shelf are mapped to success / info / info toasts (no more red "Request failed" when books were just duplicates).
  • Mark Read / Mark Unread.
  • Delete — confirm modal, then bulk delete. Gated on the delete-books role.

These are wired to server endpoints that already existed (/shelf/add_selected_to_shelf, /ajax/readselectedbooks, /ajax/deleteselectedbooks) — no new Python routes shipped here, just the UI that was missing.

Cover badges

Each cover now shows status badges at the bottom-left:

  • Green "✓ Read" pill if the book is marked read.
  • Up to three shelf capsules stacked below ("Bedside", "To Read", "Favorites"); a "+N" pill if it's on more.
  • Faded in selection mode so the checkbox overlay stays dominant.

Mobile

  • A "Top" pill appears at the top of the screen after you scroll past 200 px on phone viewports; tap to smooth-scroll back to the top. Hidden on desktop. Honors prefers-reduced-motion.
  • Toast feedback for bulk actions sits at the bottom of the screen with a color-coded left border (green / blue / red) — never overlaps the bar.

To get the update

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

Existing instances will continue to display whatever value you previously saved as the page title in admin → settings; new installs default to "Calibre-Web NextGen".

E2E verification

Demo built from this commit, seeded with 26 Project Gutenberg titles and 3 shelves:

  • Sort dropdown — every option navigates to the right ?sort_param=… URL on every multi-book page (Books, Hot, New, Best Rated, Read, Unread, Archived, by-author, by-series, by-shelf, search).
  • Multi-select — capture-phase click handler successfully blocks the Bootstrap detail-modal binding when select mode is on; reverting to the modal binding when select mode is off.
  • Add to Shelf (success) — added 3 books to a shelf, verified by visiting the shelf page.
  • Add to Shelf (duplicates) — re-added the same 3 books; got "All 3 book(s) were already on Bedside." info toast (not a red error).
  • Mark Read / Unread — flash success toast; /ajax/readselectedbooks returns 200.
  • Delete — confirm modal appears, Cancel preserves the library, OK deletes + reloads.
  • Cover badges — Crime and Punishment showed green "Read" + Bedside + To Read + Favorites capsules stacked at bottom-left.
  • Mobile (390 × 844) — bar collapses to one row, second row stacks vertically, toast slides up from the bottom, scroll-to-top pill appears past 200 px.
  • Permission gates — Delete button hidden for users without role_delete_books(); public-shelf items hidden from the dropdown unless role_edit_shelfs().

Files

New:

  • cps/static/css/book_organizer.css
  • cps/static/js/book_organizer.js
  • cps/templates/_book_organizer.html (Jinja macro module)

Touched:

  • cps/templates/{index,author,shelf,search,layout,image}.html — bar wiring, cover badges, scroll-to-top, toast/confirm-modal infra
  • cps/render_template.pyg.book_shelves_map precompute
  • cps/{about,config_sql}.py, cps/templates/{admin,cwa_settings,cwa_stats*,http_error}.html, cps/templates/osd.xml — brand strings

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

NewReleases is sending notifications on new releases.