github new-usemame/Calibre-Web-NextGen v4.0.47
v4.0.47 — Admin update indicator (Docker) + Hungarian OPDS translations

latest releases: v4.0.86, v4.0.85, v4.0.84...
7 days ago

What changed

Two follow-ups surfaced during the v4.0.46 deep-verification pass.

Admin "Update available" indicator (Docker users)

PR #136 (v4.0.46) fixed the in-fork "Check for Update" button — but Docker builds disable feature_support['updater'] because the in-place file replacement doesn't work in a container. So Docker users (≈everyone running ghcr.io/new-usemame/calibre-web-nextgen) never saw the button. They had no way to learn from the admin UI that a newer release existed.

s6-init/cwa-init (PR #28, v4.0.8) already writes the latest fork tag to /app/CWA_STABLE_RELEASE at container boot, and cwa_update_available() already compares it to the installed version. This release just surfaces that comparison next to the installed version in the admin Version Information table:

Update available: v4.0.47docker pull ghcr.io/new-usemame/calibre-web-nextgen:latest

When up-to-date, the original "Current Version" label is preserved. The helper is exception-safe — a version-probe glitch can't break the admin page render.

Closes the remaining gap from fork issue #125.

Hungarian OPDS translations actually land

PR #137 wrapped the OPDS root entries with N_() (lazy_gettext) so pybabel-extract could pick them up. This release runs the next step — adds Hungarian translations to hu.po for the four labels that still rendered in English even after the wrapping:

  • "Alphabetical Books" → "Könyvek ábécé sorrendben"
  • "Recently added Books" → "Nemrég hozzáadott könyvek"
  • "Random Books" → "Véletlenszerű könyvek"
  • "Magic Shelves" → "Varázspolcok"

Verified end-to-end against the local container: admin user with locale='hu' fetches /opds/ via Basic auth, returned XML renders all 16 root entries translated (4 new + 12 pre-existing). Survives cold container restart.

This closes fork issue #121 sub-bug 3 end-to-end for Hungarian. Other locales remain at the pybabel-extract step — translators can now add entries to their .po files without code changes.

Why two releases instead of one

The v4.0.46 verification pass (now permanently encoded in CLAUDE.md § "Enterprise verification standard") caught both gaps:

  1. The admin button is disabled in Docker — fix in v4.0.46 only helps non-Docker users.
  2. The marker is necessary but not sufficient for i18n — translations still have to land in the .po file.

Both gaps would have escaped a unit-tests-only sign-off. Codifying the deep-verification step prevents recurrence.

To get the update

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

Or :latest. No data migration step. Admin page picks up the indicator on first render; Hungarian translations apply on next session-cookie page load.

Test verification

  • 6 new tests for cwa_get_update_indicator() and the admin route/template surface.
  • Container-level verification: admin page shows the outdated row when CWA_INSTALLED < CWA_STABLE; OPDS root in Hungarian renders all 16 translated entries; all v4.0.46 fixes (thumbnail deadlock, updater target, OPDS bugs) survive cold container restart.
  • Stress: 8 parallel POST /admin/book/<id> against the local container completed in <400ms with HTTP 200 and zero database-lock / IntegrityError / 504 signatures.
  • Readest-style probe sequence (12 mixed unauth/auth requests across 6 OPDS endpoints): zero log spam, all 401s and 200s as expected.

Credit

Both follow-ups driven by the deep-verification standard the operator pushed for after v4.0.46 shipped at ~70% true coverage.

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

NewReleases is sending notifications on new releases.