Files
dogfather-universe/workspace/steckbrief.html
T
DogFatherGitandClaude Opus 5 e12392a289 Die Kachelfarben kommen jetzt WIRKLICH auf dem Bildschirm an
Filipe: "ich raste aus im ernst, was verstehst du nicht darunter wenn
ich sage das alle kacheln eine andere farbe haben sollen ich seh
immer wieder sehr viele die einfach komplett die gleiche farbe haben."

ER HATTE RECHT, UND MEINE PRUEFUNG WAR TROTZDEM GRUEN.
Der Grund war ein Messfehler, und zwar meiner: pruef-kachelfarben las
`--ton` aus start.css -- die ROHFARBE. Die lag zwischen allen 31
Kacheln weit auseinander (0,0978 in OKLab). Nur steht sie so nie auf
dem Bildschirm.

GEMESSEN an echten Bildpunkten (neu: tools/kachel-echtfarbe.mjs):
  Rohfarben:              0,0978 auseinander
  Auf dem Bildschirm:     0,0141
  Es kamen an:            14,4 Prozent
  Fuer ein Auge gleich:   ACHT Paare

Drei Stellen haben die Farbe geschluckt, alle in .kachel:
  1. Eine Wolke mit 16 Prozent -- in immer DEMSELBEN Blau, auf jeder
     Kachel. Der staerkste Gleichmacher der ganzen Wand. Sie traegt
     jetzt den Ton der Kachel.
  2. Die Vignette legte bis zu 55 Prozent Dunkelblau darueber.
  3. Der Grund trug den Ton zu 24 Prozent und ging ab 58 Prozent in
     fast reines Schwarz. Zwei Drittel jeder Kachel waren damit
     dieselbe Farbe, egal welcher Ton darueber stand.

Danach: 51,1 Prozent kamen an, NULL ununterscheidbare Paare.

UND DANN HAETTE ICH EINEN FEHLER GEGEN EINEN ANDEREN GETAUSCHT.
Gemessen an jedem einzelnen Kacheltext: VORHER war 1 von 31 unter
4,5:1, DANACH 27 von 31. Also genau das, was Filipe schon zweimal
gemeldet hat ("man bekommt fast nichts gelesen"). Kein Messwert hat
es angezeigt -- pruef-buehne nimmt Stichproben und traf die
Kacheltexte nicht.

Behoben mit einem Lesesaum: ein dunkler Verlauf VON UNTEN, der genau
den Streifen abdunkelt, auf dem gelesen wird, und die oberen zwei
Drittel in Ruhe laesst. Dasselbe Mittel, mit dem jede Bildunterschrift
auf einem Foto lesbar gemacht wird.

  Texte unter 4,5:1:   1 -> 27 -> 0
  Farbe kommt an:      14,4 % -> 51,1 % -> 36,5 %

VERTRAULICH MELDEN IST JETZT KNALLROT.
Filipe: "nicht die kachel draussen soll rot sein sondern die kachel
vertraulich melden nur die soll knall rot sein!!!" Ich hatte screen5
und screen6 vertauscht. Ringtausch ohne neue Farbe:
  Vertraulich melden  28 -> 38  (#ff1a1a, knallrot)
  Draussen            38 -> 39  (die Farbe, die Regeln & Hilfe hatte)
  Regeln & Hilfe      39 -> 28  (das frei gewordene Gruen)

NEU, UND DER EIGENTLICHE LERNEFFEKT:
server/helfer-kachel-echtfarbe.mjs misst beides in EINER Messung --
Farbunterschied UND Lesbarkeit. Wer sie trennt, verbessert das eine
und verliert das andere; genau das ist heute passiert. Benutzt von
der Pruefung und vom Werkzeug, damit es nur eine Fassung gibt.

pruef-kachelfarben 18/0 (war 13), davon fuenf am echten Bildschirm:
  - kein Paar sieht auf dem Bildschirm gleich aus (0,0357)
  - mindestens ein Drittel der Rohfarbe kommt an (36,5 %)
  - jeder Kacheltext erreicht 4,5:1 (schlechtester: 4,80:1)
Mit drittem Ausgang: kein Browser heisst "konnte nicht nachsehen",
nicht "in Ordnung".

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-22 10:26:49 +02:00

165 lines
7.6 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>Mein Steckbrief · 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=202609221026" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221026" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609221026" />
<link rel="stylesheet" href="assets/css/start.css?v=202609221026" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609221026" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609221026" />
<link rel="stylesheet" href="assets/css/module.css?v=202609221026" />
<!-- 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=202609221026" />
</head>
<body class="start">
<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&nbsp;Workspace</a> · Mein&nbsp;Steckbrief</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">
<section class="kopf-zeile">
<div>
<p class="marke">Über mich</p>
<h1 class="titel">Mein Steckbrief</h1>
<p class="unterzeile">
Das hier gehört dir. Dein Bild steht danach in der Kopfleiste, in der
Personenliste und überall dort, wo dein Name auftaucht.
</p>
</div>
</section>
<!-- Der eigene Steckbrief. Steht GANZ OBEN und über allem anderen: Er
gehört jedem im Workspace, nicht nur Creatorn – ein Scout, ein
Manager und DogFather haben ihn genauso. Die Creator-Akte darunter
ist etwas anderes (die führen die Betreuer). -->
<section class="steckbrief" id="steckbrief" hidden>
<div class="steckbrief__kopf">
<div class="steckbrief__bildfeld">
<span class="steckbrief__bild" id="sb-bild" aria-hidden="true"></span>
<div class="steckbrief__bildknoepfe">
<label class="schritt" for="sb-datei">Bild wählen</label>
<input type="file" id="sb-datei" accept="image/jpeg,image/png,image/webp" hidden />
<button type="button" class="schritt" id="sb-bild-weg" hidden>entfernen</button>
</div>
</div>
<div class="steckbrief__text">
<p class="feldschild">Mein Profil</p>
<h2 class="steckbrief__name" id="sb-name">…</h2>
<p class="steckbrief__rolle" id="sb-rolle"></p>
<label class="feld-schild" for="sb-ueber">Ein Satz über dich</label>
<textarea id="sb-ueber" rows="2" maxlength="400"
placeholder="z. B. Ich streame Gaming und Just Chatting, meistens abends."></textarea>
<p class="feldschild steckbrief__schild">Meine Kanäle</p>
<!-- Bewusst nur der öffentliche Name, kein Login: siehe die
Begründung im Kopf von server/workspace-steckbrief.js. -->
<div class="steckbrief__kanaele" id="sb-kanaele"></div>
<p class="fehler" id="sb-fehler" role="alert" aria-live="polite"></p>
<div class="steckbrief__fuss">
<button type="button" class="knopf knopf--klein" id="sb-speichern">Profil speichern</button>
<span class="steckbrief__stand" id="sb-stand" role="status" aria-live="polite"></span>
</div>
</div>
</div>
</section>
<!-- DAS TEAM. Wunsch vom 01.09.2026: "ich will, dass wir Manager,
Scouts, DogFather auch die Fotos, Namen und so alles sehen, alles
was die in ihrem Profil eintragen."
Bis dahin war der Steckbrief eine Einbahnstraße: Jeder pflegte
seinen, und niemand bekam ihn je zu Gesicht. Die Schnittstelle
dafür lag fertig da (GET /workspace/api/steckbrief) und wurde von
keiner einzigen Seite aufgerufen.
Wer wen sieht, entscheidet weiterhin der Server. -->
<!-- EIGENE KLASSEN, nicht die vorhandenen .block__* : Die stehen in
automation.css und wissen.css, und diese Seite lädt beide nicht.
Genau so sind hier schon zweimal Stile ins Leere gelaufen -- der
Aufbau sah richtig aus, auf dem Bildschirm stand nacktes HTML.
Alles zu .team-* steht in start.css, die jede Seite lädt. -->
<section class="team-block" id="team-block" hidden>
<div class="team-block__kopf">
<div>
<p class="feldschild">Das Team</p>
<!-- „Wer hier dabei ist" statt „Wer hier mitarbeitet" (19.09.2026).
Seit die Community einen Steckbrief hat, liest diesen Titel
auch jemand, der NICHT mitarbeitet — er schaut zu. Das Wort
hätte ihm gesagt, dass er hier eigentlich nicht gemeint ist. -->
<h2 class="team-block__titel">Wer hier dabei ist</h2>
</div>
<span class="team-block__zahl" id="team-zahl"></span>
</div>
<p class="team-block__text" id="team-text"></p>
<div class="team-gitter" id="team"></div>
</section>
<!-- ==== WAS IST ÜBER MICH GESPEICHERT? (15.09.2026) ==============
Art. 15 DSGVO. Kein Antrag, kein Formular, kein Warten – ein
Knopf. Er steht auf den beiden Seiten, die einem Menschen selbst
gehören: dem Steckbrief und den Treff-Regeln. Die Community hat
keinen Steckbrief; ohne die zweite Stelle hätte ausgerechnet die
Gruppe mit den wenigsten Rechten auch diesen nicht. -->
<section class="meine-daten">
<div class="meine-daten__kopf">
<h2 class="meine-daten__titel">Was ist über mich gespeichert?</h2>
<button type="button" class="knopf-still" id="auskunft-knopf">Datei herunterladen</button>
</div>
<p class="meine-daten__satz">
Alles, was dieser Workspace über dich weiß, als Datei zum Mitnehmen.
Zugangsgeheimnisse sind nicht dabei, und wo andere Menschen vorkommen,
stehen sie nicht mit Namen darin – ihre Daten gehören ihnen.
</p>
<p class="leise" id="auskunft-stand" hidden></p>
</section>
</main>
<script src="assets/js/meldung.js?v=202609221026" defer></script>
<script src="assets/js/hochladen.js?v=202609221026" defer></script>
<script src="assets/js/nachfrage.js?v=202609221026" defer></script>
<script src="assets/js/wahl.js?v=202609221026" defer></script>
<script src="assets/js/bereiche.js?v=202609221026" defer></script>
<script src="assets/js/kopf.js?v=202609221026" defer></script>
<script src="assets/js/auskunft.js?v=202609221026" defer></script>
<script src="assets/js/glocke.js?v=202609221026" defer></script>
<script src="assets/js/steckbrief.js?v=202609221026" defer></script>
</body>
</html>