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.47 —
docker 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:
- The admin button is disabled in Docker — fix in v4.0.46 only helps non-Docker users.
- The marker is necessary but not sufficient for i18n — translations still have to land in the
.pofile.
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.