Filipe sah die neue Kachel nicht, obwohl sie live war. Ursache gemessen, nicht vermutet: Node liefert : Cache-Control: no-cache (richtig) Cloudflare macht: Cache-Control: max-age=14400 (ueberschreibt es) cf-cache-status: REVALIDATED, Server: cloudflare Cloudflares voreingestellte Browser-Cache-Zeit von vier Stunden setzt sich ueber das no-cache des Servers hinweg -- aber NUR bei JS und CSS. HTML kommt mit DYNAMIC und no-cache immer frisch durch (geprueft an /creator.html und /workspace/). Genau deshalb genuegt ein Stempel in der HTML: neue Seite -> neue Adresse -> Cloudflare kennt sie nicht -> frische Datei. Keine Cloudflare-Einstellung noetig, nichts, worauf ich warten muss. tools/workspace-stempel.mjs setzt den Stempel auf alle 71 Verweise in 13 Dateien. Der Lauf ist wiederholbar: ein vorhandener Stempel wird ersetzt, nicht angehaengt (geprueft). Gehoert ab jetzt vor jeden Deploy, der JS oder CSS im Workspace anfasst. Ich verlasse mich damit nicht mehr aufs Erinnern -- das war der eigentliche Fehler. Co-Authored-By: Claude Opus 5 <[email protected]>
94 lines
3.6 KiB
HTML
94 lines
3.6 KiB
HTML
<!doctype html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
|
<title>Personen & Zugänge · Creator Workspace</title>
|
|
<meta name="robots" content="noindex, nofollow" />
|
|
<meta name="theme-color" content="#05070d" />
|
|
<link rel="icon" href="assets/img/favicon.png" />
|
|
<link rel="stylesheet" href="assets/css/gate.css?v=202608281303" />
|
|
<link rel="stylesheet" href="assets/css/start.css?v=202608281303" />
|
|
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202608281303" />
|
|
<link rel="stylesheet" href="assets/css/personen.css?v=202608281303" />
|
|
</head>
|
|
|
|
<body class="start">
|
|
|
|
<header class="kopfleiste">
|
|
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
|
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
|
</svg>
|
|
<span class="zurueck-knopf__text">Zurück</span>
|
|
</button>
|
|
<p class="marke"><a class="zurueck" href="start.html">Creator Workspace</a> · Personen</p>
|
|
<div class="kopfleiste__rechts">
|
|
<span class="wer" id="wer">…</span>
|
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
|
</div>
|
|
</header>
|
|
|
|
<main class="inhalt inhalt--breit">
|
|
|
|
<section class="kopf-zeile">
|
|
<div>
|
|
<p class="marke">Zugänge</p>
|
|
<h1 class="titel">Personen & Zugangscodes</h1>
|
|
</div>
|
|
<button type="button" class="knopf knopf--klein" id="neu-oeffnen">Person anlegen</button>
|
|
</section>
|
|
|
|
<form class="neu" id="neu" hidden>
|
|
<div class="neu__raster">
|
|
<div>
|
|
<label class="feld-schild" for="f-name">Name</label>
|
|
<input id="f-name" name="name" maxlength="60" placeholder="z. B. Luna" required />
|
|
</div>
|
|
<div>
|
|
<label class="feld-schild" for="f-rolle">Rolle</label>
|
|
<select id="f-rolle" name="rolle">
|
|
<option value="creator" selected>Creator</option>
|
|
<option value="scout">Scout</option>
|
|
<option value="admin">DogFather</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<p class="fehler" id="neu-fehler" role="alert" aria-live="polite"></p>
|
|
<div class="neu__knoepfe">
|
|
<button type="submit" class="knopf knopf--klein" id="neu-speichern">Anlegen</button>
|
|
<button type="button" class="abmelden" id="neu-abbrechen">Abbrechen</button>
|
|
</div>
|
|
</form>
|
|
|
|
<!-- Anzeige des frisch erzeugten Codes. Bewusst auffällig und mit klarem
|
|
Hinweis, dass er nur jetzt zu sehen ist. -->
|
|
<div class="code-kasten" id="code-kasten" hidden role="status" aria-live="polite">
|
|
<p class="code-kasten__schild">Zugangscode für <span id="code-name"></span></p>
|
|
<p class="code-kasten__code" id="code-wert"></p>
|
|
<p class="code-kasten__hinweis">
|
|
Dieser Code wird <strong>nur jetzt</strong> angezeigt und ist danach nicht mehr
|
|
abrufbar. Sicher weitergeben und in Bitwarden ablegen.
|
|
</p>
|
|
<div class="neu__knoepfe">
|
|
<button type="button" class="knopf knopf--klein" id="code-kopieren">Kopieren</button>
|
|
<button type="button" class="abmelden" id="code-schliessen">Verstanden, schließen</button>
|
|
</div>
|
|
</div>
|
|
|
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
|
|
|
<div id="liste" aria-busy="true"><p class="leise">Personen werden geladen …</p></div>
|
|
|
|
<section class="protokoll-block">
|
|
<p class="feldschild">Letzte Ereignisse</p>
|
|
<div id="protokoll"><p class="leise">…</p></div>
|
|
</section>
|
|
|
|
</main>
|
|
|
|
<script src="assets/js/kopf.js?v=202608281303" defer></script>
|
|
<script src="assets/js/personen.js?v=202608281303" defer></script>
|
|
</body>
|
|
</html>
|