Weiter durch die rote Liste. Drei der vier Befunde zeigten auf
gesunden Code; die Pruefungen selbst waren seit einem Umbau nicht
nachgezogen worden.
pruef-schritt (2 rot -> 71 gruen statt 47)
Meldete "1 von 6 Kategorien". Die Karte geht seit dem 01.10.2026
gefiltert auf ("zugetragen"), Bloecke ohne solche Punkte werden gar
nicht gezeichnet. Die Pruefung zaehlte danach alle. Schlimmer: Weil
dann kein Block mehr zugeklappt war, lief der Klick auf einen
zugeklappten 30 Sekunden in die Frist und riss den Lauf mit -- 24 von
71 Pruefungen liefen nie. Jetzt wird erst die Vorgabe geprueft (sie
ist eine Zusage), dann auf "Alle" gestellt.
pruef-glocke (1 rot -> 34 gruen)
Meldete "auf der Anmeldeseite steht der Knopf". Gemessen landete sie
auf start.html: Dieselbe Seite war eine Zeile zuvor angemeldet durch
zwanzig Arbeitsseiten gelaufen, und angemeldet fuehrt /workspace/
nicht zur Wand. Jetzt eigener Kontext ohne Keks -- und davor die
Zeile, dass die Wand wirklich erreicht wurde.
pruef-zeichen (1 rot -> 8 gruen)
Meldete content: "·" als Kodierungstruemmer. Die Bytes sind C2 B7,
also korrektes UTF-8; der Mittelpunkt ist ein begruendeter Trennpunkt
(seit 03.10.). Die Regel stammt aus einer Zeit, in der sie selbst
festhielt: "KEINE einzige benutzt ein Zeichen aus diesem Block."
Jetzt eine benannte Ausnahme MIT Veraltungsschutz: Jedes Zeichen
darin muss wirklich vorkommen, sonst wird die Ausnahme rot.
pruef-tempo-workspace (1 rot -> 9 gruen) -- DER ECHTE BEFUND
uebersicht.html 959 KB, bereich.html?b=live 1094 KB bei einer Grenze
von 900. Die Pruefung sagt jetzt auch, WORAN es liegt, und die
Antwort war eindeutig: ZWEI Buehnenbilder auf einer Seite, die eines
zeigt (281 KB studio + 262 KB portal).
Ursache: start.css traegt an body.start::before einen Rueckfall
(studio), und kopf.js setzt `data-buehne` erst, wenn die Seite steht.
Bis dahin ist der Rueckfall geholt -- auf 43 von 45 Seiten.
Jetzt steht die Szene fest im <body>, erzeugt aus bereiche.js
(tools/buehne-festschreiben.mjs, 20 Seiten). bereich.html bedient
fuenf Bretter und kann das nicht; sie bekommt ein kleines Skript
gleich hinter <body>, das die Szene aus `?b=` setzt, bevor gezeichnet
wird. Gemessen: 1094 -> 879 KB, und die Grenze haelt wieder.
DIE ZUORDNUNG STEHT DAMIT AN ZWEI STELLEN. Das ist nur vertretbar,
weil sie nicht auseinanderlaufen kann: pruef-buehnen-fest.mjs (neu,
13 Pruefungen) haelt HTML gegen bereiche.js, prueft die Lage des
Skripts und dass jede genannte Szene eine Regel hat.
Dabei gefunden und berichtigt -- zweimal an mir selbst: Der erste
Entwurf verglich Szenen mit Dateinamen und meldete teamlage.html
("eingang") als Fehler; die Szene gibt es, ihre Regel zeigt nur auf
ein crew-Bild. Und der Lage-Anker suchte `data-buehne`, das Skript
schreibt `dataset.buehne` -- indexOf gab -1, die Rechnung wurde
negativ und meldete "-2276 Zeichen dahinter".
Gegenproben gefahren: Szene verschoben -> rot mit Abstand; Ausnahme
verwaist -> rot; erfundene Szene -> erkannt.
Dazu gruen: css-klassen, workspace-seiten, neue-seiten, haus-trennung,
kopfleiste-farbe.
Co-Authored-By: Claude Opus 5 <[email protected]>
165 lines
7.2 KiB
HTML
165 lines
7.2 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>Dashboard · Spicy & Dogi</title>
|
||
<meta name="robots" content="noindex, nofollow" />
|
||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
||
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
||
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||
eine Flaeche sind statt zweier. -->
|
||
<meta name="theme-color" content="#06090f" />
|
||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610071305" />
|
||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610071305" />
|
||
<link rel="stylesheet" href="assets/css/gate.css?v=202610071305" />
|
||
<link rel="stylesheet" href="assets/css/start.css?v=202610071305" />
|
||
<!-- Formular- und Dialogstile: seit dem 07.09.2026 steht hier der
|
||
Dialog "Creator anlegen". -->
|
||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610071305" />
|
||
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202610071305" />
|
||
<link rel="stylesheet" href="assets/css/module.css?v=202610071305" />
|
||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||
<link rel="stylesheet" href="assets/css/haus.css?v=202610071305" />
|
||
</head>
|
||
|
||
<body class="start" data-buehne="showbuehne">
|
||
|
||
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
|
||
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
|
||
Pseudo-Elements -- body hat nur ::before und ::after. -->
|
||
<div class="schleier" aria-hidden="true"></div>
|
||
|
||
<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"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Dashboard</span></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">Alles zentral</p>
|
||
<h1 class="titel" id="titel">Dashboard</h1>
|
||
<p class="unterzeile" id="unterzeile">
|
||
Eine Karte je Creator – mit einem Blick sehen, wo es hakt und wo es läuft.
|
||
</p>
|
||
</div>
|
||
<!-- Der Knopf steht HIER und nicht in der Personenverwaltung
|
||
(07.09.2026). Ein Manager kommt dort gar nicht hinein, und er
|
||
soll es auch nicht -- dahinter liegen Rollen, Codes, Sperren und
|
||
das Protokoll. Hier dagegen sieht er ohnehin seine Creator; der
|
||
neue erscheint eine Zeile weiter unten. Das Skript blendet den
|
||
Knopf für Scouts und Creator aus, der Server lässt sie ohnehin
|
||
nicht durch. -->
|
||
<button type="button" class="knopf knopf--klein" id="creator-neu" hidden>Creator anlegen</button>
|
||
</section>
|
||
|
||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||
|
||
<!-- Creator anlegen. Derselbe Dialog-Aufbau wie überall sonst. -->
|
||
<dialog class="dialog" id="creator-dialog">
|
||
<form method="dialog" class="neu neu--blank" id="creator-form">
|
||
<h2 class="dialog__titel">Creator anlegen</h2>
|
||
<p class="dialog__unter">
|
||
Der Zugangscode erscheint genau einmal – danach ist er weg und
|
||
kann nur neu gesetzt werden.
|
||
</p>
|
||
|
||
<div class="neu__zeile">
|
||
<label class="feld-schild" for="cn-name">Name</label>
|
||
<input id="cn-name" maxlength="60" required autocomplete="off" />
|
||
</div>
|
||
|
||
<div class="neu__zeile" id="cn-scout-zeile" hidden>
|
||
<label class="feld-schild" for="cn-scout">Betreuung</label>
|
||
<select id="cn-scout"></select>
|
||
<p class="feld-hinweis">
|
||
Ohne Auswahl betreust du ihn selbst. Zur Auswahl stehen nur
|
||
deine eigenen Scouts.
|
||
</p>
|
||
</div>
|
||
|
||
<!-- Der Code. Steht erst nach dem Anlegen da und wird nie
|
||
nachgeladen -- die Seite ist die einzige Stelle, an der er je
|
||
zu sehen ist. -->
|
||
<div class="neu__zeile" id="cn-code-zeile" hidden>
|
||
<p class="feld-schild">Zugangscode für <span id="cn-code-name"></span></p>
|
||
<p class="code-anzeige" id="cn-code"></p>
|
||
<p class="feld-hinweis">
|
||
Jetzt weitergeben. Nach dem Schließen ist er nicht mehr abrufbar.
|
||
</p>
|
||
</div>
|
||
|
||
<p class="fehler" id="cn-fehler" role="alert" aria-live="polite"></p>
|
||
|
||
<div class="dialog__knoepfe">
|
||
<button type="submit" class="knopf knopf--klein" id="cn-speichern">Anlegen</button>
|
||
<button type="button" class="abmelden" id="cn-zu">Schließen</button>
|
||
</div>
|
||
</form>
|
||
</dialog>
|
||
|
||
<!-- FRÜHWARNUNG (06.09.2026).
|
||
|
||
Steht GANZ OBEN, noch vor den Summen. Die Summen beantworten "wie
|
||
steht es insgesamt", die Karten "wie steht es bei jedem" – aber
|
||
die Frage, mit der ein Betreuer morgens ankommt, ist eine dritte:
|
||
"wo muss ich HEUTE hin?" Sie stand bis jetzt nirgends.
|
||
|
||
Bewusst OHNE Punktzahl. Ein Wert wie "Abwanderungsrisiko 73"
|
||
klingt nach Wissenschaft und ist eine Behauptung: Man kann ihn
|
||
nicht prüfen, nicht widersprechen und nicht erklären. Hier stehen
|
||
stattdessen die einzelnen Beobachtungen im Klartext, jede mit
|
||
ihrem Beleg – dann entscheidet ein Mensch.
|
||
|
||
Ein Creator sieht diesen Block nie (der Server liefert ihm gar
|
||
keine Daten). Zu lesen, dass ein System einen für gefährdet hält,
|
||
ist keine Mitteilung an die betroffene Person. -->
|
||
<section class="warnblock" id="fruehwarnung" hidden aria-labelledby="warn-titel">
|
||
<div class="klapp-kopf">
|
||
<h2 class="feldschild" id="warn-titel">Wo ich diese Woche nachfassen würde</h2>
|
||
</div>
|
||
<div class="warnliste" id="warnliste"></div>
|
||
</section>
|
||
|
||
<!-- Summen über alle sichtbaren Creator. Steht oben, weil die Frage
|
||
"wie steht es insgesamt" vor der Frage "bei wem" kommt. -->
|
||
<section class="summen" id="summen" hidden></section>
|
||
|
||
<div id="liste" aria-busy="true"><p class="leise">Übersicht wird geladen …</p></div>
|
||
|
||
<p class="stand" id="stand" hidden></p>
|
||
|
||
</main>
|
||
|
||
<script src="assets/js/meldung.js?v=202610071305" defer></script>
|
||
<script src="assets/js/nachfrage.js?v=202610071305" defer></script>
|
||
|
||
|
||
<script src="assets/js/bereiche.js?v=202610071305" defer></script>
|
||
|
||
<script src="assets/js/wahl.js?v=202610071305" defer></script>
|
||
<script src="assets/js/installieren.js?v=202610071305" defer></script>
|
||
<script src="assets/js/kopf.js?v=202610071305" defer></script>
|
||
<script src="assets/js/glocke.js?v=202610071305" defer></script>
|
||
<script src="assets/js/uebersicht.js?v=202610071305" defer></script>
|
||
</body>
|
||
</html>
|