From 14bdd4dbf4d89c1a3aad515fa139fa9ad4ddc9b3 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sat, 11 Jul 2026 17:15:34 +0200 Subject: [PATCH] =?UTF-8?q?fix(diagnostic):=20no-store=20fuer=20index.html?= =?UTF-8?q?=20=E2=80=94=20Browser=20servierte=20alte=20Version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Die /-Response hatte keinen Cache-Control-Header. Der Browser cachte das grosse Single-HTML-Dashboard heuristisch und servierte trotz (soft) Reload die alte Inline-JS/CSS — neue Features (Projekte-verstecken-Button, Auge, Token-Ersparnis-Card) tauchten erst nach Hard-Reload auf. Jetzt no-store + no-cache, so dass jeder Load die frische Version bekommt. Co-Authored-By: Claude Opus 4.8 --- diagnostic/server.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/diagnostic/server.js b/diagnostic/server.js index 71d5009..2eed569 100644 --- a/diagnostic/server.js +++ b/diagnostic/server.js @@ -1602,7 +1602,16 @@ const htmlPath = path.join(__dirname, "index.html"); const server = http.createServer((req, res) => { if (req.url === "/" || req.url === "/index.html") { - res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" }); + // no-store: das Dashboard ist eine Single-HTML-App die bei jedem Deploy + // neue Inline-JS/CSS bekommt. Ohne Cache-Header servierte der Browser die + // alte Version trotz Reload (neue Features tauchten erst nach Hard-Reload + // auf) — genau das Symptom „ich seh den Button nicht". + res.writeHead(200, { + "Content-Type": "text/html; charset=utf-8", + "Cache-Control": "no-store, no-cache, must-revalidate", + "Pragma": "no-cache", + "Expires": "0", + }); res.end(fs.readFileSync(htmlPath, "utf-8")); } else if (req.url === "/api/state") { res.writeHead(200, { "Content-Type": "application/json" });