From 58471b1a4d1f62e492e4a623f0feacab88499014 Mon Sep 17 00:00:00 2001 From: Asger Geel Weirsoee Date: Sat, 3 Oct 2026 09:03:48 +0200 Subject: [PATCH] fix(claude-login): siden opgiver ikke mens serveren starter login MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Efter et tryk på Start kunne siden nå at læse den gamle hvile-status (fx "Logget ind"), før serveren havde skrevet "starter". Så sprang den tilbage til knappen og målte først igen efter 30 sekunder, og login-knappen kom aldrig frem. Nu venter siden i op til et minut på en status, serveren har skrevet efter trykket, og måler hvert 2. sekund imens. Claude-Session: https://claude.ai/code/session_012LCTmU2ewo8tnM1dByYAoG --- templates/admin_claude_login.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/templates/admin_claude_login.html b/templates/admin_claude_login.html index c8febb1..c93ef94 100644 --- a/templates/admin_claude_login.html +++ b/templates/admin_claude_login.html @@ -48,6 +48,9 @@ }; var $ = function (id) { return document.getElementById(id); }; var timer = null; + // Efter et tryk på Start venter vi i op til et minut på en status, serveren har + // skrevet EFTER trykket; en ældre hvile-status betyder bare, at den ikke er nået dertil. + var klik = 0; function dato(t) { var d = new Date(t * 1000); @@ -56,6 +59,8 @@ function vis(st) { var s = st.status || "ukendt"; + var hvile = s === "ok" || s === "snart" || s === "udloebet" || s === "ukendt"; + if (hvile && klik && Date.now() - klik < 60000 && (st.updated || 0) * 1000 < klik) s = "starter"; var linje = TEKST[s] || s; if (st.expires && (s === "ok" || s === "snart")) { var dage = Math.floor((st.expires * 1000 - Date.now()) / 86400000); @@ -93,6 +98,7 @@ $("cl-start-btn").addEventListener("click", function () { $("cl-start-btn").disabled = true; + klik = Date.now(); fetch("/admin/claude-login/start", { method: "POST", credentials: "same-origin" }) .then(function (r) { return r.json(); }).then(vis) .finally(function () { $("cl-start-btn").disabled = false; });