diff --git a/src/ci_orchestrator/web/static/app.js b/src/ci_orchestrator/web/static/app.js index 33879a4..1fdc33f 100644 --- a/src/ci_orchestrator/web/static/app.js +++ b/src/ci_orchestrator/web/static/app.js @@ -99,7 +99,20 @@ if (dialog.open) { dialog.close(); } - dialog.showModal(); + // showModal() is called here from an htmx response handler, not + // synchronously inside the user's own click -- some browsers then + // swallow the very first click on the dialog's contents (the + // top-layer promotion/focus handoff hasn't settled), so Confirm + // silently does nothing until clicked a second time. One animation + // frame is enough for that to settle; explicitly focusing Confirm + // afterwards makes the browser's hit-testing land on the button. + requestAnimationFrame(function () { + dialog.showModal(); + var confirmBtn = dialog.querySelector('button[type="submit"]'); + if (confirmBtn) { + confirmBtn.focus(); + } + }); } var cancel = dialog.querySelector("[data-modal-cancel]"); if (cancel) { diff --git a/src/ci_orchestrator/web/templates/dashboard.html b/src/ci_orchestrator/web/templates/dashboard.html index 945259a..f409b57 100644 --- a/src/ci_orchestrator/web/templates/dashboard.html +++ b/src/ci_orchestrator/web/templates/dashboard.html @@ -6,21 +6,21 @@ {{ super() }} {% include "partials/status_header.html" %} {# - Layout ordering (Stage E). Narrative top-to-bottom: what's running now - (VMs) -> infrastructure health -> assets (templates + their backups) -> - build outputs (artifacts) -> managed services -> the dedicated - Maintenance/danger card last. The wide, many-column tables (vms / templates - / files / services / maintenance) span the full grid row via ``.card--wide``; - the four compact info cards flow in one breathing-room row between the VMs - table and the Templates table, ordered Host -> VMware -> Runners -> Cargo - cache. + Layout ordering (Stage E). Narrative top-to-bottom: infrastructure health -> + what's running now (VMs) -> assets (templates + their backups) -> build + outputs (artifacts) -> managed services -> the dedicated Maintenance/danger + card last. The wide, many-column tables (vms / templates / files / services + / maintenance) span the full grid row via ``.card--wide``; the four compact + info cards flow in one breathing-room row at the top, ordered Host -> + VMware -> Runners -> Cargo cache, followed by the VMs table and then the + Templates table. #}
- “Purge (max age)” in Maintenance removes only entries older than this - retention window; “Empty all” clears the cache regardless of age. -
{% else %}Cargo cache status unavailable.
{% endif %}