Test / test (push) Successful in 7m5s
Release / gates (push) Successful in 7m28s
Release / build (amd64, freebsd) (push) Successful in 2m52s
Release / build (amd64, linux) (push) Successful in 2m46s
Release / build (arm64, freebsd) (push) Successful in 2m22s
Release / build (arm64, linux) (push) Successful in 2m38s
Release / build (loong64, linux) (push) Successful in 2m7s
Release / build (riscv64, linux) (push) Successful in 2m17s
Release / release (push) Successful in 1m0s
Assisted-by: GLM 5.3
35 lines
1.2 KiB
HTML
35 lines
1.2 KiB
HTML
{{define "title"}}{{ tr "Updated to" }} {{ .Target }} · {{ tr "Volumen admin" }}{{end}}
|
|
{{define "content"}}
|
|
<div class="empty narrow">
|
|
<svg aria-hidden="true"><use href="/admin/assets/graphis.svg#refresh"></use></svg>
|
|
<h1>{{ tr "Updated to" }} {{ .Target }}</h1>
|
|
<p class="empty__note" id="update-status" role="status">{{ tr "The server is restarting. This page will reload automatically." }}</p>
|
|
<div class="spinner" aria-hidden="true"></div>
|
|
</div>
|
|
|
|
<script nonce="{{ .CSPNonce }}">
|
|
/* Wait for the engine to come back by polling its own health endpoint,
|
|
never by a guessed delay. */
|
|
(() => {
|
|
const status = document.getElementById("update-status");
|
|
let attempts = 0;
|
|
const timer = setInterval(async () => {
|
|
attempts += 1;
|
|
try {
|
|
const response = await fetch("/healthz", { cache: "no-store" });
|
|
if (response.ok) {
|
|
clearInterval(timer);
|
|
status.textContent = window.__("update.reload");
|
|
setTimeout(() => { window.location.href = "/admin/"; }, 500);
|
|
return;
|
|
}
|
|
} catch (error) { /* still down */ }
|
|
if (attempts > 60) {
|
|
clearInterval(timer);
|
|
status.textContent = window.__("update.gaveup");
|
|
}
|
|
}, 3000);
|
|
})();
|
|
</script>
|
|
{{end}}
|