github fabriziosalmi/certmate v2.4.2
v2.4.2 — UI debt repayment (htmx removed, settings.js split, Tailwind rebuild)

latest releases: v2.4.7, v2.4.6, v2.4.5...
6 hours ago

Frontend-only cleanup driven by a UI tech-debt audit. No behavior changes for end users; the bundle shrinks (~51 KB removed) and the theme toggle finally works correctly.

Refactor

  • Removed unused htmx.min.js (4d27249) — was loaded synchronously from base.html on every page but no template ever used hx-* attributes. 51 KB of vendor JS for zero benefit; the <script> tag and the file itself are gone.
  • Split settings.js into per-component modules (54bafe5) — three self-contained Alpine components extracted to settings-notifications.js, settings-deploy.js, and settings-apikeys.js. settings.js is now 2651 lines (was 3048, −13%). Cross-module helpers (addDebugLog, showMessage) bridged via a small window.CmSettings surface.
  • Added CertMate.html tagged-template helper (85f743e) — each ${value} interpolation is auto-escaped; CertMate.raw() opts out for pre-rendered fragments. Converts the two largest innerHTML sites in dashboard.js (stats cards + cert table row) — removes a class of XSS-by-omission risk where a future PR could forget to call escapeHtml() on a user-provided field.

Build hygiene

  • Rebuilt tailwind.min.css (757e14d) — the bundle was months stale and missing ~128 dark:* utilities. Most visible symptom: the theme toggle showed both moon and sun icons simultaneously because dark:hidden / dark:inline didn't exist in the bundle. Other silently-broken classes included safe-area-bottom and pb-16. Run npm run css:build after touching templates to keep this fresh.

Tests

  • Updated test_static_csp parametrization (33135eb) to match the new module layout: drop htmx.min.js, add settings-* bundles.

Notes for upgraders

Pure drop-in. No config, schema, or API changes. Containers built from this tag are byte-equivalent in behavior to v2.4.1; only the served frontend assets change.

Full diff: v2.4.1...v2.4.2

Don't miss a new certmate release

NewReleases is sending notifications on new releases.