Commit Graph
169 Commits
Author SHA1 Message Date
DogFatherGitandClaude Opus 5 74ae4c292e Uhr: Stundenverlauf abgeflacht, Lichtkante auf die richtige Achse gedreht
Filipe: "kontrollier bitte nur noch einmal ab dass keine striche krum
sind, kein runder kreis der schief verlaeuft oder so, perfektionier die
stunden noch bissl auch bitte."

Nachgemessen statt nachgesehen. Drei Funde, zwei davon echt.

1. DIE LICHTKANTE LAG AUF DER FALSCHEN ACHSE.

   Das SVG `.uhr__ring` traegt `rotate(-90deg)`, damit die Ringe oben
   beginnen. Diese Drehung gilt auch fuer einen `translate` darin --
   ein `translateY` erscheint auf dem Bildschirm deshalb als "links".
   Gemessen an den Kaesten stand bei allen vier Lagen dy = 0: Kante
   nach links, Schlagschatten nach rechts, waehrend die Kachel selbst
   ihren Schatten mit `0px 14px` nach unten wirft. Zwei Lichter in
   einem Koerper.

   Sichtbar war es als heller Strich, der bei den oberen Balken LAENGS
   durchlief statt auf der Oberkante zu sitzen -- der "Kratzer", der an
   den Stunden schon zweimal gestoert hat. Die Kante war vorher
   verschmaelert worden; das hat ihn gedaempft, aber nicht beseitigt,
   weil die Ursache die Richtung war und nicht die Breite.

   Jetzt translateX. Nachgemessen: dx = 0, Kante nach oben, Schatten
   nach unten -- dieselbe Lichtrichtung wie der Kachelschatten. Die
   hellste Stelle im Querschnitt liegt bei r = 34,1; rechnerisch soll
   sie bei 31,5 + 2,6 = 34,1 liegen.

2. DIE ZWOELF STUNDENBALKEN WAREN UNTERSCHIEDLICH HELL.

   Ein Verlauf laeuft diagonal ueber die ganze Zeichnung. Auf einem
   durchgehenden Bogen ist das Material; auf zwoelf getrennten Balken
   bekommt jeder eine andere Farbe. Gemessen, beide Faehrten im selben
   Lauf:

     alt   75 bis 145, Faktor 1,93
     neu  114 bis 147, Faktor 1,29

   Der tiefe Stopp #a81f2c traf die Plaetze 0 bis 3 -- die Stunden 1
   bis 4, also genau die Balken, die als erste gezeichnet werden. Ein
   75er neben einem 145er sieht nicht nach Licht aus, sondern nach
   Ausfall. Minute und Sekunde behalten ihren vollen Verlauf: Bei 60
   Gliedern liegen die Nachbarn dicht genug, dass der Wechsel als
   Politur gelesen wird.

3. VIER TOTE BREITENREGELN, die 620 Zeilen spaeter ueberschrieben
   wurden (2,6/3/3,6 statt der gezeichneten 3,2/5/5,8). Sie haben
   nichts kaputtgemacht, aber sie haben mich beim Nachrechnen des
   Kantenversatzes in die Irre gefuehrt -- entfernt, mit Verweis auf
   die eine lebende Stelle. Dabei fiel auf, dass der Versatz der Stunde
   noch mit einer Kantenbreite von 0,9 rechnete, obwohl sie laengst
   0,6 ist: 2,05 statt 2,20.

NICHT KRUMM war der Rest, auch das gemessen: 9 runde Elemente, 0 Eier;
alle 15 Kreise der Uhr auf demselben Mittelpunkt; Kasten exakt
quadratisch; Umfaenge stimmen auf 0,01 Einheiten zum Muster. Die 30
gefundenen Drehungen sind samt und sonders gewollt (Chilis, Husky,
Wasserzeichen -8 Grad).

Geprueft: pruef-start-ansicht, pruef-css-klassen, pruef-buehne -- alle
gruen. Jede Messung mit Gegenprobe.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 03:42:00 +02:00
DogFatherGitandClaude Opus 5 6676998af8 Niemand sieht VanVan ausser DogFather -- plus vier Punkte vom Screen
--- DAS WICHTIGSTE ZUERST: die Verbergungsregel ---

Filipe, ausdruecklich und dringlich: "und noch gaaaaaanz wichtig keiner
soll vanvan sehen ausser ich, ueberall soll keiner vanvan sehen ausser
dogfather."

ES GAB DAVON NUR EINE HAELFTE. In der Personenliste wurde der zweite
Admin-Zugang fuer Spicy Media ausgeblendet (Wunsch vom 31.08.).
Ueberall sonst -- Chat, Kalender, Aufgaben, Dateien, Zentrale -- war er
sichtbar. `sichtbarePersonenIds` hat ihn sogar ausdruecklich JEDER
Rolle gezeigt, weil sie alle Admins einsammelt.

WORAN DIE BEIDEN AUSEINANDERGEHALTEN WERDEN: In der Datenbank tragen
beide die Rolle `admin`, es gibt kein unterscheidendes Feld. Der
Unterschied, den es wirklich gibt, ist das Alter -- DogFather ist der
erste Zugang. Also: der Admin mit der kleinsten Nummer ist DogFather,
alle weiteren sind verborgen. Drei Ausnahmen: DogFather sieht alle,
ein verborgener Zugang sieht sich selbst, und bei nur einem Admin gibt
es nichts zu verbergen.

WARUM AN EINER STELLE UND NICHT IN DEN ABFRAGEN: Allein
workspace-personen.js hat 23 Abfragen auf `personen`. Eine Regel, die
man 23-mal wiederholt, ist 23 Gelegenheiten, sie zu vergessen -- und
beim Vergessen faellt niemand auf die Nase, sondern jemand SIEHT etwas.
Die Regel sitzt deshalb in `verborgeneIds()` und wird ueber einen
MANTEL um die sechs Listenfunktionen gelegt: Diese haben zusammen
achtzehn Rueckgabewege; sie einzeln zu flicken waeren achtzehn
Gelegenheiten, einen zu uebersehen. Die ungefilterten Fassungen
(`...Roh`) werden nicht mehr exportiert -- niemand kann sie
versehentlich benutzen.

`null` HIESS BISHER "SIEHT ALLES". Sobald es etwas zu verbergen gibt,
gilt das nicht mehr: Die Liste wird ausgeschrieben. Das ist strenger,
nicht lockerer.

NEUE PRUEFUNG server/pruef-verborgen.mjs -- sechs Personen (darunter
ein zweiter Admin), fuenf Schnittstellen, jede Rolle einzeln. Sie hat
beim ersten Lauf sofort ein Loch gefunden, das ich sonst nicht bemerkt
haette: Die ZENTRALE holt sich das Haus selbst und ging an allen
Listenfunktionen vorbei -- Spicy Media sah VanVan dort als Segment im
Team-Ring. Und beim Korrigieren der Pruefpfade fiel ein zweites auf:
`darfEintragen` im Kalender liess die Leitung JEDEN eintragen, bevor
ueberhaupt eine Liste befragt wurde. Eine Sichtbarkeitsregel, die nur
beim Lesen gilt und nicht beim Schreiben, hat ein Loch in der Mitte.

Die Pruefung hat eine Gegenprobe: Ein Manager MUSS DogFather in
derselben Liste sehen -- sonst waere "sieht VanVan nicht" auch dann
gruen, wenn die Listen leer zurueckkaemen.

--- screen1 Punkt 1: Silber mit Babyblau ---

"ich will dass diese farbe gemischt wird mit babyblau."

#c7dcf4 statt #d8e0ec -- dieselbe Helligkeit, mit Blaurichtung.
Nachgerechnet bleibt der Abstand zur naechsten Rolle bei 0,1790, immer
noch weiter als das frueher benutzte Babyblau (0,1349). Gemischt ist es
ausserdem SICHTBAR: Die Schiene laeuft von Silber nach Babyblau, und
der Glanz traegt beide Toene. Eine Mischung, die man nur im Hexwert
findet, ist keine.

--- screen1 Punkt 2: das Wasserzeichen ---

"soll viel groesser sein und nicht so abgecuttet sondern gut zu sehen
sein."

NACHGEMESSEN war es auf der Dashboard-Kachel zu 50 Prozent
abgeschnitten, und zwar auf DREI Seiten: 36 px ueber dem oberen Rand,
44 rechts, 60 unten -- 220 px Zeichen auf einer 152 px hohen Kachel.

UND ES GAB ZUM DRITTEN MAL DIESE WOCHE EINE DOPPELREGEL: 3600 Zeilen
unter der sorgfaeltig begruendeten Fassung (156 px bei 0,14) stand eine
zweite (118 px bei 0,085) mit derselben Spezifitaet. Sie gewann, und
die Begruendung oben war wirkungslos. Am 08.09. hatte ich beim
Wasserzeichen schon einmal genau so eine Doppelung gefunden -- und
diese hier uebersehen.

Jetzt eine Fassung, und die Groesse haengt an der KACHELHOEHE: Ein um
8 Grad gedrehtes Quadrat der Seite S braucht S x 1,129 Platz, also
`min(132px, 100% - 30px)`. Nachgemessen 100 Prozent sichtbar statt 50,
bei 0,14 statt 0,085 -- die sichtbare Flaeche hat sich verdoppelt.

--- screen1 Punkt 3: die Personenliste in einer Kachel ---

Die fuenf Rollengruppen standen als fuenf lose Abschnitte frei auf dem
Hintergrundbild. Es ist aber EINE Liste mit fuenf Abschnitten. Jetzt
eine Sammelkachel aus der Modulliste, mit dunklen Fugen statt Luft --
und dunkler als die Karten darin, wie eine Vitrine.

--- screen1 Punkt 4: "Womit meldest du dich an?" ---

Der einzige Satz auf der Anmeldeseite, der eine FRAGE stellt, stand als
graue Feldbeschriftung da. Jetzt gebuerstetes Metall, ein Anschlag aus
drei Kerben in Rot und Babyblau und eine auslaufende Linie -- dieselbe
Sprache wie die Typenschilder im Workspace. Rueckfall vollwertig: Faellt
`background-clip: text` aus, steht dort heller Text.

Geprueft: pruef-verborgen (neu), pruef-rollen, pruef-start-ansicht,
pruef-css-klassen, pruef-workspace-seiten, pruef-buehne, pruef-handy,
pruef-chat, pruef-kalender -- alle in Ordnung.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 03:18:01 +02:00
DogFatherGitandClaude Opus 5 1ad22b55c4 Ring so gross wie die Uhr, Stunden geschaerft, Report-Karten gerade, Schutz wird Magenta
--- screen1: Glocke nach rechts, Ring so gross wie die Uhr ---

"dieser button links vom kreis soll rechts davon sein und der kreis
soll die gleiche groesse wie die uhr haben."

Die KAESTEN waren schon exakt gleich gross (248 x 248, seit gestern aus
einer Variablen). Der gezeichnete Ring aber nicht: Sein aeusserer Bogen
lag bei Radius 128 von 150, plus halbe Strichbreite also bei 132,5 --
88 Prozent des Kastens, gerendert 219 statt 248 px. Die Uhr daneben
fuellt ihren Kasten ganz aus, ihr Leuchtkranz ragt sogar 7 px darueber
hinaus. Zwei gleich grosse Kaesten mit ungleich grossem Inhalt sehen
ungleich gross aus.

Jetzt 145 statt 128 (aussen) und 120 statt 106 (die Segmente) --
dasselbe Verhaeltnis zueinander, nur bis an den Rand. 145 + 4,5 =
149,5 von 150: ein halber Pixel Luft, damit die runde Kappe nicht
abgeschnitten wird.

Die Glocke steht jetzt rechts vom Ring. Damit liegen beide Knoepfe
INNEN, zwischen den Instrumenten und dem Text -- vorher sassen sie an
den beiden Aussenkanten, so weit voneinander entfernt wie moeglich,
obwohl sie dasselbe tun: einstellen, was einen erreicht.

--- screen2: die Stunden ---

"die stunden muss noch perfektionnieren."

DIE LICHTKANTE WAR EIN KRATZER. Sie stand auf 50 Prozent Weiss bei 0,9
Breite. Auf den schmalen Sekunden- und Minutenbahnen ist das eine
Kante; auf dem 5,8 px breiten Stundenbalken war es ein zweiter,
weisser Balken auf dem roten. Der Grund ist Verhaeltnis UND Farbe:
0,9 von 3,2 sind 28 Prozent, 0,9 von 5,8 nur 16 -- aber die Stunde ist
die einzige deckende, kraeftig gefaerbte Bahn, und auf Rot faellt
dasselbe Weiss doppelt so stark auf wie auf Silber. Jetzt 22 Prozent
bei 0,6 Breite.

DER KOPF BLEIBT ROT. Er stand auf #ffd9dd, also fast weiss -- das
aktuelle Glied war zwar das hellste, hatte aber die Farbe seiner Bahn
verloren und sah aus wie ein Fremdkoerper zwischen den roten Balken.
Jetzt ein helles, deutliches Rot: Es hebt sich durch Helligkeit ab,
nicht durch eine andere Farbe.

--- screen3: die Report-Karten stehen gerade ---

"ich will dass alles passt, nicht bedeckt ist, schief steht oder zu
tief oder zu hoch."

NACHGEMESSEN, ALLE 17 KARTEN -- der Befund deckt sich genau mit dem,
was er beschreibt: Name und Zahl lagen 12 bis 28 px auf VERSCHIEDENEN
Hoehen, sie ueberlappten sich waagerecht (gemessener Abstand -183 bis
-524 px), und Karten in derselben Reihe waren verschieden hoch.

DIE URSACHE IST EINE ZEILE: `.kachel__zahl` steht `position: absolute`
bei top 13 / right 13. Auf der Startseite ist das richtig -- gleich
grosse Kacheln, einzeiliger Name. Hier bricht der Name um ("Community:
neue Eintraege"), die Karte waechst nach unten, die Zahl bleibt oben
kleben. Sie war ausserdem fuer die Hoehenrechnung unsichtbar, weshalb
es vorher schon eine `min-height` als Pflaster brauchte.

Jetzt ein echtes Raster: Name links (Zeile 1), Trend darunter, Zahl
rechts ueber beide Zeilen und mittig. `display: contents` auf dem
Wrapper -- so werden seine Kinder selbst zu Rasterfeldern, ohne dass am
HTML etwas geaendert werden muss und ohne dass die Startseite, die
dieselben Klassen benutzt, etwas davon mitbekommt.

Nachgemessen danach: 17 von 17 sauber -- nichts ragt heraus, nichts
ueberlappt, nichts abgeschnitten, kein Versatz ueber 5 px, und keine
Reihe mit ungleichen Hoehen.

--- screen4: Schutz & Regeln wird Magenta ---

"ich will dass die kategorie eine farbe bekommt die extrem krass
auffaellt. diese kategorie ist naemlich seeeehr wichtig."

MAGENTA, WEIL ES DAS EINZIGE IST, DAS ES SONST NICHT GIBT. Rot ist fuer
"ueberfaellig" und Spicy Media vergeben, Babyblau fuer DogFather, Lila
fuer Manager, Gruen fuer Scout, Bronze fuer Creator, Bernstein fuer
"dringend". #ff2fd0 stoesst mit keinem davon zusammen -- es faellt
nicht auf, weil es HELLER ist, sondern weil es einzigartig ist. Das
ist verlaesslicher: Helligkeit konkurriert mit den Nachbarn,
Einzigartigkeit nicht.

Gerechnet wie bei Ton 21: Abstand zum naechsten Nachbarn 0,1305 (die
Grenze im Satz liegt bei 0,0973), Buntheit 0,276 -- die hoechste im
ganzen Satz, das alte Gold lag bei 0,170 --, Kontrast 6,00:1. Von
sieben Kandidaten sind drei an der Abstandsgrenze gescheitert. Das
Saeuregelb #e0ff00 waere lauter gewesen (16,86:1), haette sich aber
mit dem Bernstein von "dringend" und dem Gold der Nachbarkacheln um
dieselbe Wirkung gestritten. Die Kachel bleibt gebaut wie alle
anderen; was sie heraushebt, ist die Farbe, keine Sonderform.

--- Eine Rueckwirkung, die pruef-buehne gefunden hat ---

Die Typenschilder von gestern nutzen `background-clip: text` -- dafuer
MUSS `color: transparent` sein. pruef-buehne las genau dieses `color`,
machte daraus Schwarz und meldete 1,07:1 fuer Text, der hell und gut
lesbar ist. Fuenf Fehlalarme auf drei Seiten.

Eine Warnung, die bei richtiger Arbeit anschlaegt, wird abgeschaltet.
Sie ist deshalb nicht weichgemacht, sondern GENAUER geworden: Bei
Verlaufsschrift zaehlt jetzt der DUNKELSTE Farbstopp der ersten
Hintergrundebene -- der schlechteste Punkt, den es auf dieser Schrift
wirklich gibt. Damit meldet start.html 4,74:1 (noetig 4,5), die
Pruefung findet also weiter die engste Stelle.

UND DIE GEGENPROBE HAT SOFORT EINEN FEHLER IN MEINEM EIGENEN CODE
GEFUNDEN: Ich suchte das Ende der ersten Ebene mit `"),"` -- diese
Zeichenfolge steht aber schon am Ende des ERSTEN `rgb(...)`. Die
Messung las damit immer nur den ersten Stopp und haette einen dunklen
Verlauf fuer hell gehalten. Jetzt wird ueber Klammern gezaehlt. Der
Helfer steht einmal und wird als Quelltext in beide Seiten-Aufrufe
gereicht -- zwei Kopien waeren zwei Gelegenheiten auseinanderzulaufen.

Geprueft: pruef-buehne (mit neuer Gegenprobe), pruef-start-ansicht,
pruef-css-klassen, pruef-handy, pruef-workspace-seiten -- alle in
Ordnung.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 02:58:22 +02:00
DogFatherGitandClaude Opus 5 7de32a5ec7 Punkt 15: Der Chat bekommt Suche, Antworten mit Zitat und die Ungelesen-Linie
Wunsch Filipe: "ich will dass du diese seite viel krasser und
detaillierter machst, ich will dass du dich informierst und alles
reinsetzt was wir noch gebrauchen koennten."

NICHT ALLES, SONDERN WAS TAEGLICH FEHLT. Der Chat konnte schon Raeume,
Verlauf, Gelesen-Stand, Live-Zustellung, Gruppen und Zuruecknehmen.
Drei Dinge fehlten, und jedes davon kostet ohne es echte Zeit:

1. SUCHE IN DEN NACHRICHTEN. Ein Chat ohne sie ist ab dem zweiten
   Monat ein Archiv, in dem man nichts findet. Ein Suchfeld gab es --
   es durchsuchte aber nur die NAMEN der Gespraeche, also die kleinere
   Haelfte. Jetzt durchsucht dasselbe Feld beides und zeigt die
   Fundstellen UNTER der Gespraechsliste: Wer "Patrick" eingibt, will
   vielleicht das Gespraech und vielleicht die Nachricht -- ein
   Umschalter haette ihn zwingen wollen, das vorher zu wissen.

2. ANTWORTEN MIT ZITAT. Zu zweit weiss man meistens, worauf sich etwas
   bezieht. In einer Gruppe laufen drei Faeden parallel, und "ja, mach
   das" kann alles heissen. Das Zitat steht IN der Blase (es gehoert
   zur Antwort, nicht darueber) und fuehrt per Klick zur Stelle.

3. DIE LINIE "AB HIER NEU". Wer nach zwei Tagen zurueckkommt, sucht
   sonst die Stelle, an der er aufgehoert hat, indem er Uhrzeiten
   liest.

BEWUSST NICHT GEBAUT: Anhaenge (dafuer gibt es den Dateien-Bereich mit
Rechten und Ablauf), Reaktionen (eine vierte Sache, bevor die drei sich
bewaehrt haben) und Tipp-Anzeigen (dauernder Verkehr fuer eine
Auskunft, die man in zwei Sekunden ohnehin sieht).

DIE SICHERHEIT DER SUCHE STEHT IM JOIN, nicht in einer nachtraeglichen
Pruefung: `chat_teilnehmer` wird mit der eigenen Personenkennung
verbunden, und was dort nicht drinsteht, kommt gar nicht erst aus der
Datenbank. Ein Filter, der erst hinterher aussortiert, ist eine Zeile
davon entfernt, vergessen zu werden. Ebenso beim Zitat: Worauf
geantwortet wird, muss im SELBEN Raum liegen -- sonst koennte jemand
die Kennung aus einem fremden Gespraech mitschicken, und beim
Empfaenger stuende ein Zitat aus einem Raum, den er nie gesehen hat.

DREI FEHLER, DIE DER DURCHLAUF GEFUNDEN HAT:

1. `ESCAPE '\'` IN EINEM TEMPLATE-LITERAL. Dort ist `\'` eine
   Fluchtsequenz fuer das Anfuehrungszeichen -- SQLite bekam ein
   LEERES Fluchtzeichen und antwortete "ESCAPE expression must be a
   single character". Die Suche war damit komplett tot. Kein
   Syntaxfehler, kein Warnhinweis: Erst der Aufruf mit echten Daten
   hat es gezeigt.

2. DIE MASKIERUNG KANNTE ZWEI VON DREI ZEICHEN. `%` und `_` waren
   dabei, der Backslash nicht -- ausgerechnet das Fluchtzeichen selbst.
   Geprueft wird das jetzt an der ZEILE AUS DER DATEI, nicht an einem
   Nachbau: Mein erster Test hat die Maskierung nachgebaut und dabei
   die Shell-Maskierung mitgeschleppt -- er meldete einen Fehler, den
   nur er hatte.

3. DIE UNGELESEN-LINIE SCHIEN NICHT ZU FUNKTIONIEREN. Sie tat es --
   mein Testaufbau war falsch: Filipes Seite war noch offen, die neuen
   Nachrichten kamen ueber den Live-Strom an und wurden sofort als
   gelesen gemeldet. Es gab schlicht nichts Ungelesenes. Erst als er
   die Seite verlaesst, bevor Patrick schreibt, steht die Linie da --
   und zwar genau vor "Neu von Patrick, eins", und beim zweiten
   Oeffnen ist sie weg.

Der Gelesen-Stand wird deshalb beim OEFFNEN mitgeschickt, bevor er
gesetzt wird -- eine Zeile spaeter waere er immer die letzte Nachricht,
und die Linie staende nie irgendwo.

Ohne Volltextindex, mit Absicht: `LIKE` liest die Tabelle, und bei
einem Team dieser Groesse sind das einige tausend Zeilen. Ein
FTS5-Index waere eine zweite Tabelle, die synchron gehalten werden
muss -- genau daran gehen solche Sachen kaputt. Wenn der Verlauf
sechsstellig wird, ist das der Zeitpunkt dafuer, nicht heute.

Geprueft: pruef-chat, pruef-chat-optik, pruef-css-klassen,
pruef-workspace-seiten, pruef-handy -- alle in Ordnung. Dazu im
Browser durchgespielt: Zitat gesetzt und gelesen, Suche nach
"Bitrate" (1 Treffer), nach "100 %" (1 Treffer -- die Maskierung
haelt), nach Unsinn (0), einbuchstabige Suche (zu kurz), Antwortleiste
mit dem richtigen Namen, Ungelesen-Linie an der richtigen Stelle und
beim zweiten Oeffnen weg.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 02:18:59 +02:00
DogFatherGitandClaude Opus 5 e616d88a30 Punkt 7: Vier Koennensstufen in den Bereichslisten -- Anfaenger bis Meister
Wunsch Filipe: "ich will dass es in diesen kategorien ... kategorien
gibt wie jetzt, aber fuer anfaenger, fortgeschrittene, profis .... falls
es noch eine kategorie gibt fuege ruhig hinzu. informiere dich so krass
wie es nur geht ... und dan will ich dass du das perfekt alles aufbaust
mit aufgaben und so."

VIER STUFEN, UND DIE VIERTE IST NICHT AUSGEDACHT. In den gaengigen
Kompetenzmodellen (Dreyfus) folgt auf "kompetent" eine Stufe, auf der
es nicht mehr um das eigene Koennen geht, sondern darum, dass es OHNE
einen weiterlaeuft. Genau daran haengen die elf Punkte der obersten
Stufe: Vorlagen, eingewiesene Vertretung, abgelegte Loesungen.

  Anfaenger        was von Anfang an sitzen muss
  Fortgeschritten  Routine statt Zufall
  Profi            gemessen statt geschaetzt
  Meister          laeuft auch ohne dich

DIE STUFE HAENGT AM PUNKT, NICHT AN DER GRUPPE. Eine Gruppe ist ein
ABLAUF ("Vor der Sendung"), eine Stufe ist ein KOENNEN. Als Gruppen
gebaut waeren es zwoelf Abschnitte statt drei, und dieselbe Frage
stuende viermal da. So bleibt der Ablauf die Gliederung und die Stufe
ein Filter darueber.

DIE INHALTE SIND RECHERCHIERT, NICHT AUSGEDACHT. 47 vorhandene Punkte
haben eine Stufe bekommen, 28 neue sind dazugekommen -- ueberwiegend
auf Profi und Meister, weil der Bestand dort duenn war. Was jetzt
drinsteht und vorher fehlte, unter anderem:

  * Bitrate hoechstens 70-80 % des GEMESSENEN Uploads; der Rest ist
    der Puffer gegen verworfene Bilder.
  * Keyframe-Abstand zwei Sekunden -- alles andere kann beim
    Zuschauer zu Puffern oder gar nicht erst zum Abspielen fuehren.
  * Tonfilter in der Reihenfolge Rauschunterdrueckung, Kompressor,
    Rauschsperre: Ein Kompressor davor hebt das Rauschen mit an.
  * Hardware-Encoder statt Prozessor -- der groesste Einzelgewinn an
    Stabilitaet.
  * Verworfene Bilder ABLESEN: Leitung und Kodierung sind zwei
    verschiedene Fehler mit zwei verschiedenen Loesungen.
  * Eskalationsleiter in vier Stufen (ansprechen, loeschen, Auszeit,
    Sperre) -- vorher festgelegt, weil Ungleichbehandlung das ist, was
    Communitys spaltet.
  * Moderatoren EINGEWIESEN, nicht nur ernannt: Regeln schriftlich,
    Eskalationsleiter, Werkzeuge einmal gezeigt.
  * Privater Probelauf statt Programmvorschau -- erst der zeigt, was
    beim Zuschauer ankommt.

Zahlen: LIVE 33 Punkte (11/10/8/4), Community 23 (7/7/5/4), Technik 19
(6/6/4/3). Jeder Punkt hat genau eine Stufe -- nachgemessen, nicht
angenommen.

DIE VORGABE IST "ALLE". Ein Filter, der beim Oeffnen schon etwas
versteckt, laesst einen Punkte suchen, die man gestern noch gesehen
hat. Die Gruppenzahlen zaehlen mit dem Filter mit; eine Gruppe, in der
nichts uebrigbleibt, sagt das in einem Satz statt leer dazustehen.

Die vier Stufenfarben sind GELIEHEN, nicht ausgesucht: dieselben, die
auf der Uebersicht schon "offen / dringend / laeuft / erledigt"
tragen. Wer die eine Seite kennt, liest die andere ohne Legende.

ZWEI EIGENE FEHLER UNTERWEGS:

1. NAMENSKOLLISION. Ich habe die Marke `fest-punkt__stufe` genannt --
   den Namen gibt es dort laengst fuer den BEARBEITUNGSstand (Offen /
   Passt so / Verbessern). Gemessen standen danach 66 Marken an 33
   Punkten, und mein neues CSS faerbte den alten Behaelter mit. Heisst
   jetzt `__koennen`. Zwei verschiedene Dinge unter einem Namen ist
   derselbe Fehler wie zwei Regeln fuer dieselbe Sache, nur eine Ebene
   frueher.

2. SCHRIFTGROESSE. Die Marke stand auf 0,66 rem = 10,56 px.
   pruef-css-klassen hat es sofort gemeldet (44 statt 43 Stellen unter
   11,5 px). Jetzt 0,72 rem.

Geprueft: pruef-checkliste, pruef-css-klassen, pruef-workspace-seiten,
pruef-schulung -- alle in Ordnung. Dazu alle drei Bereiche im Browser
durchgefiltert.

Quellen der Recherche: obsproject.com (NVENC/Encoder), dacast.com und
obs-versions.com (Bitrate, Keyframe, Tonfilter), switcherstudio.com
(Probelauf), help.twitch.tv und sendbird.com (Moderation,
Eskalation), jeffbullas.com (Einweisung von Moderatoren).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 02:05:30 +02:00
DogFatherGitandClaude Opus 5 6815ba89ba screen1/2/3: Zahlen werden Ziele, Titel werden Typenschilder, DogFather wird Silber
--- screen1: die sieben Zahlen fuehren zu ihren Aufgaben ---

"wenn ich auf die druecke soll ich auf zu denen punkten gebracht
werden."

Der Weg dahin gab es laengst: `aufgaben.html?zeigen=<schluessel>`
springt zu den passenden Karten und legt eine Zeile darueber, was
gezeigt wird. Nur waren die sieben Karten `<li>` ohne Link -- die
Auskunft war da, der Weg dorthin nicht.

Zwei Schluessel fehlten und sind nachgetragen: "heute" (die Karten
tragen dafuer jetzt `data-heute`, denn "heute faellig" ist ein eigener
Zustand und kein Sonderfall von "ueberfaellig") und "abgebrochen" --
das klappt zusaetzlich den Kasten auf, in dem die Abgebrochenen
stehen. Ein Sprung in einen zugeklappten Kasten laesst einen glauben,
der Knopf sei kaputt.

EIN <a> IM <li>, NICHT DAS <li> KLICKBAR: Ein Listenpunkt mit einem
Klick-Zuhoerer ist fuer Tastatur und Vorleseprogramm kein Ziel. Die
Trefferflaeche wird ueber ein durchsichtiges `::after` auf die ganze
Kachel gestreckt -- im ersten Anlauf stand dort `padding: inherit`,
was die 14/16 der Kachel ein zweites Mal aufgetragen und sie siebenmal
um 28 px verbreitert haette.

DIE NULL BLEIBT EIN LINK. Der Sprung zeigt dann eine leere Spalte mit
der Zeile "Aufgaben, die offen sind" -- das ist eine Antwort. Ein
toter Knopf ist keine.

--- screen2: die Kategorietitel werden Typenschilder ---

"die titel von den kategorien sollen spezieller und geiler sein."

Fase statt Rundung (die Pille war das einzige Rund auf einer Seite aus
abgeschraegten Platten), ein gepraegter Anschlag aus drei Kerben
statt eines Strichs, gebuerstetes Metall in der Schrift und eine
auslaufende Linie nach rechts.

UND DABEI EIN FUND: Der "leuchtende Strich" vor "Was ist dran" und
"Deine Aufgaben" wurde NIE GEZEICHNET. `.zahlen-block .feldschild`
setzt `display: flex`, damit das Pseudoelement eine Box bekommt --
rund 1200 Zeilen spaeter steht `.inhalt .feldschild { display: block }`
mit derselben Spezifitaet, und die spaetere gewinnt. Das Schild war
`block`, das Pseudoelement damit `inline`, und ein Inline-Kasten
ignoriert `width` und `height`. Aufgefallen ist es nur, weil mein
neuer Anschlag ebenfalls unsichtbar blieb und die Messung sagte: Der
Text beginnt bei x=12, also genau an der Polsterung -- davor belegt
nichts Platz.

Die Gegenprobe hat mich dabei vor einer falschen Reparatur bewahrt:
Ich hatte den Textverlauf (`background-clip: text`) im Verdacht.
Einmal mit und einmal ohne gemessen -- in beiden Faellen x=12. Damit
war die Ursache ausgeschlossen, bevor ich an der falschen Stelle
gearbeitet habe.

--- screen3: DogFather wird Silber, der Husky wird das echte Logo ---

"dieses husky symbol soll ersetzt werden durch den husky oben in der
leiste. und die farbe von der rolle und die barre soll so richtig geil
silber sein ... und der husky soll eine geile babyblau [Auge] haben."

Damit kehrt die Rolle zu dem zurueck, was im allerersten Auftrag stand
("husky: silber und blaue augen").

DAS ZEICHEN war eine geometrische Eigenkonstruktion -- ein Fuenfeck mit
zwei dreieckigen Ohren. Ordentlich gebaut, aber nicht DER Husky: Oben
in der Leiste steht die richtige Marke, und zwei verschiedene Huskys
auf einer Seite sind einer zu viel. Jetzt das echte Logo als <image>,
eingefaerbt mit `feComponentTransfer` -- eine zweistufige Tabelle
bildet Schwarz auf dunklen Stahl und Weiss auf Silber ab. Ein
`feColorMatrix` koennte das nicht; er mischt nur linear und zoege die
Mitteltoene flach.

DAS AUGE IST GEMESSEN, NICHT GESETZT: Ein Durchlauf ueber die
Bildpunkte hat die Pupille als einzige dunkle Insel gefunden, die
ringsum von Hellem umgeben ist -- bei 165/258 von 512, also 32,2 % und
50,4 %.

DIE ROLLENFARBE NACHGERECHNET, weil Silber gefaehrlich ist: Es hat
kaum Buntheit und koennte neben einer anderen Rolle verschwinden. In
OKLab liegt #d8e0ec 0,1901 von seinem naechsten Nachbarn (Scout)
entfernt -- das bisherige Babyblau lag bei 0,1349. Die fuenf Rollen
sind dadurch BESSER auseinanderzuhalten als vorher. Kontrast 14,41:1.

"wie mit sternen" ist als GLANZ gebaut, nicht als Funkeln: ein
schmales schraeges Spitzlicht und drei winzige Lichtpunkte, alles
still. Ein wanderndes Glitzern auf der Anmeldeseite waere genau das,
was die Hausregel verbietet.

Nebenbei: `rs-silber` faerbte den alten Husky und wird jetzt nirgends
mehr benutzt -- entfernt statt liegengelassen.

--- Aufraeumen ---

`ruf.png` (ein Messbild von mir) war ueber `git add -A` ins Repo und
bis auf den Server gewandert -- die Loeschung kam eine Zeile zu spaet.
Entfernt, und `.gitignore` sperrt jetzt das Praefix `zz-`, das solche
Dateien ab sofort tragen. Eine Regel im Werkzeug ist besser als eine,
an die ich mich erinnern muss.

Geprueft: pruef-rollen (97), pruef-start-ansicht, pruef-css-klassen,
pruef-workspace-seiten -- alle in Ordnung. Dazu die sieben Links und
beide neuen Sprungziele im Browser durchgeklickt.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 01:55:07 +02:00
DogFatherGitandClaude Opus 5 cccafd2c31 Sechs Wuensche: Hintergruende, Knopfverteilung, Universum, Uhrkoepfe, Knallrot
--- screen3 + screen1: die Hintergruende draengeln nicht mehr ---

"die hintergrunde sollen ueberall so sein dass die sich nicht in den
vordergrund draengeln." / "mach den hintergrund von dieser kachel
dunkler, so dass die die kacheln drin viel mehr auffallen."

`--raster` stand auf .26 Deckkraft -- auf dunkler Flaeche kein Hauch
mehr, sondern ein gezeichnetes Gitter. Im Tagdialog lief es sichtbar
durch die Ueberschrift, in den Sammelkacheln stand es VOR den Karten
darin. Jetzt .09: Man sieht eine Struktur, man zaehlt keine Linien.
Eine Zahl fuer das ganze Haus -- sie steht einmal in module.css und
wird an fuenf Stellen benutzt.

Die Anlasskachel im Kalender lag mit rgba(19,26,38,.88) auf demselben
Helligkeitsniveau wie die Karten darin: keine Vitrine, sondern eine
dritte Flaeche gleicher Lautstaerke. Jetzt fast schwarz. An den Karten
musste dafuer nichts geaendert werden -- der Abstand entsteht von
selbst.

--- screen2: ein Knopf wandert nach links ---

"eins von diesen buttons soll links bei dem anderen kreis sein."

Die GLOCKE geht nach links zum Ring, der WECKER bleibt rechts bei der
Uhr. Das ist nicht ausgewuerfelt: Der Wecker ist eine Uhrzeit. Die
Glocke entscheidet, ob man ueberhaupt etwas ueber sein Team erfaehrt --
und der Ring links zeigt genau das.

Die Kachel ist damit spiegelsymmetrisch belegt: 48 px Knopf + 14 px
Abstand + 248 px Instrument auf beiden Seiten. Genau das rechnet
`--spalte`. Die Zentrierung des Rings ist weggefallen -- sie war noetig,
solange er allein in einer fuer Instrument PLUS Knopf bemessenen Spalte
stand. Der reservierte Platz schrumpft von 104 auf 48 px je Seite; die
Begruendung fuer das Reservieren bleibt: Ein Platz, der erst mit der
Antwort entsteht, laesst die Zeile springen.

--- screen4: zwei Chilis und zwei Huskys dazu ---

"setz in den hintergrund noch 1-2 peperonis und dan das logo von
dogfather, also nur den husky."

DER HUSKY IST EINE MASKE, KEIN BILD. Die Datei ist schwarz-weiss und
freigestellt (nachgemessen: 49 % durchsichtig). Als Hintergrundbild bei
15 % verschwaenden die schwarzen Flaechen im dunklen Grund und uebrig
blieben die hellen -- ein zerrissener Umriss, kein Hund. Als Maske
ueber einer Farbflaeche wird daraus eine geschlossene Silhouette in
DogFathers Babyblau. Im Universum schweben jetzt beide Marken in ihren
beiden Farben: sieben Chilis rot, zwei Huskys blau.

--- screen5: die Punkte sind ersetzt, das letzte Glied leuchtet ---

"ich will dass du die punkte ersetzt und immer der letzte soll mehr
strahlen oder so." / "alles ist mega ausser die stunden muss du noch
perfektionnieren."

DIE DREI UMLAUFENDEN PERLEN SIND WEG -- samt 60 Zeilen Rechnung. Sie
waren ein zweites Ding an einer zweiten Stelle: eigene Uhr ab dem
ersten Takt (weil die volle Unixzeit `rotate(1.07333e+10deg)` ergab),
eigener Startwinkel je Bahn, drei Winkel, die die kleineren Einheiten
anteilig mittragen mussten. All das war noetig, WEIL der Kopf neben der
Reihe herlief statt Teil von ihr zu sein. Genau deshalb trugen sie am
08.09. noch die alten Farben, als die Bahnen getauscht wurden.

Jetzt zeichnet eine zweite SVG-Lage genau EIN Glied heller -- dasselbe,
das die Reihe darunter zuletzt gesetzt hat, aus denselben Zahlen. Sie
kann gar nicht danebenstehen. Heller statt groesser: Waere der Kopf
groesser, waere er ein Fremdkoerper in der Reihe.

DIE STUNDEN WAREN BREITER ALS LANG -- 5,5 lang bei 7 breit, also 0,79:1.
Ein Segment, das breiter ist als lang, liest sich als Klotz quer auf
der Bahn statt als Balken entlang. Und weil die Kantenlage nur 0,4
versetzt ist, lief der 0,9 breite Lichtstrich MITTEN DURCH jeden Balken
statt an seiner Kante. Jetzt 10 lang bei 5,8 breit (1,7:1), und der
Kantenversatz ist nach Bandbreite gestaffelt: (Breite - 0,9) / 2, also
0,75 / 1,65 / 2,05 zusaetzlich zur Gruppe.

--- screen6: die Scout-Pipeline wird knallrot ---

"die farbe von dieser kategorie soll knall rot sein."

Die anderen zwanzig Kachelfarben sind gerechnet (OKLab, groesstmoeglicher
Abstand). Diese eine ist gewuenscht -- und wurde deshalb GEGEN den Satz
geprueft statt eingetragen: Der engste vorhandene Abstand liegt bei
0,0973. #ff1f2e kommt seinem naechsten Nachbarn auf 0,1228 nahe, ist
also weiter entfernt als das engste vorhandene Paar. Kontrast 5,01:1
(noetig 4,5). Von sechs geprueften Rottoenen der mit dem groessten
Abstand UND genug Kontrast.

tools/kachel-farben.mjs weiss jetzt davon: Ein kuenftiger Lauf wuerde
wieder Rosa vorschlagen, und das waere eine stille Ruecknahme einer
ausdruecklichen Entscheidung.

--- Ein Messfehler, der festgehalten gehoert ---

Beim Pruefen von screen4 meldete meine Foto-Methode vier Beschriftungen
unter 4,5:1 -- bei einem Verlust von 0,00 bis 0,15 durch das Universum.
Dass die Ursache nicht das Universum sein konnte, stand damit schon in
den Zahlen. Exakt gerechnet (Vordergrundfarbe gegen die tatsaechliche
Flaeche darunter) liegen dieselben Texte bei 9,13:1 bis 10,76:1.

Die Foto-Methode mittelt ueber alle helleren Bildpunkte, und bei
duenner Grossbuchstabenschrift ist die Haelfte davon halb
ausgeleuchtete Kantenpunkte. Fuer grosse Schrift taugt sie, fuer kleine
Versalien meldet sie systematisch zu wenig. Haette ich ihr geglaubt,
haette ich vier Farben "repariert", die in Ordnung sind.

Geprueft: pruef-start-ansicht, pruef-css-klassen, pruef-kalender,
pruef-buehne, pruef-handy, pruef-workspace-seiten, pruef-tagesruf --
alle in Ordnung. Dazu Ring und Uhr auf 248/248 nachgemessen, die
Kopf-Muster gegen die Uhrzeit nachgerechnet (01:24:59 -> Sekunde bei
281,115, Minute bei 96,76, Stunde bei 16,493) und die Kachelfarbe gegen
alle zwanzig anderen in OKLab geprueft.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 01:33:59 +02:00
DogFatherGitandClaude Opus 5 ef6bf0d011 screen1 (neu): Aus dem Siegel wird eine Urkunde
Filipe: "wenn die kachel da ist soll die viel spezieller und geiler
sein. wirklich speziell machen bitte."

In der Nacht ist aus dem unsichtbaren Kasten ein Siegel geworden --
Flaeche, gruene Stempelschiene, gepraegte Muenze. Das war die halbe
Antwort. "Wirklich speziell" heisst: Es soll nicht nur ANDERS aussehen
als die Kacheln daneben, sondern nach etwas Bestimmtem.

ES IST EINE QUITTUNG. Alles auf dieser Seite ist eine Aufgabe -- etwas,
das noch zu tun ist. Dieses eine Feld sagt das Gegenteil. Die
Formensprache dafuer gibt es seit dreihundert Jahren und sie ist
ueberall dieselbe: Urkunde, Quittung, Wertpapier. Drei Merkmale machen
sie aus, alle drei sind jetzt gebaut:

  1. GUILLOCHE -- das feine, sich kreuzende Linienwerk auf
     Wertpapieren. Zwei Scharen in flachen gegenlaeufigen Winkeln.
  2. DIE RAENDELUNG der Muenze -- der gekerbte Rand echter Geldstuecke,
     28 Kerben, nur am Rand.
  3. DIE PERFORATION rechts -- die Reisskante eines abgetrennten
     Abschnitts. Sie sagt im Bild, was der Satz sagt: abgeschlossen.

KEIN EINZIGES NEUES ELEMENT: alles auf Pseudoelementen, die es schon
gab. Fuer eine Zierde gehoert nichts in den Dokumentbaum.

DREI ANLAEUFE, WEIL ICH ES DREIMAL ZU LAUT HATTE -- und jedes Mal hat
erst das Bild es gezeigt, nie eine Zahl:

  * Die Raendelung lag mit `z-index: -1` HINTER der Muenze. Deren
    Flaeche ist halbdurchsichtig, also schienen die Kerben ueber die
    ganze Scheibe durch: eine Sonne mit Strahlen statt einer Muenze.
    Jetzt liegt sie davor und wird maskiert.
  * Das Maskenband war mit 70..74 % rund 0,6 px breit -- rechnerisch
    ein Ring, auf dem Bildschirm ein Hauch. Jetzt 60..100 %, also
    6,4 px, dasselbe Verhaeltnis wie an einem echten Geldstueck.
  * Die Guilloche stand bei 4,5 % in Gruen: kein Material mehr,
    sondern ein sichtbares Rautennetz, das die ganze Kachel nachfaerbte.
    Jetzt 2 % in Silber und mit 9 statt 7 px Abstand -- dichte Linien
    erzeugen mit dem Pixelraster ein Moiré, und das flimmert beim
    Rollen.

Und noch ein Ausschnitt-Fehler wie gestern: Ich habe den ersten
Nachweis auf 640 px beschnitten und mich gewundert, wo die
Reisskante bleibt -- sie liegt am rechten Ende der Kachel, also
ausserhalb. Muenze und Perforation werden jetzt in ZWEI Ausschnitten
geprueft, weil sie an entgegengesetzten Enden liegen.

Kontrast unveraendert bei 14,47:1 (fett) und 7,39:1 (still).

Geprueft: pruef-start-ansicht, pruef-css-klassen, pruef-buehne -- alle
in Ordnung.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 01:13:35 +02:00
DogFatherGitandClaude Opus 5 8c7dc1fa94 Uhr und Ring sind jetzt gleich gross -- aus EINER Variablen
Wunsch Filipe: "die uhr und der [ring] sollen noch bissl groesser sein
und ... dan auch am ende die selbe groesse haben bitte. sehr wichtig."

WARUM SIE ES VORHER NICHT WAREN: Der Ring stand in heim.css
(232 / 220 / 190), die Uhr in start.css (164 / 118). Zwei Dateien,
zwei Zahlensaetze, und keine Stelle, an der jemand beide zugleich
gesehen haette. Nachgemessen lagen sie am Rechner 68 px auseinander.
Das war kein Versehen an einer Zahl, sondern die zwangslaeufige Folge
davon, dass es zwei gab.

Jetzt entscheidet `--instrument` ueber beide -- und ueber die Spalten,
in denen sie sitzen. Gemessen: 248/248 am Rechner, 224/224 am Tablet,
196/196 am Handy. Ein Auseinanderlaufen ist nicht mehr moeglich,
sondern muesste absichtlich geschrieben werden. Die alte Angabe in
start.css ist ENTFERNT, nicht ueberschrieben: eine wirkungslose Zahl,
die richtig aussieht, ist genau die Falle.

ZWEI FOLGEN, BEIDE ERST IM BILD SICHTBAR:

1. DIE UHR HING 32 px UEBER DIE KACHELKANTE. Die rechte Spalte war auf
   das Instrument bemessen (248), braucht aber auch die Knopfreihe
   daneben (48 + 14 Abstand = 310). Die Seite liess sich trotzdem
   nicht seitlich schieben -- der Ueberstand lag INNERHALB der Kachel,
   also hat keine vorhandene Pruefung angeschlagen. Jetzt ist die
   Spaltenbreite abgeleitet (`--spalte`), nicht getippt. Beide
   Aussenspalten bekommen sie, obwohl links keine Knoepfe stehen:
   sonst saesse der Titel nicht mehr mittig. Der Ring wird in seiner
   Spalte zentriert.

2. DIE ZIFFERN WAREN ZU KLEIN. Sie standen in `rem` -- in einer Uhr
   von 164 px richtig, in einer von 248 verloren (29,76 px in einem
   248-px-Zifferblatt, die Mitte eine leere Flaeche). Sie haengen jetzt
   ebenfalls an `--instrument`. Der Faktor ist nachgesehen, nicht
   gerechnet: 0,145 war noch zu klein, 0,168 fuellt die Mitte, ohne an
   die innerste Bahn zu stossen (Stundenbalken liegen bei Radius 31,5
   von 50).

Geprueft: pruef-start-ansicht (kein Text abgeschnitten, keine
Konsolenfehler), pruef-handy, pruef-workspace-seiten (18 Seiten,
Ueberstand 0 px), pruef-css-klassen -- alle in Ordnung. Dazu
1500/900/390 px einzeln nachgemessen: Uhr und Ring auf den Pixel
gleich, Abstand zur Kachelkante 30 bzw. 64 px.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 01:09:02 +02:00
DogFatherGitandClaude Opus 5 b1810ddbc5 screen6: Die beiden Bestaetigungen werden zu Unterschriften
Filipe, mit Bildschirmfoto der beiden Felder: "die sollen geiler sein."

WAS SIE WIRKLICH SIND, stand nur im Klassennamen. Auf einer
Unterweisung bestaetigen ZWEI Personen, dass sie sie durchgegangen
sind -- der Creator und seine Betreuung. Das ist kein Statusfeld, das
ist eine Gegenzeichnung. Gezeichnet waren sie als zwei graue Kaesten
mit runden Ecken, die man auf dem dunklen Grund kaum sah. Zwei
Rechtecke sagen "hier steht etwas". Eine Unterschriftszeile sagt "hier
fehlt jemand".

ZWEI ZUSTAENDE, ZWEI BILDER -- und beide gab es im Code laengst als
`data-da="ja"/"nein"`, nur unterschieden sie sich um einen Hauch Gruen:

  OFFEN   eine gestrichelte Linie mit einem leeren Platz darauf. Sie
          WARTET sichtbar. Der Federstrich links deutet an, wo man
          ansetzt.
  DA      eine durchgezogene gruene Linie, der Name darueber, und ein
          gepraegtes Siegel mit Haken -- wie ein abgestempeltes
          Formular.

GLEICHE HOEHE IN BEIDEN ZUSTAENDEN, und das ist keine Kosmetik: Die
Felder stehen nebeneinander in einem Raster. Waere das unterschriebene
hoeher, spraenge die Karte in dem Moment, in dem jemand unterschreibt
-- unter dem Finger dessen, der gerade gedrueckt hat.

KEINE ZWEITE FASE. Die Karte drumherum steht schon in der Modulliste.
Eine abgeschraegte Ecke IN einer abgeschraegten Ecke liest sich als
Fehler, nicht als Absicht. Das Feld traegt deshalb die andere
Formensprache des Hauses: die Linie.

DER HAKEN IST EINE MASKE, kein Zeichensatz-Haken (der sieht in jeder
Schrift anders aus und faellt weg, wenn eine fehlt) und kein Bild
(eine Datei mehr fuer fuenfzehn Pixel). Erst stand er nur im
Kommentar, waehrend im Code eine leere Muenze lag -- nachgebaut, bevor
es committet wurde. Ein Kommentar, der mehr behauptet als der Code
tut, ist schlimmer als keiner.

ZWEI ANSICHTEN NACHGEMESSEN: Auf 1400 px nebeneinander, auf 390 px
untereinander. Das Siegel sass im ersten Anlauf mit
`translate(100%)` AUSSERHALB des Feldes -- breit sah das gut aus,
schmal waere es aus der Karte gelaufen. Jetzt sitzt es innen; die
Seite laesst sich bei 390 px nicht seitlich schieben.

(Fuer die Ansicht musste ich Testdaten anlegen -- ohne Unterweisung
gibt es keine Unterschriften, und ein Bildschirmfoto von einem leeren
Bereich beweist nichts. Die Daten liegen in der Wegwerf-Datenbank der
Pruefung, nicht im echten System.)

Geprueft: pruef-schulung, pruef-css-klassen -- beide in Ordnung.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 01:01:13 +02:00
DogFatherGitandClaude Opus 5 77ff1a1b52 screen1: Die vier Tafeln der Calls-Seite bekommen eine Flaeche und ihre Farbe
Filipe, mit Bildschirmfoto der vier Reiter: "lass die viel geiler
aussehen bitte."

`.gruppe[data-gruppe]` steht in der Modulliste und bekommt von dort
Fase, Kantenlicht und Eckwinkel -- aber die Modulliste gibt nur die
FORM. Die Flaeche bringt jedes Bauteil selbst mit, und hier stand nur
`margin-bottom`. Die vier Reiter waren damit Silhouetten ohne Koerper:
Das Hintergrundbild lag mitten in ihnen.

DERSELBE FEHLER ZUM DRITTEN MAL IN DIESER NACHT -- beim
Entscheidungsblock auf der Report-Seite, bei der Anlasskachel im
Kalender und jetzt hier. Die Ursache ist jedes Mal dieselbe: Wer ein
Bauteil in die Modulliste aufnimmt, haelt es fuer fertig gestaltet.
Es hat dann eine Silhouette und keinen Koerper. Das gehoert in die
Uebergabe, damit es beim vierten Bauteil nicht wieder passiert.

DIE VIER FARBEN GAB ES SCHON -- an der falschen Stelle. `#f0c48a` fuer
"Protokoll fehlt" und `#79d1a2` fuer "Festgehalten" standen bereits im
Code, aber nur an den EINTRAEGEN in der aufgeklappten Tafel. Der
Reiter selbst, den man zuerst sieht und der oft der einzige ist (drei
von vier sind zugeklappt), trug sie nicht. Jetzt stehen sie einmal als
`--gton` und faerben beides: die Flaeche und ueber `--ton` das
Kantenlicht aus der Modulliste.

Die Farben sind zugeordnet, nicht ausgesucht: Bernstein "etwas ist
offen", Babyblau "kommt noch", Lila "laeuft von allein", Gruen
"erledigt".

EINE LEERE TAFEL TRITT ZURUECK -- dieselbe Ueberlegung wie bei den
Zahlen auf der Uebersicht: Null darf leise sein. Vier gleich helle
Reiter waeren vier gleich laute Rufe.

EIN IRRTUM UNTERWEGS, DER FESTGEHALTEN GEHOERT: Nach der Aenderung sah
ich im weiten Bildschirmfoto immer noch das Motiv "durch" die Tafeln
scheinen und hielt die Reparatur fuer wirkungslos. Es waren die
LUECKEN ZWISCHEN den Tafeln -- dort gehoert der Hintergrund hin. Erst
ein enger Ausschnitt einer einzelnen Tafel hat es geklaert. Ein zu
weiter Ausschnitt luegt genauso zuverlaessig wie ein zu schmaler
(heute Nacht schon einmal, beim Messstreifen am linken Bildrand).

Geprueft: pruef-call-kategorien, pruef-css-klassen, pruef-buehne --
alle in Ordnung.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 00:48:45 +02:00
DogFatherGitandClaude Opus 5 a4db78e937 screen2: Der Tagdialog bekommt die Silhouette des Hauses
Filipe: "die ganze kachel und button sollen geiler aussehen."

Der INHALT war schon gebaut -- Eintraege mit Schiene in ihrer Farbe,
Plaketten (TERMIN, FRIST), Knopfreihe, Akzentknopf. Nur die HUELLE
nicht: ein Rechteck mit 18 px Rundung und einem gezeichneten Rand.
Damit war der Dialog die einzige grosse Flaeche im Workspace ohne Fase
-- und ausgerechnet die, die sich ueber alles andere legt. Man sieht
es nicht als Fehler, sondern denkt "der gehoert wohl zum Browser".

Jetzt dieselbe Bauart wie die Sammelkacheln: Der <dialog> traegt nur
die Fassung (2 px Polsterung mit Farbverlauf darunter), alles Sichtbare
liegt in einer neuen Ebene `.k-dialog__glas` darin. Ohne diese zweite
Ebene muesste die Fassung ein `border` sein -- und ein Rand folgt dem
Rechteck, nicht der abgeschraegten Ecke.

ZWEI ECKEN, NICHT VIER: Bei einem Kasten, der mitten im Bild aufgeht,
wirken vier abgeschnittene Ecken unruhig -- er soll wie eine Platte
wirken, die man auflegt, nicht wie ein Achteck. Oben links und unten
rechts geben die Richtung, die anderen beiden halten die Form.

`border-radius: 0` ist dabei Pflicht und nicht Kosmetik: Bliebe der
Radius neben dem `clip-path` stehen, wuerde er die Ecken der Flaeche
INNERHALB der Silhouette runden -- an den nicht gefasten Ecken saehe
man eine doppelte Kante.

NEBENBEI EINEN WIRKUNGSLOSEN EFFEKT ENTFERNT: `backdrop-filter:
blur(14px)` stand auf dem Dialog und waere mit auf die neue Glasebene
gewandert. Die ist zu 97 Prozent deckend -- der Browser haette bei
jedem Bild einen Weichzeichner ausgerechnet, den niemand sieht. Das
Verwischen des Hintergrunds macht `.k-dialog::backdrop`, und dort
gehoert es hin. Ein Effekt, der nichts bewirkt, ist nicht harmlos: Er
kostet Rechenzeit und behauptet im Quelltext etwas ueber das Aussehen,
das nicht stimmt.

Geprueft: pruef-kalender, pruef-css-klassen, pruef-buehne -- alle in
Ordnung.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 00:44:42 +02:00
DogFatherGitandClaude Opus 5 4c0f41762e screen18, zweite Haelfte: Die Tagesfelder werden Tasten in einer Platte
Filipe: "...und die kacheln vom kalender selber sollen viel krasser und
geiler aussehen bitte."

Die dunklen Fugen zwischen den Tagen waren die eine Haelfte des
Wunsches und stehen seit dem 08.09. Die andere Haelfte sind die Felder
SELBST: flache Rechtecke in drei Grautoenen. Eine gefraeste Platte mit
Fugen, in der flache Flaechen liegen, ist halb fertig -- die Fuge sagt
"Werkstueck", die Flaeche sagt "Tabelle".

ZWEI PIXEL MACHEN DEN UNTERSCHIED: eine Lichtkante oben, eine
Schattenkante unten. Dieselbe Rechnung wie ueberall im Haus -- Licht
faellt von oben, also ist die obere Kante hell und die untere dunkel.
Aus einer Flaeche wird ein Koerper, der in der Platte SITZT. Kein
zusaetzliches Element, keine Groessenaenderung, kein Umbruch.

DER WOCHENENDUNTERSCHIED WAR MESSBAR ZU KLEIN -- und das ist der
eigentliche Fund. Werktag lag bei `rgba(11,15,25,.74)`, Wochenende bei
`rgba(9,12,20,.8)`. Auf dem Bildschirm sind die beiden Spalten nicht
auseinanderzuhalten. Die Angabe war also da und wirkungslos, und das
ist die unangenehmste Sorte Fehler: Sie sieht im Quelltext nach einer
Funktion aus, und niemand vermisst, was scheinbar existiert.

Jetzt liegt das Wochenende sichtbar tiefer und etwas kuehler. Man
sieht den Wochenrhythmus, ohne die Spaltenkoepfe zu lesen -- das ist
keine Zierde, sondern die Information, wegen der ein Kalender
ueberhaupt in Wochen gegliedert ist.

HEUTE BLEIBT DAS LAUTESTE FELD, und das war die Bedingung fuer alles
andere: Wenn jedes Feld eine Kante bekommt, muss das eine, auf das es
ankommt, weiter herausstechen. Voller Ring plus ein leiser Schein nach
innen.

AUGENSCHONEND: Alle Werte unter 8 Prozent Deckkraft. Auf sechs mal
sieben Feldern summiert sich jede Helligkeit -- was auf einer Kachel
dezent ist, ist auf 42 Kacheln ein Raster.

Geprueft: pruef-kalender, pruef-buehne (kalender.html schlechtester
Kontrast 5,58:1 bei noetigen 4,5:1, 13 Stellen gemessen),
pruef-css-klassen -- alle in Ordnung.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 00:41:24 +02:00
DogFatherGitandClaude Opus 5 f39e4d1133 screen29: Der Titel der Anmeldekarte wird in die Platte graviert
Filipe: "sehr gut aber ich will es noch viel geiler bitte."

"Creator Workspace" stand als flaches Weiss ueber der Karte -- richtig
gesetzt, aber ohne Material. Darunter liegt eine Karte aus Glas und
Metall, darum ein Rahmen aus Rot und Babyblau; nur die Ueberschrift
selbst gehoerte zu nichts davon.

ZWEI SACHEN MACHEN AUS SCHRIFT EIN WERKSTUECK:

1. EIN VERLAUF VON OBEN NACH UNTEN, nicht von links nach rechts.
   Gebuerstetes Metall ist oben hell, in der Mitte dunkel und unten
   wieder hell -- weil es sich woelbt. Ein Verlauf, der nur von hell
   nach dunkel laeuft, ist eine Flaeche mit Farbverlauf; erst der
   WECHSEL liest sich als Metall. Dieselbe Ueberlegung wie bei der
   Fassung der Zentrale, nur hochkant.

2. EIN HARTER SCHATTEN DIREKT DARUNTER, ein Pixel. Er macht aus
   aufgelegter Schrift eingelassene: Das Auge liest die dunkle Linie
   als Kante der Vertiefung. Weich waere es ein Schlagschatten und
   damit das Gegenteil.

Dazu ein feiner Lichtstrich unter der Markenzeile -- Rot links, Silber
in der Mitte, Babyblau rechts, dieselbe Richtung wie der Rahmen der
Rollenkachel darunter.

DER RUECKFALL STEHT ZUERST UND IST VOLLWERTIG. `background-clip: text`
traegt hier die Farbe -- faellt die Technik aus, waere durchsichtiger
Text auf durchsichtigem Grund die Ueberschrift der wichtigsten Seite
des Hauses. Also bleibt `color` gesetzt, und erst ein `@supports`
schaltet den Verlauf dazu. `filter: drop-shadow` statt `text-shadow`,
weil ein Textschatten bei durchsichtigem Text DURCH die Buchstaben
scheint -- man saehe den Schatten im Buchstaben stehen.

KONTRAST NACHGERECHNET, NICHT BEHAUPTET: Der dunkelste Punkt des
Verlaufs (#9fb3c8) kommt gegen den Kartengrund auf 8,97:1 / 8,41:1 /
7,54:1 je nach angenommenem Untergrund. Grosse Schrift braucht 3:1,
normale 4,5:1. Die Zahlen stehen im Kommentar, weil ich an genau
dieser Datei schon einmal "liegt weit darueber" geschrieben hatte,
ohne zu rechnen -- und beim Anmelde-Knopf damit danebenlag (4,20:1
statt der behaupteten 4,5+). Eine Behauptung ueber Kontrast ohne Zahl
ist eine Vermutung.

Geprueft: pruef-rollen (97 Pruefungen), pruef-css-klassen -- beide in
Ordnung.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 00:38:31 +02:00
DogFatherGitandClaude Opus 5 af40b79a8c screen30 + screen32: Der leere Zustand wird ein Siegel, die Kennung ein Ausweis
--- Und ein Fund unterwegs: Cigdems Kennung war kaputt ---

`--rollen-ton` faerbt Kennung und Rollenplakette in der Kopfleiste.
Die Liste dahinter kannte admin, manager, scout und creator -- SPICY
MEDIA nicht. Die Rolle kam am 07.09. dazu, diese Liste ist nicht
mitgegangen.

Was dabei passiert, ist schlimmer als eine falsche Farbe: Die Variable
war GAR NICHT gesetzt, und `color-mix(in srgb, var(--rollen-ton) 62%,
transparent)` ist mit einer leeren Variablen ungueltig -- der Browser
wirft die ganze Deklaration weg. Nachgemessen im Browser: Hintergrund
`none`, Rand `rgb(234,243,255)` (also currentColor, weil auch die
Randfarbe fiel), Plakette grau statt rot. Cigdems Kennung war ein
weisser Kasten in einer roten Leiste.

DESHALB STEHT JETZT EINE VORGABE DAVOR, und die ist wichtiger als der
nachgetragene Eintrag: Wer die naechste Rolle anlegt und diese Liste
wieder vergisst, bekommt eine Kennung in der Hausfarbe -- nicht mehr
eine kaputte. Ein fehlender Eintrag darf zu etwas Schlichterem
fuehren, nie zu etwas Ungueltigem.

--- screen30: der leere Zustand ---

"das muss auch viel spezieller sein und auch nicht wie alle anderen
kacheln da sondern wirklich krasser und geiler aber so dass es vom
aussehen trotzdem noch zu seite passt."

Das Gruen lief als Verlauf nach 60 Prozent ins Nichts, dahinter das
Hintergrundbild -- auf Filipes Bild scheint ein Chili mitten durch die
gute Nachricht. Eine Fassung, die nur auf der linken Haelfte
existiert, ist keine.

"Nicht wie alle anderen Kacheln" ist inhaltlich richtig: Alles andere
auf dieser Seite ist eine AUFGABE, etwas, das man noch tun muss. Das
hier ist die Quittung, dass nichts mehr offen ist. Es waere falsch,
wenn es wie eine weitere Aufgabe aussaehe. Also die Form eines
SIEGELS: die Fase sitzt rechts unten statt links oben --
spiegelverkehrt zur Kachelsprache --, links eine breite gruene
Lichtschiene wie ein Stempelrand, und der Haken ist eine gepraegte
Muenze statt eines Kreises mit einem Strich darin. Die Flaeche ist
deckend; eine gute Nachricht, durch die man das Hintergrundbild sieht,
liest sich wie ein Platzhalter.

Leise bleibt es trotzdem: gedecktes Gruen, hoechstens 14 Prozent
Flaeche, nichts pulsiert. Wer nichts offen hat, braucht kein
Feuerwerk. Kontrast gemessen: 14,47:1 (fett) und 7,39:1 (still).

--- screen32: die Kennung in der Kopfleiste ---

"das sieht schon richtig gut aus aber ich will dass es noch krasser
und spezieller aussieht."

Sie sass als flaches, abgerundetes Quadrat zwischen vier Knoepfen und
sah damit aus wie ein fuenfter Knopf, der sich nicht druecken laesst.
Sie ist aber etwas anderes: Sie sagt, WER hier ist, nicht, was man tun
kann. Jetzt die Fase des Hauses statt der Rundung (sie gehoert zur
Seite, nicht zur Knopfreihe), ein gepraegter Ring statt eines
gezeichneten Randes (Lichtkante oben, Schattenkante unten) und ein
sehr leiser Schein in der Rollenfarbe.

KEINE GROESSENAENDERUNG -- 28x28 bleibt. Die Kopfleiste ist am
06.09.2026 schon einmal an einem zusaetzlichen Element zerbrochen;
was hier waechst, drueckt dort etwas heraus.

Geprueft: pruef-workspace-seiten (18 Seiten, Ueberstand ueberall 0 px),
pruef-handy, pruef-start-ansicht, pruef-css-klassen -- alle in Ordnung.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 00:34:13 +02:00
DogFatherGitandClaude Opus 5 41108d6c3c screen14 + screen16: Der Entscheidungsblock bekommt eine Flaeche, die Zahlen bekommen Bedeutung
--- screen14: "das soll auch bitte viel geiler und spezieller sein" ---

Zwei Dinge waren falsch, und nur eines davon sieht man im Code.

1. DIE FLAECHE WAR FAST DURCHSICHTIG -- 9 und 5 Prozent Deckkraft. Auf
   einer Seite mit Hintergrundbild heisst das: Das Motiv scheint mitten
   durch den Text. Auf Filipes Bildschirmfoto liest man den Satz "Ein
   Review endet nicht mit einer Zusammenfassung" quer ueber einem
   gespiegelten SPICY-MEDIA-Schriftzug. Ein Kasten, den man nicht
   sieht, ist keine Fassung -- er ist ein Rand um nichts.

2. `border-radius` UND `border` STANDEN NOCH DA -- wirkungslos, weil
   `.entscheidung` in der Modulliste von module.css steht und die
   spaeter geladen wird. Zwei Angaben, die aussehen, als taeten sie
   etwas, und es seit dem Umbau nicht mehr tun.

Er ist die HANDLUNG der Seite, nicht einer von vier Abschnitten: Alles
darueber ist Auskunft, hier wird entschieden und sofort eine Aufgabe
angelegt. Deshalb ein eigener `--ton` fuers Kantenlicht (die Modulliste
faerbt es darueber) statt des Seitentons, und eine kraeftigere Flaeche
als die Sammelkacheln darueber. Kein Rot: Rot heisst in diesem Haus
"ueberfaellig", und eine Entscheidung ist kein Alarm. Die Eingabefelder
sind jetzt eingelassen statt aufgesetzt -- wo man etwas hineinschreibt,
ist eine Vertiefung; und `color-scheme: dark`, sonst zeichnet Chrome
den Datumswaehler als weisses Kaestchen in die dunkle Flaeche.

--- screen16: "mit mehreren farben arbeiten, damit die wichtigsten
    sachen auch auffallen" ---

Die sechs Zahlen je Creator (ueberfaellig, dringend, offen, in Arbeit,
im Review, erledigt) trugen alle dasselbe Blau -- und `data-warn`
faerbte zwei davon in DASSELBE Rot. "Ueberfaellig" ist eine versaeumte
Frist, "dringend" eine Sache, die schnell muss. Zwei verschiedene
Alarme, die gleich aussehen, sind ein Alarm.

Jetzt sechs Toene: Rot, Bernstein, Babyblau, Lila, Silber, Gruen.

DIE WICHTIGE ENTSCHEIDUNG WAR ABER NICHT WELCHE FARBE, SONDERN WANN.
Sechs dauerhaft leuchtende Felder waeren sechs gleich laute Rufe -- und
damit genau so wenig Hilfe wie sechs gleich blaue. Deshalb bleibt eine
NULL grau und still; nur was groesser als null ist, bekommt seine
Farbe. Auf einer Karte, auf der alles auf Null steht, aendert sich
nichts. Auf einer, auf der drei Sachen ueberfaellig sind, sieht man
genau die. Das ist der Unterschied zwischen Farbe als Schmuck und
Farbe als Auskunft.

Die Farbe haengt an `data-sorte` (einem Schluessel), nicht an
`:nth-child`: Wer morgen ein siebtes Feld dazwischenschiebt, soll nicht
sechs Farben verrutschen lassen. Und die Beschriftung bleibt der
eigentliche Traeger -- Farbe allein traegt in diesem Haus nie eine
Information.

KONTRAST NACHGERECHNET statt angenommen: Die Beschriftungen sind
11,2 px, also gilt 4,5:1. Gemessen gegen die Kartenflaeche liegen sie
zwischen 5,91:1 (erledigt) und 14,09:1 (im Review) -- alle sechs
deutlich darueber. pruef-barrierefrei-workspace habe ich deshalb NICHT
gestartet: Der Lauf haette 190 Sekunden gebraucht, um dasselbe zu
sagen.

Geprueft: pruef-uebersicht, pruef-uebersicht-browser, pruef-css-klassen,
pruef-buehne -- alle in Ordnung.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 00:26:48 +02:00
DogFatherGitandClaude Opus 5 8fcc9de1bb screen4: Die Anlass-Sammelkachel bekommt die Kachelsprache des Hauses
Wunsch Filipe: "ich will dass das alles in einer geilen kachel ist wie
die kacheln in der start seite. und noch geiler."

Der Umschlag um die drei Abschnitte (Als Naechstes / Im Monat / Laeuft
von allein) gab es schon -- aber die Kachelform war in kalender.css
NACHGEBAUT: eine Fase an einer Ecke, ein Raster, ein Innenschatten. Im
Bildschirmfoto sah man den Rahmen kaum, waehrend die Karten DARIN (die
seit jeher in der Modulliste stehen) Kantenlicht und Eckwinkel trugen.
Die Sammelkachel war damit schwaecher gefasst als ihr eigener Inhalt --
genau andersherum, als es sein soll.

"WIE DIE KACHELN AUF DER STARTSEITE" HEISST NICHT "AEHNLICH GEBAUT",
SONDERN DIESELBE REGEL. `.k-anlasskachel` steht jetzt in der
Modulliste von module.css -- in allen sieben Kopien, die
pruef-css-klassen Zeichen fuer Zeichen vergleicht. Damit bekommt sie
Fase, Kantenlicht, Eckwinkel und Schlagschatten aus derselben Quelle
wie 43 andere Bauteile, und ein Nachbau daneben kann nicht mehr
auseinanderlaufen.

DABEI EINEN FEHLER GEMACHT UND GESEHEN: Beim Entfernen des Nachbaus
ging der Hintergrund mit weg. Die Kachel war danach DURCHSICHTIG -- das
Motiv der Seite schien mitten durch den Text. Die Modulliste gibt die
FORM; die Flaeche bringt jede Kachel selbst mit, weil sie von Fall zu
Fall verschieden ist. Eine Fassung ohne Fuellung ist kein Rahmen,
sondern ein Loch. Gesehen im Bildschirmfoto, nicht in einer Zahl.

Geprueft: pruef-css-klassen (sieben Kopien gleich, 44 Klassen),
pruef-kalender, pruef-buehne -- alle in Ordnung.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 00:19:29 +02:00
DogFatherGitandClaude Opus 5 f3d5bcf198 screen20: Die fuenf Rollen in EINER Kachel
Wunsch Filipe: "ich will dass die rollen auch alle in einer grossen
kacheln sind, die soll richtig krass sein, richtig speziell."

Vorher waren es fuenf einzelne Kaesten mit je eigenem Rand, eigenen
runden Ecken und 8 px Luft dazwischen -- der Hintergrund des Motivs
schien ueberall durch. Das las sich als fuenf Dinge, die zufaellig
untereinander stehen. Es ist aber EINE Frage mit fuenf Antworten, und
genau so sieht es jetzt aus: ein Koerper mit abgeschraegten Ecken, in
den fuenf Felder eingelassen sind.

DIE FUGE MACHT DIE KACHEL, nicht der Rand aussen. Ein Spalt, durch den
der Untergrund scheint, TRENNT; eine dunkle Fuge (#05070c) VERBINDET,
weil sie zum selben Koerper gehoert. Dieselbe Entscheidung wie beim
Kalender.

DIE FASSUNG traegt dieselben vier Farben wie der Rand der Zentrale --
links Rot, rechts Babyblau, Silber als Treffpunkt, Schwarz als Fuge.
Wer sich anmeldet, sieht damit schon hier die Handschrift der Seite
dahinter.

WAS BLEIBT, IST DIE SCHIENE. Sie war das Beste am alten Entwurf: Wer
sich als Manager anmeldet, sieht schon hier das Lila, in dem ihm gleich
seine Kacheln begegnen. Sie sitzt jetzt buendig an der Innenkante statt
am Rand einer eigenen Karte -- dieselbe Wirkung, ein Koerper weniger.

ZWEI SACHEN, DIE DABEI AUFFIELEN:

1. ES GAB ZWEI ENTWUERFE FUER DIESELBEN FUENF ZEILEN. Einen ab 1100 px
   (`.tafel .rolle`, mit Schiene und Tastenwirkung) und einen darunter
   (`.rolle`, schlicht). Mein erster Anlauf legte einen DRITTEN
   darueber -- im Bildschirmfoto standen die alten Karten unveraendert
   in meiner neuen Kachel. Statt der dritten Schicht sind jetzt beide
   vorhandenen auf Felder umgestellt: eine Aussage, zwei Groessen.

2. `transform: translateY(1px)` BEIM DRUECKEN MUSSTE WEG. Bei fuenf
   einzelnen Karten war das richtig -- eine Taste, die nachgibt. In
   einem geschlossenen Koerper schiebt sich damit ein Feld um einen
   Pixel aus der Kachel heraus, reisst die Fuge auf und sieht nach
   einem Fehler aus. Der eingelassene Schatten sagt dasselbe, ohne
   etwas zu verschieben.

Nebenbei: Die Markierung der gewaehlten Rolle stand unter 1100 px fuer
alle fuenf auf demselben Blau-Violett -- wer "Scout" waehlte, bekam
Blau, obwohl Scout gruen ist. Die Rollenfarbe `--rf` war zwei Zeilen
darueber definiert und wurde nicht benutzt. Jetzt kommt sie per
`color-mix` aus den zentralen Hausfarben.

Geprueft: pruef-rollen (97 Pruefungen, alles in Ordnung),
pruef-css-klassen (alles in Ordnung), dazu 390/320/820 px nachgemessen
-- nichts ragt heraus, nichts laesst sich seitlich schieben.

Dabei hat meine eigene Messung erst fuenf Fehler gemeldet, die es nicht
gab: Die Untertitel sind auf schmalen Geraeten ausgeblendet, ein
ausgeblendetes Element hat die Masse 0/0, und 0 liegt links von jeder
Kachel. Ohne den Blick aufs Bild haette ich einen Fehler gesucht, den
nur die Pruefung hatte.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 00:02:15 +02:00
DogFatherGitandClaude Opus 5 f701dae53e screen10: Der Tagesruf -- einmal am Tag, was noch offen ist
Wunsch Filipe: "ich will das neben diesem kreis auch ein kleiner button
ist fuer den wecker von den aufgaben, oder quasi eine taetige meldung
einmal am tag zu aktivieren wenn noch aufgaben auf sind."

Ein Wecker-Knopf unter der Glocke, neben der Uhr. Eingeschaltet meldet
er sich einmal taeglich zur eingestellten Zeit -- aber nur, wenn
wirklich noch etwas offen ist. Der Satz nennt die Zahl und die
Ueberfaelligen: "3 Aufgaben sind noch offen / Davon eine ueberfaellig."

ALS EINZIGE ART MIT `vorgabe: false`, und das ist keine
Nachlaessigkeit. Alle anderen Benachrichtigungen antworten auf ein
Ereignis, das gerade passiert ist. Der Tagesruf kommt ungefragt zur
selben Zeit, ob es etwas Neues gibt oder nicht -- so etwas schaltet man
sich selbst ein, sonst ist es Werbung. Bei null offenen Aufgaben kommt
nichts: Eine taegliche Meldung "du hast nichts zu tun" ist der
schnellste Weg, dass man die naechste nicht mehr liest.

EIN FENSTER VON DREI STUNDEN. Der Takt laeuft alle fuenf Minuten; ein
einfaches "jetzt >= eingestellte Zeit" wuerde nach einem Serverausfall
den Ruf fuer neun Uhr um zwanzig Uhr zustellen. Wer eine Erinnerung an
einen vergangenen Tag bekommt, schaltet sie ab. Faellt der Tag aus, ist
das die ehrlichere Antwort.

VIER DINGE, DIE ERST DAS NACHMESSEN GEZEIGT HAT:

1. DER KNOPF VERSPRACH ETWAS, DAS ER NICHT HALTEN KONNTE. Chromium
   meldet `Notification.permission === 'denied'` -- gemessen, nicht
   vermutet. Der Knopf sah einladend aus ("Einmal am Tag melden…") und
   sagte erst NACH dem Antippen ab. Ein Bedienelement, das den Grund
   erst hinterher nennt, ist die schlechtere Haelfte einer
   Fehlermeldung. Jetzt steht er im Titel, und der Knopf ist gedimmt.

2. EINE UHRZEIT IN DER RUHEZEIT WAERE EIN STILLES NICHTS. Der Server
   laesst zwischen 22 und 7 Uhr nichts durch. Wer 23:00 einstellt,
   bekaeme nie etwas und saehe nur einen Knopf auf "an". Jetzt steht
   der Hinweis dort, wo man es einstellt -- mit den Grenzen VOM SERVER,
   nicht mit hier getippten Zahlen.

3. `wert` UND `an` SIND ZWEI ENTSCHEIDUNGEN. Wer nur den Schalter
   umlegt, schickt kein `wert` -- stumpf `req.body.wert` zu schreiben
   haette bei jedem Aus- und Einschalten die Uhrzeit geloescht, und
   beim naechsten Mal staende wieder neun Uhr da. Ein Datenverlust, den
   niemand meldet, weil er wie eine Vorgabe aussieht. Genau dieser Weg
   wird jetzt geprueft.

4. pruef-css-klassen HATTE ZWEIMAL RECHT. Der Stil lag in heim.css
   (nur Startseite), die Zeichen entstehen aber in glocke.js (18
   Seiten) -- auf 17 davon waere ein nackter Knopf gestanden. Und die
   beiden neuen Schriftgroessen (10 und 11 px) haetten die Grundlinie
   von 43 zu kleinen Stellen still auf 45 gehoben. Beides behoben:
   Stil nach start.css, Schrift auf 12 px.

NEUE PRUEFUNG server/pruef-tagesruf.mjs, drei Schichten getrennt, weil
sie getrennt kaputtgehen: Oberflaeche im Browser, Schalten ueber die
Schnittstelle (aus der SEITE heraus, damit Sitzung und
Herkunftspruefung mitgehen), Zeitentscheidung als reine Rechnung. Die
Entscheidung wurde dafuer aus dem Rundgang herausgeloest -- dazwischen
steckend haette man zum Pruefen Datenbank und Push-Versand aufbauen
muessen, also haette man sie nicht geprueft.

Die Erwartung der ersten Schicht richtet sich nach der GEMESSENEN
Berechtigung statt sie vorauszusetzen: Erlaubt eine kuenftige
Chromium-Fassung Benachrichtigungen von sich aus, waere ein fest
verdrahtetes "muss blockiert sein" ein Fehlalarm ohne Fehler.
Gegenproben sind dabei: "99:99", "7:30" ohne fuehrende Null und ein
Wert an einer Art, die keinen kennt, muessen abgelehnt werden -- sonst
bewiese der Bereichstest nichts.

Der reservierte Platz waechst von 46 auf 104 px, damit der zweite Knopf
die Kachelreihe darunter nicht nach unten schiebt; das Zeitfeld schwebt
statt zu schieben. Beides derselbe Grund wie bei der Glocke: Ein
Sprung ist kein Schoenheitsfehler, sondern der Grund, warum man auf den
falschen Knopf drueckt.

Geprueft: pruef-tagesruf (neu, alles in Ordnung), pruef-push,
pruef-css-klassen, pruef-start-ansicht -- alle in Ordnung.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 23:54:51 +02:00
DogFatherGitandClaude Opus 5 cad3c4c4df screen21: Universum hinter der Zentrale, Fassung neu gewichtet
Wunsch Filipe: "ich will dass du im hintergrund dieser kachel das logo
von spicy media machst ... es soll sogar paar mal zu sehen sein, es
soll sich bewegen, schweben ... der ganze hintergrund soll wie ein
universum aussehen. und der rand wie gesagt soll rot schwarz silber und
babyblau sein, rot und babyblau soll man am meisten sehen."

DER RAND HATTE ALLE VIER FARBEN -- IN DER FALSCHEN GEWICHTUNG.
Jeden Stopp mit der Haelfte des Abstands zu seinen Nachbarn gewichtet:
Schwarz 37,5 %, Babyblau 27,5 %, Silber 22 %, ROT 13 %. Die beiden
Farben, die man am meisten sehen sollte, kamen zusammen auf 40,5 % --
Silber allein hatte mehr Platz als Rot. Im Quelltext faellt das nicht
auf: Man sieht neun silberne Stopps und denkt an Spitzlichter, nicht an
ein Fuenftel der Flaeche. Jetzt Babyblau 41,5 %, Rot 33 %, Schwarz
21,5 %, Silber 4 % -- zusammen 74,5 %, und die beiden nur 8,5 Punkte
auseinander. Silber ist auf den Treffpunkt in der Mitte zurueckgenommen,
dieselbe Stelle, an der sich im Schriftzug Chili und Husky treffen.

DAS UNIVERSUM: drei Nebel (rot unten links, babyblau oben rechts, ein
Hauch Lila als Uebergang), ein Sternenfeld aus acht gekachelten
Verlaufsebenen und fuenf schwebende Chilis. Sechs Elemente insgesamt --
Sterne als Elemente waeren neunzig Knoten fuer eine Zierde. Bewegt
werden nur `transform` und `opacity`; ein animiertes
`background-position` zwingt den Browser bei jedem Bild zum Neuzeichnen
einer Kachel mit vierzehn Hintergrundebenen.

DIE ORTE SIND GEMESSEN, NICHT GESTREUT -- und das war die eigentliche
Arbeit. Im ersten Anlauf lagen die Chilis quer ueber der Mittelspalte:
einer deckte 34,5 % der Unterzeile und 45,9 % des Lagesatzes ab, der
Kontrast fiel von 6,36:1 auf 5,87:1. Das war noch zulaessig, zwang die
Deckkraft aber auf sechs Prozent -- und damit sah man die Chilis nicht
mehr, was ausdruecklich gewuenscht war. Die bequeme Antwort waere
gewesen, sie blasser zu machen. Richtig war, sie aus dem Text
herauszunehmen: Sie stehen jetzt in den Zonen ohne Text, tragen 12 bis
17 statt 6 bis 10 Prozent und decken nachgemessen NULL Text ab. Der
verbleibende Verlust von 0,49 kommt allein vom Nebel.

AUGENSCHONEND HEISST HIER VOR ALLEM LANGSAM: Die Bahnen dauern 71 bis
118 Sekunden, die Sternendrift 240. Bei einer Kachel, die stundenlang
im Bild steht, ist eine Bewegung, die man BEMERKT, eine, die stoert.
Nichts blinkt, nichts pulsiert. Bei `prefers-reduced-motion` bleibt das
Bild stehen statt zu verschwinden -- die Einstellung heisst "weniger
Bewegung", nicht "weniger Gestaltung". Unter 700 px gehen die beiden
groessten Chilis: Bei 380 px Breite naehme der grosse ein Drittel der
Kachel ein und staende hinter dem Titel.

Nebenbei zusammengelegt: Die Innenform der Kachel (das Fasen-Polygon)
stand zweimal gleich da und steht jetzt einmal in `--k-innenform`.
Genau diese Sorte Doppelung hat mich in dieser Datei heute schon
zweimal Zeit gekostet.

Geprueft: pruef-start-ansicht (alles in Ordnung), pruef-css-klassen
(alles in Ordnung), Ueberdeckung und Kontrast im Browser nachgemessen
(Foto zurueck in eine Leinwand, WCAG-Helligkeit), Bildschirmfoto bei
doppelter Aufloesung. pruef-barrierefrei-workspace bewusst NICHT
gestartet: Der Kontrast ist hier direkt gemessen (5,87:1 gegen 4,5
gefordert), der Lauf haette 190 Sekunden gebraucht, um dasselbe zu
sagen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 23:41:01 +02:00
DogFatherGitandClaude Opus 5 12c40256f7 Uhr: Stunden rot, Minuten silber, Sekunden babyblau -- alle drei als Reihen
Wunsch Filipe: "stunden soll rot sein, minuten schwarz/silber und die
sekunden babyblau. die punkte herum sollen eine mischung von rot
schwarz und babyblau sein. ich will auch dass die stunden und minuten
auch barren oder punkte sind und nicht so eine durchlaufende schleife."

ALLE DREI BAHNEN SIND JETZT REIHEN. Die Stunde bekommt zwoelf Balken
(ein Zifferblatt hat zwoelf), Minute und Sekunde sechzig. Die Glieder
sind verschieden lang -- Punkt (0,01 + runde Kappe), kurzer Balken
(1,7), langer Balken (5,5). Damit liest man die drei Bahnen auch dann
auseinander, wenn jemand Farben schlecht unterscheidet; Farbe allein
traegt eine Information nie.

VIER FUNDE BEIM NACHMESSEN, keiner davon war vorher sichtbar:

1. ABRUNDEN STATT RUNDEN. `Math.round` liess Minute und Stunde ab der
   HAELFTE einen Balken zu frueh aufleuchten: um 14:30 zeigte der
   Stundenring vier statt drei Balken, der Minutenring ab Sekunde 30
   einen zu viel. Die Uhr war damit die halbe Zeit ueber falsch --
   und ausgerechnet zur vollen Stunde, wo man hinsieht, richtig.
   Nachgerechnet: 10:30 -> 11, 14:30 -> 3, 23:59 -> 12, 00:00 -> 1.

2. DIE PERLENKOEPFE TRUGEN DIE ALTE ZUORDNUNG. Die drei Boegen waren
   getauscht, die drei Koepfe nicht: ein roter Kopf sass auf der
   blauen Sekundenreihe, ein silberner auf den roten Stundenbalken.
   Das sah nach einem Winkelfehler aus, obwohl alle drei auf die
   Zehntelgrad genau standen (354 / 161,9 / 343,0 bei 23:26:59,
   gemessen). Wer eine Farbe tauscht, tauscht sie an ALLEN Stellen:
   Bogen, Kopf, Schein, Kranz.

3. DER SCHEIN LAG DREIFACH UEBEREINANDER. Jeder Ring liegt dreimal im
   SVG (Schatten, Hauptlage, Kante); `.uhr__stunde` traf alle drei.
   Das rote Leuchten lief dadurch bis ueber die Ziffern, obwohl in der
   Regel nur 1,8 px stehen -- genau das Verschwommene, das Filipe nicht
   will. Jetzt `.uhr__ring > …`: nur die Hauptlage leuchtet, Schatten
   und Kante bleiben hart.

4. ZWEI TOTE FARBSCHICHTEN in heim.css (Sekunde rot / Minute blau /
   Stunde bronze). Sie wurden vom spaeteren Satz ueberschrieben und
   waren unsichtbar -- aber wer die Datei von oben liest, haelt sie
   fuer die geltende Regel und aendert die falsche Stelle. Entfernt
   statt stehengelassen: EINE Stelle entscheidet ueber eine Farbe.

Ausserdem: Der Kometenschweif ist raus (HTML und CSS, nicht
ausgeblendet). Eine Reihe zeigt ihre Richtung durch das letzte Glied;
ohne eigenes Muster haette er einen vollen Ring quer ueber die Punkte
gezogen. Der Punktkranz aussen mischt jetzt Rot, Babyblau und ein sehr
dunkles Blau im 18-Grad-Takt -- das Dunkel ist kein Loch, sonst zerfiele
der Ring aus dem Augenwinkel in zwei Haelften.

Gedaempft bleibt Pflicht: Die Sekunde laeuft dauernd und bekommt das
ruhigste Babyblau, die Stunde bewegt sich kaum und darf die kraeftigste
Farbe tragen. Die Auslieferungskennung ist auf allen 19 Seiten
hochgesetzt, sonst kaeme keine der Aenderungen an.

Geprueft: pruef-start-ansicht (alles in Ordnung), pruef-css-klassen
(alles in Ordnung), Segmentzahlen und Perlenwinkel im Browser
nachgemessen, Bildschirmfoto bei vierfacher Aufloesung.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 23:30:56 +02:00
DogFatherGitandClaude Opus 5 e04d7afea7 Anlaesse und Report bekommen Sammelkacheln -- und die Zahlen ragten heraus
Filipe, mit zwei Bildschirmfotos: "ich will dass das alles in einer
geilen kachel ist wie die kacheln in der start seite" und "die ganzen
kacheln sollen viel geiler aussehen und spezieller. mach auch vielleicht
2 größere kacheln wo die anderen kleineren drin sind".

DER KALENDER: Drei Abschnitte standen frei auf dem Hintergrundbild --
was als Naechstes ansteht, was in diesem Monat liegt, was von allein
weiterlaeuft. Drei Ueberschriften ohne Fassung lesen sich als drei lose
Listen; zusammen sind sie EINE Auskunft. Jetzt eine Kachel in der
Sprache der Startseite.

Das Formular "Neuer Termin" stand im Quelltext ZWISCHEN den Abschnitten
und waere mitgenommen worden. Der Wiederholungs-Abschnitt ist deshalb
nach oben gewandert, das Formular steht hinter der Kachel -- inhaltlich
ohnehin die bessere Ordnung: erst lesen, was kommt, dann etwas anlegen.
Sind alle drei Abschnitte leer, verschwindet die Kachel; `:has()` fragt
das ab, ohne eine Zeile JavaScript.

DER REPORT: Die vier Abschnitte sind jetzt Sammelkacheln, die kleinen
Zahlenkarten liegen sichtbar darin. Vorher schwebten siebzehn Karten in
einer Flaeche, ohne dass man sah, welche zu welcher Frage gehoert.

UND DABEI EIN ECHTER FEHLER, DER NICHT DAS WAR, WONACH ER AUSSAH.
In Filipes Bild standen die Zahlen unter "Was blockiert?" nur zur
oberen Haelfte da -- die Aufgabenliste darunter schien sie zu
ueberdecken. Nachgemessen liegt die Liste sauber unter dem Raster
(543..594 gegen 594..802, kein Ueberlappen). Herausgeragt ist die ZAHL
SELBST: `.kachel__zahl` ist `position: absolute` und damit fuer die
Hoehenrechnung der Karte unsichtbar. Bei 27 px Schrift in einer 51 px
hohen Karte steht sie 17 px unten ueber -- und was ueber den Rand steht,
verdeckt das Naechste.

Sechs von siebzehn Karten waren betroffen: genau die in Bloecken, deren
Raster nur eine Zeile hat und deshalb niedriger ausfaellt. In den
anderen war die Zeile hoch genug, dort fiel es nie auf. Der Fehler war
immer da und nur manchmal sichtbar.

Behoben ueber eine Mindesthoehe -- sie sagt der Karte, wie viel Platz
ihr Inhalt WIRKLICH braucht. Die Zahl kleiner zu machen waere die
bequemere und die falsche Antwort: Sie ist die Aussage der Karte.
Nachgemessen: 6 -> 0 Karten mit herausragendem Inhalt.

Dazu mehr Luft: 180 px Mindestbreite statt 158. Gemessen lagen in ALLEN
17 Karten Name und Zahl unter sechs Pixel auseinander.

Beide Regeln stehen in report.css bzw. kalender.css, nicht in der
Modulliste: `.block` gibt es auch auf automation.html, dort sind es
Formularbloecke. Die Datei ist die Bedingung.

pruef-kalender EXIT=0 (84), pruef-serien EXIT=0 (69),
pruef-css-klassen EXIT=0 (28), pruef-start-ansicht EXIT=0 (143).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 23:06:53 +02:00
DogFatherGitandClaude Opus 5 7bec3ea80c Sekunden als Punkte, Ringe gestaffelt, silberner Rand weg
Filipe: "ich will aber dass die sekunden wie punkte sind, die minuten
breiter und die stunden noch breiter … den silbernen rand weg bitte den
will ich nicht … es soll nichts verschwommen aussehen oder so, im
gegenteil, richtig scharf und perfekt."

DER SILBERNE RING IST WEG. Er war die breiteste Flaeche der ganzen Uhr
und damit das Erste, was das Auge traf -- ausgerechnet der Teil, der
nichts anzeigt. Jetzt dunkles Metall; die drei Bahnen sind das Hellste
im Bild. Die Skalenstriche bleiben, sie geben Mass ohne zu fuellen.

DIE SEKUNDE IST EINE PUNKTREIHE. Sechzig Punkte, einer je Sekunde --
der schnellste Wert wird zaehlbar statt nur gewachsen. Das ist auch
ehrlicher: Die Sekunde SPRINGT, ein durchgehender Bogen behauptet einen
fliessenden Wert.

DIE BREITEN STAFFELN SICH: 3,2 / 5 / 7 statt 3 / 3,4 / 4. Die alten
Werte waren rechnerisch verschieden und im Bild nicht zu unterscheiden
-- ein Unterschied unter einem Pixel ist keiner. Jetzt liest man die
Ringe an ihrer STAERKE: je langsamer, desto schwerer.

SCHAERFE STATT NEBEL: Die weichen Scheine lagen mit 7 bis 9 px Radius
ueber den Bahnen wie Dunst. Jetzt 1,5 px -- sie liegen als KANTE an
statt als Wolke. Die Tiefe kommt aus dem Versatz der Lagen, so wie im
Rest dieser Uhr auch.

DREIMAL AN DERSELBEN STELLE DANEBEN, UND JEDES MAL IM BILD GESEHEN:

  1. Der Sekunden-Schweif stand noch im Dokument und war per CSS
     ausgeblendet -- das griff nicht, und ohne `dasharray` zeichnete er
     einen durchgehenden roten Ring um die ganze Uhr. Ein Element, das
     nie sichtbar sein soll, gehoert nicht ins Dokument. Ausblenden ist
     kein Entfernen.
  2. Dann das Punktmuster: n Paare plus Schluss-Luecke sind 2n+1 Werte.
     Bei ungerader Anzahl verdoppelt SVG die Liste und vertauscht dabei
     Striche und Luecken.
  3. Also eine Null angehaengt (`rest 0`) -- Anzahl gerade, Fehler
     blieb. Denn in `dasharray` wechseln sich Strich und Luecke ab: Nach
     2n Werten sitzt der naechste an UNGERADER Stelle und ist ein
     Strich. Der Rest wurde weiter gezeichnet. Richtig ist die Null
     ZUERST (`0 rest`), dann landet die Luecke an gerader Stelle.

UND DIE PRUEFUNG MUSSTE MIT. `pruef-start-ansicht` verglich die
REIHENFOLGE der Farbkanaele im Kachel-Licht. Das setzt voraus, dass die
Kanaele deutlich verschieden sind -- seit der neuen Palette stimmt das
nicht mehr: "Aufgaben" ist Tuerkis (G=191, B=163), gemessen 63 gegen 65.
ZWEI Stufen von 255. Die Reihenfolge kippt dort durch Rundung, und die
Pruefung meldete einen Fehler, wo keiner war.

Sie misst jetzt den FARBWINKEL -- dieselbe Frage ("ist es dieser Ton?"),
ohne die Voraussetzung. 40 Grad Toleranz; die Kachelfarben liegen nach
der Neuberechnung gut 60 Grad auseinander. Dazu eine GEGENPROBE je
Kachel: Der gemessene Ton wird gegen den Gegenton auf dem Farbkreis
gehalten und muss dort anschlagen. Eine Pruefung, die immer bestaetigt,
bestaetigt nichts.

Gemessen: Farbwinkel-Abstaende 13° / 16° / 7° von 40 erlaubten.
pruef-start-ansicht EXIT=0, 140 -> 143 Pruefungen (die drei Gegenproben
sind dazugekommen, keine ist verschwunden). pruef-css-klassen EXIT=0.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 22:55:25 +02:00
DogFatherGitandClaude Opus 5 d694e34fcb Die Uhr nach Filipes Vorbild: LED-Kranz, Anker, rote Anzeige
Filipe hat eine Sci-Fi-Uhr geschickt (1250 px) und gesagt "so wie die".
Unsere ist 164 px gross -- Faktor 7,6. Was uebernehmbar ist, entscheidet
damit nicht der Geschmack, sondern die Groesse:

  UEBERNOMMEN    der blaue LED-Punktkranz aussen (das auffaelligste
                 Merkmal des Vorbilds), die vier Anker bei 12/3/6/9,
                 der rote Grundton der Digitalanzeige.
  NICHT MOEGLICH die Minutenzahlen 00/05/…/55 und die Stundenzahlen
                 1-12. Im Vorbild sind sie rund 30 px hoch; hier waeren
                 es VIER. Zahlen, die man nicht lesen kann, sind kein
                 Zifferblatt, sondern Rauschen -- und sie wuerden die
                 drei Boegen zudecken, die die eigentliche Anzeige sind.

Der Kranz ist ein `repeating-conic-gradient` mit 6-Grad-Takt, aus dem
eine Maske einen schmalen Ring schneidet: 60 Punkte, einer je Sekunde,
in EINER Ebene. Sechzig <span> waeren sechzig Elemente fuer eine Zierde.
Die vier Anker ebenso, mit 90-Grad-Takt.

EINE FALSCHE BEGRUENDUNG, VON DER EIGENEN RECHNUNG WIDERLEGT: Ich hatte
in den Kommentar geschrieben, reines Neonrot wie im Vorbild "reisse den
Kontrast" und liege bei 4,0:1. Nachgerechnet sind es 5,27:1 -- es haelt
die Grenze von 4,5. Die schoenere Begruendung war die falsche.

Die Entscheidung bleibt trotzdem, nur mit dem echten Grund: Diese Uhr
steht DAUERHAFT im Bild einer Seite, an der gearbeitet wird. Reines
gesaettigtes Rot auf Schwarz ermuedet bei stundenlangem
Nebenherschauen, auch wenn es messbar lesbar ist -- genau das meint die
Hausregel "augenschonend", und das deckt keine Kontrastzahl ab. Die
Ziffern sind deshalb ein sehr helles Rotweiss (15,9:1), das seinen
roten Charakter aus dem Schein im Textschatten bekommt. Man liest
"rote Digitalanzeige", ohne stundenlang in eine Leuchtreklame zu sehen.

Aus demselben Grund liegt das Blau der LEDs bei rund 53 % Deckkraft:
Die Anmutung kommt vom Aufbau, nicht von der Grellheit.

pruef-start-ansicht EXIT=0 (140), pruef-css-klassen EXIT=0 (28).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 18:21:08 +02:00
DogFatherGitandClaude Opus 5 e2bd6d4dc4 Die Uhr bekommt Kometenschweife -- und die Koepfe gleiten, statt zu springen
Filipe: "nehm diese uhr bitte und passe sie so gut wie es geht an, auch
die lichter von sekunden, minuten und stunden perfekt anpassen ...
überrasch mich."

ZWEI DINGE, DIE EINE UHR LEBENDIG MACHEN.

1. DER KOMETENSCHWEIF. Ein Bogen in gleichmaessiger Farbe zeigt einen
   STAND. Ein Bogen, der zur Spitze hin heller wird, zeigt eine
   RICHTUNG -- man sieht ohne Nachdenken, wo "jetzt" ist und wohin es
   laeuft. Bei drei Ringen uebereinander ist das der Unterschied
   zwischen Ablesen und Erkennen.

   Gebaut als zweites, kuerzeres Segment ueber dem Bogen: die letzten
   rund 40 Grad, heller, mit runder Kappe. Ein Verlauf ENTLANG der Bahn
   geht in SVG nicht -- `linearGradient` folgt einer Geraden, keiner
   Kurve. Zwei Lagen sind der ehrliche Weg dorthin.

   Die Lage wird gerechnet, nicht geschaetzt: Bei Umfang U, Fortschritt
   a und Schweiflaenge s soll das Segment von (aU - s) bis aU liegen.
   Mit `dasharray: s, U-s` beginnt das sichtbare Stueck bei (U - offset),
   also ist offset = U*(1-a) + s. Die Laenge wird bei kurzen Boegen
   mitgekuerzt -- sonst haenge der Schweif am Anfang einer Minute am
   ENDE des Kreises, sichtbar als heller Strich bei zwoelf Uhr.

2. DIE KOEPFE GLEITEN. Bisher sprangen sie einmal je Sekunde. Jetzt
   uebernimmt der Browser die Bewegung dazwischen (Ueberblendung von
   0,92 s) -- das Skript rechnet weiterhin nur EINMAL je Sekunde. Sechzig
   Bildberechnungen je Sekunde wuerden auf einer stundenlang offenen
   Seite den Rechner warm halten; diese Loesung kostet nichts.

ZWEI FEHLER DABEI, BEIDE NUR IM BILD ZU SEHEN:

  Der erste Versuch rechnete die Winkel aus der vollen Unixzeit, damit
  sie immer weiterwachsen (sonst liefe die Ueberblendung einmal je
  Minute rueckwaerts durchs Zifferblatt). Ergebnis:
  `rotate(1.07333e+10deg)` -- Exponentialschreibweise, Nachkommastellen
  weg. Die Koepfe standen sichtbar neben ihren Boegen, der rote auf der
  anderen Seite der Uhr. Jetzt zaehlt eine eigene Uhr ab dem ersten
  Takt: klein genug zum Rechnen, wachsend genug fuer die Ueberblendung.

  Und ich hatte den Schweifen `rotate(-90deg)` gegeben, damit sie bei
  zwoelf beginnen -- das SVG ist aber bereits gedreht. Sie standen
  dadurch exakt eine Vierteldrehung daneben: oben links, waehrend die
  Boegen oben rechts endeten.

NACHGEMESSEN, in Grad statt nach Augenmass:
  Kopf gegen Bogenende      Abweichung 0,00° / 0,00° / 0,03°
  Schweifende gegen Bogen   Abweichung 0,0° / 0,0° / 0,0°

pruef-start-ansicht EXIT=0 (140), pruef-css-klassen EXIT=0 (28).
Bei `prefers-reduced-motion` gleiten die Koepfe nicht -- sie springen
dann wie vorher.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 18:12:26 +02:00
DogFatherGitandClaude Opus 5 4c0ff5caa9 Die vier Call-Reiter stehen bei jeder Rolle -- und die Tagesliste bekommt die Fase
Filipe mit zwei Bildschirmfotos nebeneinander: "wieso bei den scouts so
und bei den manager so?" Bei Patrick stand EINE Tafel ueber die volle
Breite, bei Schulle vier nebeneinander.

DIE URSACHE war zweimal derselbe Satz Code an zwei Stellen in calls.js:

  `if (!liste.length) continue;`   eine leere Gruppe wurde nicht gebaut
  `... return;`                     sind ALLE leer, gab es nur einen Satz

Wer nichts Offenes hat, sah damit nicht "weniger", sondern eine anders
AUFGETEILTE Seite: Bei einer Tafel zieht sich diese ueber die ganze
Reihe. Genau derselbe Fehler wie bei den Aufgabenzahlen auf der
Startseite heute -- und dieselbe Loesung: Die Tafel bleibt stehen, wird
gedaempft und zeigt eine Null. "Protokoll fehlt: 0" ist eine Aussage,
ein fehlender Reiter ist keine. Leere Tafeln starten zugeklappt --
aufklappen wuerde nur eine leere Liste zeigen.

Der Hinweis "Noch keine Calls" bleibt, er ist nuetzlich, und steht jetzt
UEBER den vier Tafeln statt an ihrer Stelle.

DABEI EINEN ZWEITEN FEHLER GEBAUT UND GESEHEN: Der Hinweis wurde damit
zum Geschwister der Tafeln, und `.call-brett` ist ein Flex-Kasten in
EINER Reihe -- er nahm sich eine Spalte und quetschte die vier Tafeln
daneben auf je 80 px. Im Bildschirmfoto standen vier Stummel neben einem
breiten Satz. Behoben mit `flex-wrap: wrap` und voller Breite fuer den
Hinweis; nachgemessen stehen die vier jetzt bei je 280 px.

DAZU EIN BEFUND AUS DEM FORMVERGLEICH ueber alle fuenf Rollen:
`.tagesliste__punkt` (die Terminzeilen auf der Startseite) trug noch
runde Ecken -- direkt unter Kacheln mit Fase. Sie bekommt den Zuschnitt
von Hand, nicht ueber die Modulliste: `::before` traegt die Farbkante
links, die sagt, um welche Art Termin es geht, und die Modulliste
braucht dasselbe Pseudo-Element fuer ihre Eckwinkel.

NACHGEMESSEN ueber drei Rollen: scout 4 Reiter, admin 4, creator 4 --
alle mit derselben Aufteilung.
pruef-abbrechen-optik EXIT=0 (27), pruef-start-ansicht EXIT=0 (140),
pruef-css-klassen EXIT=0 (28).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 18:03:54 +02:00
DogFatherGitandClaude Opus 5 da274f7825 Die Dialoge bekommen die Fase -- und einer war ueberhaupt nicht gestaltet
Filipe: "es soll bei jedem nicht nur bei patrick sondern bei jedem die
neue stile haben wie bei mir."

Mein Durchlauf ueber 18 Seiten und fuenf Rollen hatte die DIALOGE
ausdruecklich ausgenommen -- und genau dort lag noch etwas.

1. `.dialog` trug runde Ecken (4px 20px 20px 4px). Er bekommt jetzt
   dieselbe Fase wie alles andere. NICHT ueber die Modulliste: Die
   belegt `::before` und `::after` fuer die Eckwinkel, und beide sind
   hier schon vergeben -- an die Leuchtschiene links und den Lichtsaum.
   Beides gegen zwei Winkel zu tauschen waere ein Rueckschritt, also
   nur der Zuschnitt von Hand, mit derselben Groesse `--fase`.

2. DER WECKER-DIALOG WAR GAR NICHT GESTALTET. Gefunden beim Nachsehen,
   welche Dialoge nicht `.dialog` heissen: Dieser traegt `.tagdialog`,
   und diese Klasse stand in KEINER Stilvorlage. Gemessen bekam er vom
   Browser:

     Hintergrund  rgb(18, 18, 18)   flaches Systemschwarz
     Rand         3 px              Systemrahmen
     Fase         keine
     Raster       keins

   Er sah aus wie ein Fenster des Betriebssystems mitten im Workspace --
   auf JEDER Rolle, denn den Wecker haben alle. Aufgefallen ist es nie,
   weil er nur aufgeht, wenn man die Glocke an einem Termin drueckt.
   Nebenbei stand das Schliesskreuz unter der Ueberschrift statt daneben:
   Auch `.tagdialog__kopf` war ohne Regel.

DAS IST DER GRUND, WARUM DER ERSTE DURCHLAUF "0 im alten Muster" ergab
und trotzdem nicht die ganze Wahrheit war: Meine Messung suchte
Elemente mit runden ECKEN. Ein Baustein ganz ohne Gestaltung hat keine
runden Ecken -- er faellt durch dasselbe Sieb. Eine Suche findet nur,
wonach sie fragt.

pruef-kalender EXIT=0 (84), pruef-wecker EXIT=0 (20),
pruef-css-klassen EXIT=0 (28), pruef-start-ansicht EXIT=0 (140).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 17:49:41 +02:00
DogFatherGitandClaude Opus 5 bd21062d29 Alle Seiten folgen derselben Form -- gemessen ueber 18 Seiten und fuenf Rollen
Filipe: "die seiten sollen bei jedem aussehen wie bei mir, bei patrick
zumbeispiel sieht sehr viel noch nach dem alten muster aus ... alles was
sie sehen soll dan auch nach der neuen struktur aufgebaut sein."

GEMESSEN STATT GESCHAUT. Das "alte Muster" ist praezise benennbar: runde
Ecken (border-radius 18px) statt der gefraesten Fase (clip-path polygon
mit 18px). Damit laesst es sich SUCHEN, nicht nur ahnen -- ein Durchlauf
ueber alle 18 Seiten in allen fuenf Rollen, der jedes Element ab
260x90 px meldet, das eine eigene Flaeche und runde Ecken hat.

  vorher   5 Klassen im alten Muster, 90 Seitenaufrufe
  jetzt    0 Klassen

DER GROESSTE EINZELPOSTEN war der Seitenkopf. `.kopf-zeile` trug runde
Ecken -- auf VIERZEHN Seiten das erste, was man sieht, direkt neben
Kacheln mit Fase. Dazu `.k-kopf` (Kalender), `.steckbrief`,
`.k-anlasskarte`, `.k-raster`, `.entscheidung` und die
Formulargruppen auf der Profilseite.

ZWEI SELEKTOREN MIT BEDACHT, weil derselbe Klassenname zweierlei meint:

  `.gruppe[data-gruppe]`  nur die Reiter auf der Calls-Seite. Auf der
                          Startseite heissen die Bereichsgruppen ebenso,
                          sind aber BEHAELTER fuer Kacheln und duerfen
                          selbst keine sein. `data-gruppe` setzt
                          ausschliesslich calls.js -- nachgeprueft.
  `fieldset.gruppe`       nur die Formularbloecke auf profil.html. Die
                          Startseite baut `section.gruppe`. Das Element
                          unterscheidet sie sauber, die Klasse nicht.

BEINAHE FALSCH GEMACHT: Ich war sicher, `.steckbrief` und
`.k-anlasskarte` staenden bereits in der Modulliste, und wollte
weitersuchen, warum die Regel bei ihnen nicht greift. Nachgesehen: Sie
standen gar nicht drin -- ich hatte sie mit `.k-listentag` und einer
Liste aus kopf.js verwechselt. Eine plausible Erinnerung ersetzt keinen
Blick in die Datei.

DIE MODULLISTE STEHT SIEBENMAL WORTGLEICH. Alle sieben ergaenzt;
pruef-css-klassen prueft "alle sieben Kopien sind Zeichen fuer Zeichen
gleich" und zaehlt jetzt 43 Klassen statt 36.

GEPRUEFT:
  90 Seitenaufrufe (18 Seiten x 5 Rollen) -> 0 Bausteine im alten Muster
  36 Seitenaufrufe auf 360/390/412 px      -> 0 px waagerechter Ueberstand
  pruef-css-klassen EXIT=0, pruef-start-ansicht EXIT=0 (140),
  pruef-rollen EXIT=0 (97), pruef-abbrechen-optik EXIT=0 (27)

Die Handy-Messung gezielt selbst gefahren statt pruef-handy zu starten:
Die eine Frage, die diese Aenderung aufwirft, ist der Ueberstand -- in
40 Sekunden beantwortet statt in drei Minuten.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 17:21:44 +02:00
DogFatherGitandClaude Opus 5 cba46e79e6 Jede Rolle sieht dieselben Kategorien -- und die Reiter werden zu Kacheln
Filipe, mit Bildschirmfoto: "diese beiden kategorien sollen bei jedem in
jeder rolle gleich sein ... alles was kacheln ist und so soll gleich sein."

ERSTENS: DIE ZAHLENREIHE VERSCHWAND BEI EINER ROLLE.

Nachgemessen ueber alle fuenf Rollen sah Spicy Media als EINZIGE keine
Zahlenreihe, sondern einen Satz -- die anderen vier sahen sieben
Kategorien:

  spicy     0 Zahlen (Leer-Hinweis statt Zahlen)
  admin     7 Zahlen
  manager   7 Zahlen
  scout     7 Zahlen
  creator   7 Zahlen

Die Ursache war eine gut gemeinte Regel: "Sechs Nullen nebeneinander
sind kein Bericht, sondern Rauschen" -- bei Summe null wurde die ganze
Reihe geloescht. Der Gedanke stimmt, die Folge nicht: Wer zwischen zwei
Rollen wechselt, findet die Seite anders aufgebaut vor und sucht, was
fehlt.

Jetzt steht die Reihe IMMER, mit denselben sieben Kategorien fuer alle.
Ist wirklich nichts offen, wird sie GEDAEMPFT (weniger Deckkraft, kein
Warnrot, Zahlen ohne Leuchten) und der Satz steht ZUSAETZLICH darunter
statt an ihrer Stelle. Gedaempft ist auch eine Antwort, nur eine leise --
und die Form der Seite bleibt ueber alle Rollen gleich.
Nachgemessen: alle fuenf zeigen jetzt dieselben sieben.

ZWEITENS: DIE REITER AUF DER CALLS-SEITE WAREN KEINE KACHELN.

Gemessen: Eine Kachel traegt `clip-path: polygon(18px 0 …)` -- die
gefraeste Fase -- plus Innenschatten. Die Reiter hatten `clip-path: none`
und nur einen feinen Lichtrand. Sie standen als einzige Bausteine
ausserhalb der gemeinsamen Sprache.

Sie sind jetzt in der Modulliste von module.css. Der Selektor ist
`.gruppe[data-gruppe]` und nicht `.gruppe`: Auf der Startseite heissen
die Bereichsgruppen genauso, sind aber BEHAELTER fuer Kacheln und
duerfen selbst keine sein. `data-gruppe` setzt ausschliesslich calls.js
-- nachgeprueft, nicht angenommen.

DIE MODULLISTE STEHT SIEBENMAL WORTGLEICH in der Datei. Alle sieben
wurden ergaenzt; `pruef-css-klassen` prueft genau das ("alle sieben
Kopien sind Zeichen fuer Zeichen gleich") und haette einen vergessenen
Eintrag gemeldet.

UND SIE HAT NOCH ETWAS GEMELDET, einen Fehler von heute Nachmittag:
".rs-funkel -- fehlt auf 1 Seite (index.html)". Beim Verdoppeln des
Rollen-Sprites auf die Anmeldeseite hatte ich die Gestaltung dazu nicht
mitgenommen; sie lag in personen.css, die index.html gar nicht laedt.
Der Manager-Stern stand dort ohne seinen Glanz. Die Regeln liegen jetzt
in gate.css -- auf allen 19 Seiten. Derselbe Fehler wie beim Sprite
selbst, nur eine Ebene hoeher: Wer etwas verdoppelt, muss alles
mitnehmen, was daran haengt.

pruef-css-klassen EXIT=0, pruef-start-ansicht EXIT=0 (140),
pruef-abbrechen-optik EXIT=0 (27).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 16:44:22 +02:00
DogFatherGitandClaude Opus 5 469bbe9d07 Babyblau statt Gold, lila Stern, sichtbarer Husky -- und eine zweite Variable
Drei Ansagen von Filipe nach dem Bildschirmfoto, alle an derselben Liste.

screen2: "die hauptfarbe von der kategorie dogfather soll babyblausilber
sein bitte." -- DAS WAR EIN FEHLER VON MIR, und zwar derselbe wie schon
zweimal heute: Beim Umstellen auf die zentralen Rollenfarben habe ich
`--rf` erwischt, aber `--rton` uebersehen. Die faerbt die GEWAEHLTE
Rolle in der Tafel, und dort standen `--k-gold` (admin) und `--k-mittel`
(manager) unveraendert. Deshalb leuchteten beide goldbraun, obwohl die
Farben laengst umgestellt waren. Zwei Variablen fuer dieselbe Sache, nur
eine angefasst -- wie die doppelte Groessenangabe beim Wasserzeichen und
wie die zweite Kopie der Rollenzeichen in index.html. Jetzt kommen beide
aus derselben Quelle; nachgemessen traegt admin rgba(63,189,245).

screen3: "die hauptfarbe von denen ist lila, der stern soll so bleiben
aber was gelb ist soll lila werden." -- Die FORM bleibt, nur die Farbe
wechselt. Das ist auch stimmiger: Der Manager traegt Lila als
Rollenfarbe, ein goldener Stern daneben war die einzige Stelle, an der
Zeichen und Rolle auseinandergingen. Die Wechsel hell/dunkel im Verlauf
bleiben -- sie machen aus einer Flaeche einen Koerper.

screen1: "der husky soll viel besser aussehen und zu sehen sein." Zwei
Gruende, warum er unterging, und beide sind behoben:

  Die OHREN waren nur angedeutet und gingen in der silbernen Flaeche
  auf -- dabei erkennt man einen Husky zuerst daran. Sie sind jetzt
  dunkel ausgelegt, mit hellem Innenohr.
  Die GESICHTSMASKE fehlte ganz. Ohne sie ist der Umriss nur eine
  spitze Form mit zwei Punkten; mit ihr ist es ein Gesicht.

Dazu 21 -> 27 px fuer alle fuenf Zeichen: rund 65 % mehr Flaeche, ohne
dass die Zeile ihre Hoehe aendert. Bei 21 px lagen Ohren, Maske und
Augen auf drei bis vier Bildpunkten -- da hilft keine Zeichnung.

Beide Dateien geaendert, nicht nur eine: Das Sprite steht seit heute in
personen.html UND index.html. Genau diese Doppelung hatte den letzten
Fehler verursacht.

pruef-rollen EXIT=0 (97), pruef-start-ansicht EXIT=0 (140).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 14:07:30 +02:00
DogFatherGitandClaude Opus 5 1d0451948a Die drei Bahnen der Uhr gluehen von innen -- und die Stunde wird Bronze
Filipe: "die minuten sekunden und stunden soll viel spezieller, krasser
und geiler sein, noch vieeeel mehr."

Die Bahnen waren flache Striche in einem Verlauf -- sauber gebaut, aber
ohne Koerper. Drei Aenderungen, und alle drei arbeiten mit LICHT statt
mit mehr Farbe:

1. EIGENLEUCHTEN je Bahn, in ihrer eigenen Farbe. Auf einem schwarzen
   Zifferblatt kann man einen Strich entweder heller machen (dann
   blendet er) oder leuchten lassen (dann wirkt er wie eine Anzeige,
   die Licht abgibt). Zwei Schatten je Bahn: der enge gibt die Kante,
   der weite die Aura.

2. DIE STUNDE WIRD WARM. Sie lief in Schwarzsilber und war damit dem
   Zifferblatt am aehnlichsten -- ausgerechnet die Bahn, die man am
   haeufigsten abliest. Jetzt Bronze: warm gegen das kalte Blau der
   Minute und das Rot der Sekunde. Damit sind alle drei auf einen Blick
   zu trennen. Die Wechsel hell/dunkel im Verlauf bleiben, sie sind es,
   die aus einem Strich Metall machen.

3. DIE PERLEN sind die Spitzen -- dort schaut man hin. Sie bekommen
   denselben Schein wie ihre Bahn, nur staerker, und einen weissen
   Kern: der Unterschied zwischen einem farbigen Punkt und einem Licht.

UND EINMAL ZURUECKGENOMMEN, nach dem Blick aufs Bild: Die Sekunde bekam
zuerst denselben Schein wie die anderen beiden. Sie ist aber die
laengste Bahn, die hellste Farbe UND die einzige, die sich sichtbar
bewegt -- im Bildschirmfoto war sie ein roter Reifen, neben dem die
Uhrzeit selbst zurueckstand. Ihr Leuchten liegt jetzt eine Stufe
niedriger als das von Minute und Stunde. Gesehen, nicht gerechnet.

Kein Pulsieren: Die Uhr steht dauerhaft im Bild, ein animiertes Leuchten
am Bildrand ist genau das, was die Hausregel verbietet. Bei
`prefers-reduced-motion` entfaellt der Schein ganz -- die Bahnen bleiben
in voller Farbe stehen.

pruef-start-ansicht EXIT=0, 140 Pruefungen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 14:02:05 +02:00
DogFatherGitandClaude Opus 5 80dbb08eee Die Anmeldeseite bekommt die neuen Rollenzeichen -- sie war vergessen worden
Filipe hat es im Bildschirmfoto gesehen: Auf der Anmeldeseite standen
weiter die alten, einfarbigen Zeichen -- rosa Chili, GELBER Husky,
violetter Stern, Schild mit Haken, Person-Silhouette. Die neuen lagen zu
dem Zeitpunkt seit Stunden im Haus, nur eben ausschliesslich in
personen.html.

DER GRUND ist eine Doppelung, die man dem Code nicht ansieht: index.html
trug die Zeichen als EIGENE Kopien im Quelltext, nicht als Verweis auf
ein gemeinsames Sprite. Wer eines von beiden aendert, aendert das andere
nicht -- und merkt es nicht, weil beide Stellen fuer sich richtig
aussehen. Dieselbe Sorte Fehler wie die doppelte Groessenangabe beim
Wasserzeichen heute frueh, nur ueber zwei Dateien verteilt statt ueber
3600 Zeilen.

Gefunden hat es kein Prueflauf, sondern Filipes Blick auf die Seite. Das
ist der Grund, warum ein Bildschirmfoto mehr wert ist als eine gruene
Zahl: Die Pruefungen sagten die ganze Zeit "in Ordnung" -- sie pruefen,
dass Zeichen DA sind, nicht welche.

Jetzt traegt index.html dasselbe Sprite (aus personen.html uebernommen,
nicht abgeschrieben) und verweist mit <use> darauf. Die Zeichen gibt es
damit nur noch einmal im Haus.

DAS CSS MUSSTE MIT: Wie bei `.rollenwahl__symbol` setzte
`.rolle__zeichen` ein `fill: none` und ein `stroke` in der Rollenfarbe.
Beides wird an die Pfade vererbt -- jedes Zeichen waere von einem 1,7 px
dicken Rand ueberzogen und seine Verlaeufe uebermalt worden. Die
gewaehlte Rolle hebt sich jetzt ueber Groesse und Schein ab statt ueber
die Farbe: Die gehoert dem Zeichen.

Nachgemessen: 5 von 5 Zeichen kommen aus dem Sprite. pruef-rollen
EXIT=0 (97), pruef-start-ansicht EXIT=0 (140).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 13:56:36 +02:00
DogFatherGitandClaude Opus 5 bcfe0b93f9 Die Fugen im Kalender werden dunkel statt hell
Filipe, screen18: "die linien zwischen den kacheln und der rand die so
kras durchsichtig sind, ich will dass dass die viel dunkler sind und die
kacheln vom kalender selber sollen viel krasser und geiler aussehen."

WOHER DIE LINIEN KOMMEN, und das erklaert den Fehler: Sie sind gar nicht
gezeichnet. Das Raster hat `gap: 1px` und darunter eine Flaeche -- in den
Luecken zwischen den Tagen scheint diese Flaeche durch, DAS sind die
Linien. Sie trugen `var(--rand)`, einen hellen halbdurchsichtigen Ton,
der fuer Raender AUF dunklem Grund gedacht ist. Zwischen zwei ohnehin
dunklen Kacheln wirkt derselbe Ton wie ein heller Schleier -- genau das,
was Filipe "kras durchsichtig" nennt.

Jetzt ein eigener tiefer Ton (#05070c): Die Fuge ist DUNKLER als die
Kacheln daneben, nicht heller. Damit sieht sie eingefraest aus statt
aufgemalt -- dieselbe Ueberlegung wie bei den Fasen auf der Startseite.
Der aeussere Rand bekommt eine feine helle Innenkante, sonst verlaeuft
der Kalender am Rand ins Nichts.

DIE TAGE BEKOMMEN TIEFE: ein leichter Verlauf von oben nach unten und
ein Lichtsaum an der Oberkante -- Licht kommt von oben, also ist die
Oberkante hell und die Flaeche faellt ab.

BEWUSST SCHWACH (der Verlauf umfasst rund vier Prozent Helligkeit): Ein
Monatsraster hat 35 bis 42 dieser Felder nebeneinander. Was bei einer
einzelnen Kachel wirkt, wird hier vierzigfach zu Unruhe. Wochenende und
fremde Monate bleiben ruhiger und heben sich ueber WENIGER LICHT ab,
nicht ueber eine andere Farbe.

Nachgemessen am laufenden Kalender: Fugenfarbe rgb(5, 7, 12), 35 Tage im
Raster. pruef-kalender EXIT=0, 84 Pruefungen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 13:49:19 +02:00
DogFatherGitandClaude Opus 5 e282ad3b44 Der Anmelde-Knopf traegt beide Marken -- und wurde erst durch Nachrechnen lesbar
Filipe, screen28: "dieser anmelde button soll noch viel spezieller sein
bitte. und viel geiler."

NUR DIESER EINE KNOPF. Er traegt die Klasse `.knopf`, die im Workspace an
Dutzenden Stellen haengt -- wer sie aendert, aendert jeden Knopf im Haus.
Die Regel greift deshalb ueber `#knopf` und laesst alle anderen in Ruhe.

Der Verlauf laeuft vom Chili-Rot von Spicy Media in das Blau von Dogi --
dieselbe Klammer wie im Schriftzug der Kopfleiste, und hier besonders am
Platz: Dieser Knopf ist die Tuer ins Haus.

UND DANN HAT MICH DIE RECHNUNG WIDERLEGT. Der erste Entwurf nahm die
Marken-Toene direkt (#d94a3f bis #7ec8f2). Er sah gut aus -- genau das
ist die Falle. Nachgerechnet lag weisser Text darauf bei:

  #d94a3f  4,20:1     #6ca8d8  2,55:1
  #e2664a  3,37:1     #7ec8f2  1,84:1

Auf dem hellsten Punkt also nicht einmal beim halben Mindestwert. Ich
hatte im Kommentar daneben "ueber 4,5:1 an jeder Stelle" behauptet, ohne
es nachzurechnen. Der Knopf waere schoen und unlesbar gewesen.

Jeder Stuetzpunkt ist jetzt so weit abgedunkelt, bis weisser Text 4,6:1
erreicht -- knapp ueber der Grenze, damit Rundungen nicht darunter
rutschen. Die Farben bleiben erkennbar Rot und Blau, sie sind nur tiefer.
Schlechtester Wert jetzt 4,63:1.

MERKSATZ, der auch fuer jeden naechsten Verlauf gilt: Ein Verlauf ist so
lesbar wie sein HELLSTER Punkt, nicht wie sein Durchschnitt. Beim
Textverlauf in der Kopfleiste war es dieselbe Regel mit umgekehrtem
Vorzeichen -- dort zaehlt der dunkelste.

Der Glanz wandert beim Ueberfahren statt zu pulsieren (wie Manager-Stern
und Kalender-Knopf), bei `prefers-reduced-motion` entfaellt er. Waehrend
der Anmeldung wird der Knopf ruhig gestellt, damit der Ladepunkt die
Aufmerksamkeit bekommt und nicht der Glanz.

pruef-start-ansicht EXIT=0 (140), pruef-css-klassen EXIT=0.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 13:19:47 +02:00
DogFatherGitandClaude Opus 5 c262537b89 Der eigene Name leuchtet in der eigenen Rollenfarbe
Filipe, screen35: "die begrüßungen sollen auch viel krasser und geiler
sein, so richtig auffällig. so dass die leute motivation bekommen weil es
so geil aussieht."

NICHT UEBER DIE GROESSE, und das ist der Kern. Genau die habe ich heute
frueh von 88 auf 56 px zurueckgenommen: In der Anrede-Pille steckt ein
<h1> mit Titelgroesse, dadurch standen ZWEI Ueberschriften uebereinander.
Sie jetzt wieder aufzublasen hiesse, denselben Fehler ein zweites Mal zu
machen. "Auffaellig" heisst ohnehin nicht "gross", sondern "hebt sich ab".

Der Name hebt sich ueber die FARBE ab: Er traegt einen Verlauf in
`--r-haupt`, der Farbe der angemeldeten Rolle. Jeder sieht damit seinen
eigenen Namen in seiner eigenen Farbe -- nachgemessen: DogFather #7ec8f2
(babyblau), Scout #5fc99a (gruen), Creator #c79a6d (bronze). Das ist der
Unterschied zwischen "da steht mein Name" und "das hier ist meins".

Der Gruss davor bleibt bewusst leise und farblos. Wenn beides leuchtet,
leuchtet nichts -- die Betonung gehoert dem Namen, nicht der Uhrzeit.

Mit derselben Sicherung wie beim Schriftzug in der Kopfleiste: `color`
steht zuerst und sichtbar da, Verlauf und durchsichtige Fuellung stehen
nur im @supports-Block, und bei `forced-colors: active` wird alles
zurueckgenommen. Durchsichtige Schrift ohne Rueckfallwert waere ein
Ausfall, kein Schoenheitsfehler.

Das Leuchten liegt als `drop-shadow` HINTER der Schrift -- es gibt dem
Namen Tiefe, ohne ihn zu vergroessern.

pruef-start-ansicht EXIT=0, 140 Pruefungen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 13:16:10 +02:00
DogFatherGitandClaude Opus 5 8b317b23e2 Der Weg in den Kalender ist ein Knopf, kein Nebensatz
Filipe, screen33: "der kalender button da in der kachel oben rechts, der
soll viel auffälliger sein und viel krasser und geiler."

Er sah aus wie ein Verweis im Fliesstext -- kleine Schrift, kein Rahmen,
keine Flaeche. Neben der fetten Ueberschrift "Heute" verschwand er,
obwohl er die einzige Handlung in dieser Zeile ist.

  vorher   Text in .78rem, ohne Fassung, rund 70x18 px
  jetzt    105x36 px, eigene Flaeche, farbiger Rahmen, Schimmer

ER TRAEGT DEN KALENDER-TON, nicht das allgemeine Blau. Der Knopf fuehrt
in den Kalender, und die Kachel dort hat genau diese Farbe (Nummer 8,
#c06ad0). Wer ihn sieht, weiss ohne zu lesen, wo er landet -- das ist
mehr wert als jede zusaetzliche Verzierung.

Beim Ueberfahren wandert ein heller Streifen darueber. Derselbe Kniff wie
beim Manager-Stern und aus demselben Grund: Glanz ist etwas, das sich
BEWEGT -- ein Auf- und Abblenden waere ein Pulsieren. Der Streifen liegt
in einem eigenen Element, damit er den Text nicht mitfaerbt, und bei
`prefers-reduced-motion` entfaellt er. Der Knopf bleibt dann trotzdem
auffaellig, er glaenzt nur nicht.

`--f` wird mitgesetzt, damit der Schein beim Ueberfahren aus gate.css
aus derselben Farbe kommt statt aus der Vorgabe.

Nachgemessen am laufenden Browser: 105x36 px, Rahmen rgb(192,106,208) bei
48 % Deckkraft, Schrift 13,12 px / 650.
pruef-start-ansicht EXIT=0, 140 Pruefungen -- diesmal GELESEN, bevor
committet wurde, nicht in derselben Befehlskette daneben.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 13:10:16 +02:00
DogFatherGitandClaude Opus 5 80f410f5b8 Deckkraft des Wasserzeichens zurueckgenommen -- die Pruefung hatte recht
NACHTRAG ZU b808e07, und der eigentliche Fehler war meiner: Ich habe die
Pruefung laufen lassen, EXIT=1 gesehen -- und trotzdem committet und
gepusht, weil Pruefung, Commit und Push in EINER Befehlskette standen
und nur durch `;` getrennt waren. Damit lag ein roter Stand in Gitea.

Genau davor warnt meine eigene Notiz seit dem 31.08.2026, dort ging es um
`| tail` in einer &&-Kette: Ein Schritt scheitert, der naechste laeuft
trotzdem, und von aussen sieht alles nach Erfolg aus. Die Lehre gilt
unveraendert -- ein Pruefergebnis muss GELESEN werden, bevor der naechste
Schritt startet, nicht daneben.

INHALTLICH hatte die Pruefung recht und ich nicht. Ich hatte die
Deckkraft von .14 auf .17 gehoben, mit der Begruendung, dieselbe
Deckkraft wirke auf grosser Flaeche blasser. Die Grenze von .15 in
pruef-start-ansicht steht aber aus einem Grund da: Ein Wasserzeichen soll
Hintergrund bleiben und nicht mit dem Text um Aufmerksamkeit ringen.

Filipe wollte das Zeichen GROESSER, nicht LAUTER. Groesser ist es
geblieben -- 63 % mehr sichtbare Flaeche, das war der Auftrag. Die
Lautstaerke war nie gefragt und geht zurueck auf .14.

pruef-start-ansicht EXIT=0, 140 Pruefungen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 13:01:02 +02:00
DogFatherGitandClaude Opus 5 b808e072c0 Das Zeichen der grossen Kachel wird groesser -- und eine zweite Regel fiel auf
Filipe, screen34: "das symbol rechts in der kachel, was so ganz klein ist
das soll viel größer sein bitte!!!"

Nachgemessen war es gar nicht klein: 178 px gegen 133 px bei den normalen
Kacheln, also GROESSER. Es wirkt nur klein, und das ist der eigentliche
Punkt -- die grosse Kachel ist 769 px breit (ueber die volle Reihe rund
1160), die normale 379. Dasselbe Zeichen hat dort doppelt so viel leere
Flaeche um sich und verliert sich darin. Ein Zeichen wirkt nach dem
Anteil der Flaeche, den es fuellt, nicht nach seiner Pixelzahl.

DABEI KAM EINE ZWEITE REGEL ANS LICHT. Fuer dasselbe Element stand die
Groesse an ZWEI Stellen in start.css -- einmal bei den Kachelregeln
(196 px) und 3600 Zeilen spaeter noch einmal (158 px). Gleich starke
Selektoren, also gewinnt der spaetere. Meine erste Vergroesserung blieb
deshalb wirkungslos: gemessen weiterhin 178 px, obwohl im Quelltext 340
stand. Im Code sieht jede der beiden Regeln fuer sich richtig aus; erst
die Zahl am laufenden Browser verraet, dass eine nie zur Wirkung kommt.
Dieselbe Sorte Fehler wie bei `.kopfleiste .marke`, wo `flex` den
Schrumpf-Faktor still zurueckgesetzt hat. Die Groesse steht jetzt nur
noch an einer Stelle.

UND EINMAL ZU WEIT. Der erste Versuch koppelte die Groesse an die
BREITE: `min(46%, 340px)` ergab 384 px auf einer 152 px hohen Kachel.
Im Bildschirmfoto war daraufhin GAR NICHTS mehr zu sehen -- was die
Kachel nicht fasst, schneidet sie ab. Groesser ist hier nicht
automatisch besser. Jetzt an der Hoehe ausgerichtet: 220 px, unten und
rechts angeschnitten, der Grossteil im Bild.

Gemessen wird seitdem die SICHTBARE Flaeche, nicht die Elementgroesse --
das ist die Zahl, auf die es ankommt:
  vorher  rund 158x122 = 19k
  jetzt   204x152      = 31k   (+63 %)

pruef-start-ansicht EXIT=0, 140 Pruefungen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 12:59:33 +02:00
DogFatherGitandClaude Opus 5 1f7761cb69 Die Kopfleiste glueht, die Knoepfe werden rot -- und DogFather sagt, was er tut
Drei Punkte aus der Nachtliste auf einmal, weil sie alle an derselben
Leiste haengen.

screen36: "hintergrund dieser leiste soll auch eine richtig geile
mischung von rot schwarz sein, wie wenn es brennen würde."

GLUT KOMMT VON UNTEN. Ein gleichmaessig roter Balken saehe aus wie eine
Fehlermeldung. Feuer ist unten heiss und oben dunkel -- also liegt das
Rot als flacher Schein an der Unterkante, wird nach oben schwarz und ist
an den Raendern schwaecher als in der Mitte. Zwei uebereinanderliegende
Verlaeufe machen das: einer fuer die Hoehe, einer fuer die Breite. Die
Trennlinie nach unten glueht mit, sonst endet das Feuer an einer grauen
Linie.

Kein Flackern, und das ist Absicht: Diese Leiste steht auf JEDER Seite
und liegt beim Lesen dauernd im Bild. Eine Animation waere ein
Stroboskop am oberen Bildrand. Das Rot bleibt deshalb unter 30 %
Deckkraft -- es glimmt, es leuchtet nicht.

screen5: "die buttons: teilen, suchen und abmelden sollen rot, alle
andere rot töne aber rot."

Vier Knoepfe, vier verschiedene Rottoene -- "alle andere rot töne"
heisst nicht viermal derselbe. Sie laufen von warm nach tief: Teilen im
Chili-Rot der Marke, Chat ruhiger, Suchen glutorange, Abmelden am
dunkelsten. Das ist auch die Reihenfolge, in der man sie braucht, und
Abmelden soll am wenigsten locken.

Gesetzt wird nur `--f`, die Knopffarbe aus gate.css -- sie faerbt
Rahmen, Schimmer und den Schein beim Ueberfahren gleich mit. Fuenf
Eigenschaften je Knopf zu setzen waere vier Gelegenheiten gewesen, eine
zu vergessen.

GERECHNET STATT GEMESSEN: Ein roter Text auf rotem Grund waere der
naheliegende Fehler. Der Text nimmt deshalb nur 22 % der Knopffarbe an
und bleibt sonst hell. Nachgerechnet gegen die HELLSTE Stelle der Glut
(dort ist der Kontrast am schlechtesten): 10,45:1 im schlechtesten Fall,
Grenze ist 4,5. Dafuer braucht es keinen 190-Sekunden-Lauf.

screen27: Unter DogFather steht jetzt "Manager & Technik" statt
"Gesamtuebersicht & Freigaben". Die alte Zeile beschrieb ein RECHT, die
neue eine AUFGABE -- und danach sucht jemand, der vor der Rollenwahl
steht: Er fragt sich nicht, was er duerfte, sondern was er hier tut.

pruef-start-ansicht EXIT=0 (140), pruef-css-klassen EXIT=0.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 12:54:13 +02:00
DogFatherGitandClaude Opus 5 f42f9a7266 21 Kachelfarben neu gerechnet -- keine zwei aehneln sich mehr
Filipe, screen24/25: "viele kacheln haben noch fast die gleiche farben,
ähneln sich sehr und ich will dass du komplett eskalierst ... alle seine
eigenen farben und so dass sie sich nicht ähneln. sehr wichtig nicht
ähneln!!!!"

Er hatte recht, und es liess sich messen statt bereden:

  kleinster Abstand zweier Toene   0,033   (Dateien gegen Creator-Profile)
  Paare unter 0,05 (kaum trennbar)  21 von 210
  Spanne der Helligkeit             0,002

DIE URSACHE WAR EINE GUTE ABSICHT. Die alte Palette lief gleichmaessig
um EINEN Farbring, mit bewusst konstanter Helligkeit und Farbstaerke --
"dadurch wirken alle gleich stark und keine draengt sich vor". Genau das
erzeugt den Fehler: Bleibt alles ausser dem Farbton gleich, ist der
Farbton der einzige Unterschied. 360 Grad auf 21 Kacheln sind 17 Grad,
und 17 Grad sieht man nicht.

Jetzt variieren Helligkeit UND Farbstaerke mit. Zwei Farben mit
aehnlichem Ton stehen trotzdem weit auseinander, weil die eine hell und
satt und die andere dunkel und ruhig ist -- der Abstand bekommt eine
zweite und dritte Dimension.

  kleinster Abstand   0,097   (dreimal so gross)
  Paare unter 0,05    0 von 210
  Helligkeitsspanne   0,242

Gerechnet in OKLab, weil dort der Zahlenabstand dem entspricht, was das
Auge als Unterschied empfindet. Die Auswahl ist eine Suche, kein
Geschmack: erst gierig den jeweils entferntesten Ton nehmen, dann so
lange tauschen, wie der KLEINSTE Abstand dadurch waechst.

Drei Bedingungen halten dabei, und alle drei stehen im Werkzeug als
Abbruch, nicht nur im Bericht:
  lesbar         mindestens 4,5:1 gegen den Grund (schlechteste: 4,50)
  augenschonend  Farbstaerke gedeckelt bei 0,17 -- satt ja, Neon nein
  trennbar       gemessen ueber ALLE Paare, nicht nur ueber Nachbarn im
                 Raster: Auf der Uebersicht stehen dieselben Kacheln in
                 anderer Reihenfolge nebeneinander.

Das Werkzeug bricht ab, wenn eine neue Palette schlechter waere als der
alte Stand (0,0328) -- sonst waere ein schlechter Lauf von einem guten
nicht zu unterscheiden.

pruef-start-ansicht EXIT=0, 140 Pruefungen. Die Farben zusaetzlich am
laufenden Browser abgelesen, nicht nur aus der Datei.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 12:06:30 +02:00
DogFatherGitandClaude Opus 5 ff8ea38595 Die Kopfleiste wird zur Klammer: Chili links, Husky rechts, Spicy & Dogi
Filipe (Nachtliste, screen17): "wo der husky ist soll eine geile rot
gruene peperoni sein, dogfather universe ersetzen durch, Spicy & Dogi.
und der husky von links soll rechts sein. die farben von der peperoni und
von dem husky sollen ueber den text ziehen und sich dan in der mitte
treffen." Dazu screen9: die Zierzeile der Zentrale heisst jetzt
"Spicy Media" statt "Dogfather Universe".

Die Chili steht als BILD (sie ist von sich aus rot mit gruenem Stiel und
soll ihre Farben behalten), der Husky als MASKE (schwarzweiss gezeichnet
waere er auf dunklem Grund ein dunkler Fleck; von der Maske zaehlt nur
die Silhouette, gefuellt mit Silber und Babyblau). Dazwischen laeuft der
Schriftzug von Chili-Rot ueber Silber nach Babyblau -- Treffpunkt in der
Mitte, genau beim "&".

DER VERLAUF IM TEXT IST EINE AUSNAHME MIT SICHERUNG. Direkt darueber
steht seit dem 01.09. "KEIN Farbverlauf IM Text", und der Grund gilt
weiter: Durchsichtige Schrift haengt an einer einzigen Technik, und
faellt die aus, ist der Text WEG statt nur anders gefaerbt (gemessen
damals 1,05:1). Beides geht zusammen, wenn der Verlauf nur eine Zugabe
ist: `color` steht zuerst und voll sichtbar da, Verlauf und
durchsichtige Fuellung stehen NUR in einem @supports-Block (wer es nicht
kann, betritt ihn nicht), und bei `forced-colors: active` wird alles
zurueckgenommen. Die drei Stuetzstellen sind bewusst hell -- beim
Verlauf bestimmt der dunkelste Punkt den schlechtesten Kontrast.

EIN SELEKTOR, DER RICHTIG AUSSAH UND FALSCH WAR. Der Husky sollte nur
auf die Startseite; `body.start` davorzusetzen wirkte naheliegend. Diese
Klasse tragen aber ALLE 18 Seiten -- sie kennzeichnet den Grundstil,
nicht die Startseite. Folge auf den Unterseiten, wo `.marke` den Rueckweg
traegt: Die 22 px des Huskys nahmen dem Text so viel Platz, dass
"Creator Workspace" zu "CREAT…" wurde. Gesehen im Bildschirmfoto, nicht
im Code. Jetzt steht die Regel in heim.css, das ausschliesslich von der
Startseite geladen wird -- die Datei selbst ist die Bedingung.

Nachgemessen dabei, damit es nicht faelschlich mir zugeschrieben wird:
Der Schriftzug auf den Unterseiten ist AUCH IM ALTEN STAND abgeschnitten
(151 px Inhalt auf 91 px Platz). Das ist ein vorbestehender Mangel und
steht auf der offenen Liste, kein Rueckschritt aus diesem Commit.

pruef-start-ansicht angepasst: Sie prueft den Namen im Schriftzug und
erwartete "Dogfather Universe" -- sie hat ihre Arbeit getan und
angeschlagen. EXIT=0, weiterhin 140 Pruefungen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 04:37:51 +02:00
DogFatherGitandClaude Opus 5 963ea492b1 Die fuenf Rollen bekommen eigene Farben und echte Zeichen
Auftrag von Filipe (Nachtliste, screen3): "die farben sollen jeden rollen
angepasst werden ueber die ganze website ... diese farben sollen auch
immer danach bei den rollen benutzt werden", dazu die Zeichen "viel viel
viel realistischer und geiler".

DIE FARBEN STEHEN JETZT AN EINER STELLE. Vorher lagen dieselben Hex-Werte
ueber chat.css, personen.css, kalender.css, start.css und gate.css
verstreut -- 47 Fundstellen, allein in chat.css sechzehn. Wer eine Farbe
aendern wollte, musste sie ueberall finden; wer eine uebersah, hatte zwei
Wahrheiten auf einem Bildschirm. Sie stehen jetzt in gate.css, der
einzigen Datei, die auf allen 19 Seiten liegt, mit je drei Toenen
(haupt/zweit/tief) fuer Flaeche, Verlauf und Schatten.

  spicy    rot        #ef5f57  warmes Chili-Rot, kein Signalrot
  admin    babyblau   #7ec8f2  + Lila #a78bfa als zweiter Ton
  manager  lila       #8a76ff  bleibt
  scout    gruen      #5fc99a  bleibt
  creator  bronze     #c79a6d  + Silber #d8dee9 -- neu

Zwei davon waren inhaltlich falsch: `admin` stand auf Gold und `creator`
auf demselben Blau wie der allgemeine Akzent -- die Rolle war dadurch
nicht von "irgendein Bedienelement" zu unterscheiden. In der
Personenliste fehlten Spicy und Manager ganz, und Creator trug das Lila
des Managers: zwei Rollen sahen in derselben Liste gleich aus.

Umgeschaltet wird am <html> (kopf.js), nicht an einzelnen Bausteinen:
Wer die Farbe an jedem Element einzeln setzt, vergisst das naechste, das
dazukommt.

DIE ZEICHEN TRAGEN IHRE FARBEN SELBST. Vorher hatte jedes genau eine
Farbe (currentColor). "Peperoni rot UND gruen" oder "gruenes Schild mit
einer roten Peperoni drin" ist damit nicht darstellbar, egal wie man
mischt. Jedes Zeichen bringt jetzt eigene Verlaeufe mit: Chili rot mit
gruenem Stiel, Husky in Silber mit blauen Augen (Radialverlauf plus
Lichtpunkt -- ein flacher blauer Punkt sieht aus wie ein Loch), Stern in
Gold mit wanderndem Glanz, Schild gruen mit Chili darin, Creator als
geschliffener Kristall in Lila und Silber statt der alten
Person-Silhouette, die aussah wie ein leeres Benutzerbild.

Das Funkeln des Sterns laeuft ueber eine wandernde Maske, nicht ueber die
Deckkraft: Auf- und Abblenden waere ein Pulsieren, kein Glitzern. 4,5 s
und schwach, damit es in einer Liste aus fuenf Rollen nicht dauerhaft den
Blick zieht -- und bei `prefers-reduced-motion` steht es still.

ZWEI FEHLER, DIE NUR DAS HINSEHEN GEFUNDEN HAT:

1. `.rollenwahl__symbol` setzte `fill: none; stroke: var(--r)`. Beides
   wird an die Pfade VERERBT -- jedes neue Zeichen waere von einem
   1,55 px dicken Rand in der Rollenfarbe ueberzogen worden.

2. Das Sprite stand in einem <svg style="display:none">. Solange die
   Zeichen einfarbig waren, war das harmlos. Ein <linearGradient> in
   einem `display:none`-Teilbaum wird aber NICHT ausgewertet, und ein
   <use> darauf bekommt gar keine Fuellung: Im Bildschirmfoto standen
   fuenf Bruchstuecke -- nur Striche, keine Flaechen. Die Zahlen sagten
   dazu nichts, das Sprite war ja vorhanden. Jetzt ein Kasten ohne
   Groesse: wird gerendert, nimmt keinen Platz.

Gemessen: pruef-rollen 97 Pruefungen EXIT=0, pruef-personen-formular 23
EXIT=0, pruef-start-ansicht EXIT=0, pruef-css-klassen EXIT=0. Farb-
umschaltung am lebenden System nachgesehen: html[data-rolle]=admin ->
--r-haupt = #7ec8f2.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 04:30:12 +02:00
DogFatherGitandClaude Opus 5 863471c3df Die Mitte der Zentrale sitzt jetzt wirklich mittig -- zwei Ursachen, nicht eine
Filipe im Bildschirmfoto: "in der mitte der kachel soll auch alles perfekt
zentriert sein und nicht wie jetzt total verschoben." Gemessen waren es
zwei getrennte Fehler, die zufaellig in dieselbe Richtung zeigten.

ERSTENS: .willkommen__stand trug ein `margin-left: auto` -- ein Rest aus
der Zeit, als die drei Ablesungen RECHTS zwischen Text und Uhr standen.
In einer Flex-Spalte gewinnt ein auto-Rand immer gegen das
`align-items: center` des Elternteils. Bei 1920 px lagen Anrede,
Zierzeile, Titel und Unterzeile alle exakt auf Mitte 960 -- dieser Kasten
allein auf 1129, also 169 px daneben.

Aufgefallen war das schon einmal: In der Media-Query fuer 412 px stand
bereits `margin-left: 0`, mit dem Vermerk "im Bildschirmfoto gesehen,
nicht hergeleitet". Dort wurde das Symptom geflickt und die Ursache blieb
stehen -- auf dem grossen Bildschirm damit unbemerkt weiter. Jetzt ist
die Ursache weg und die Gegenzeile gleich mit: Eine Zeile, die nichts
mehr aufhebt, sieht aus wie Absicht und wird mitgeschleppt.

ZWEITENS, und ohne Messung nicht zu sehen: `.willkommen .unterzeile` ist
laut start.css ein FLEX-Kasten mit Umbruch, damit die Lage hinter der
Rolle stehen und auf dem Handy umbrechen kann. In einem Flex-Kasten
ordnet `text-align` die Elemente aber NICHT an -- es zentriert den Text
innerhalb jedes Elements, waehrend die Elemente selbst links kleben.
In der breiten alten Begruessung fiel das nie auf, weil beide in eine
Zeile passten; die Spalte der Zentrale ist 397 px schmal und bricht
immer um. Gemessen: Rollentext 39,7 px und Lage 58,6 px links der Achse,
auf jeder Fensterbreite gleich. Behoben mit `justify-content: center` --
`align-items` waere das falsche Werkzeug, die Richtung ist row mit
Umbruch, nicht column.

Dazu der Punkt der Lage: Er haengt in einem `padding-left: 14px`. Steht
die Lage in einer eigenen Zeile -- in dieser Spalte immer --, ist das
Element dadurch 14 px breiter als sein Text und sitzt 7 px rechts der
Mitte. Ein Ausgleich rechts macht es symmetrisch, nur hier und nicht in
start.css: nebeneinander waere ein rechter Rand ein zu grosser Abstand.

Gemessen ueber 1920/1440/1280/1100/800 px: alle sieben Elemente auf
Abweichung 0,0 px. Zusaetzlich auf 360/390/412/430 px: kein waagerechter
Ueberstand. pruef-start-ansicht EXIT=0, weiterhin 140 Pruefungen -- keine
ist dabei still verschwunden.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 02:57:45 +02:00
DogFatherGitandClaude Opus 5 b2a0fb3a97 Die Zentrale bekommt die echten Marken -- und drei rote Pruefungen waren keine
Die drei Befunde in pruef-start-ansicht kamen NICHT vom Licht. Sie hingen
alle an einem boundingBox(), das einmal am Anfang ohne Vorrollen gemessen
wurde. Der Umbau zur Zentrale hatte die Begruessungskachel von 244 auf
404 px wachsen lassen, die zweite Kachel rutschte von y=971 auf y=1131,
ihre Mitte lag bei 1207 -- ausserhalb eines 1200 px hohen Fensters. Dorthin
faehrt kein Zeiger, also entstand kein Licht.

Verraten hat es die Mischung aus gruen und rot: "links" (30 % der Hoehe)
bestand, "rechts" (60 %) nicht. Eine Kachel, die nur zur Haelfte getroffen
wird, ist nicht kaputt -- sie haengt halb aus dem Bild.

Beides ist jetzt behoben, nicht nur eines:

  * Die Pruefung holt die Kachel ueber scrollIntoView({block:"center"})
    ins Bild und misst DANACH, vor jeder Benutzung. Passt sie trotzdem
    nicht ins Fenster, ist das ein harter Fehler statt einer stillen
    Fehlmessung.
  * Die Kachel selbst faellt von 404 auf 344 px. Groesster Posten war die
    Anrede-Pille mit 88 px: In ihr steckt <h1 class="titel">, und
    .willkommen .titel ist die grosse Seitenueberschrift -- es standen
    also zwei Ueberschriften in Titelgroesse uebereinander. Der Rang von
    #gruss aendert sich nicht, nur die Groesse.

Nebenbefund, den die Reparatur mit aufgedeckt hat: Die Randmessung stand
auf "nah 51 gegen fern 0". Diese 0 war kein Messwert, sondern der
Bildpunkt ausserhalb des Fensters. Jetzt "nah 43 gegen fern 7" -- dieselbe
Pruefung misst zum ersten Mal wirklich.

DIE MARKEN. marke-husky.webp war nie freigestellt (0,3 % durchsichtig,
alle vier Ecken Alpha 255) -- als Maske ergab das einen Kasten mit einem
Husky darin. Ersetzt durch das echte Original, damit repariert sich die
Kopfleiste ohne eine einzige geaenderte CSS-Zeile mit.

In der Mitte des Rings steht jetzt Spicy Media, nicht der Husky: Der Ring
zeigt DAS TEAM, ein Segment je Person. Der DogFather-Kopf in seiner Mitte
haette Filipe bildlich ins Zentrum seines eigenen Teams gesetzt.

Und davon nur die Chili: Das volle Siegel war bei 44 px unlesbarer Matsch.
Beim ersten Ausschneiden meldete das Werkzeug "60,8 % deckend, Ecken
0/0/0/0" -- klang tadellos und war ein schwarzes RECHTECK mit Chili darin.
Die Flutfuellung laeuft von aussen und kommt nie hinter den weissen Ring.
Gefunden hat das kein Kennwert, sondern das Hinsehen.

Gemessen: pruef-start-ansicht EXIT=0 (137 -> 140 Pruefungen, die drei
roten sind gruen, keine ist verschwunden), pruef-css-klassen EXIT=0
(472 Groessen), pruef-handy EXIT=0.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 02:39:32 +02:00
DogFatherGit ec55b6c8d3 WIP Zentrale-Kachel nach VanVans Werktisch — NOCH NICHT FERTIG
Aufbau steht (Ring links, Titel mittig, Uhr rechts), aber
pruef-start-ansicht meldet 3 Befunde am MAUS-LICHT der Kacheln.
Gemessen: alter Stand 0 Befunde, dieser Stand 3 — kommt also von hier.
Kein JS-Fehler (pageerror/console sind still), also Zeitverhalten:
Die zusaetzliche Abfrage /api/zentrale verzoegert vermutlich den Aufbau
der Kacheln ueber den Zeitpunkt hinaus, an dem kopf.js lichtFolgen ruft.

Ausserdem offen: 2 Schriftgroessen unter 11,5 px (pruef-css-klassen).

NICHT ausliefern.
2026-09-08 01:44:36 +02:00
DogFatherGitandClaude Opus 5 a9f3212da3 Startseite: die tote Mitte der Konsole bekommt drei Ablesungen
Gemessen, nicht geschaetzt: Auf 1440 px lagen zwischen dem Ende des
Textes und der Uhr rund 300 px Leere. Dort stehen jetzt HEUTE (Termine),
ALS NAECHSTES (Uhrzeit) und OFFEN (Punkte, Farbe nach Lage).

Keine zweite Zaehlung: Die Zahlen kommen aus denselben zwei Quellen, die
die Kacheln darunter fuellen. Zwei Rechenwege fuer dieselbe Zahl laufen
auseinander, und dann stehen zwei Wahrheiten auf einem Bildschirm.

EINE Fassung mit Stegen, nicht drei Kaestchen. Der erste Anlauf gab jedem
Wert eine eigene Fraesung -- im Bild sah das aus wie aufgeklebte
Plaettchen. Ein Instrumentenblock ist EIN eingelassenes Feld, in dem
Stege trennen; das Licht laeuft dann einmal ueber eine Kante statt
sechsmal. Auf dem Handy geht der Block auf volle Breite und richtet sich
nach der Uhr, nicht nach dem Rand.

EINE ANNAHME KORRIGIERT: In meiner Merkliste stand "Werktisch-Aufbau
nach VanVans Business Hub, Prozentring links". Im Hub nachgesehen -- es
gibt dort keinen Ring und keinen solchen Aufbau, nur eine schlichte
buehne-hero. Filipes Verweis galt der UHR, und die ist laengst gebaut.
Meine eigenen Notizen altern wie jede andere Bestandsliste.

DREI BEFUNDE AUS EIGENEN PRUEFUNGEN, alle behoben:

1. pruef-css-klassen: Die Zahl der Schriftgroessen unter 11,5 px war um
   genau eine gestiegen -- .stand__schild stand auf 9,3 px. Gesperrte
   Grossbuchstaben in 9 px liest man nicht, man erraet sie. Jetzt 11,5 px
   mit etwas engerer Sperrung, damit drei Schilder bei 320 px weiterhin
   nebeneinander passen (nachgemessen: 287 px, nichts abgeschnitten).

2. pruef-struktur: pruef-arten.mjs bildete das Tagesdatum aus UTC. Nachts
   zwischen 00:00 und 02:00 waere sie rot geworden, ohne dass am Code
   etwas falsch ist. Derselbe Fehler war mir am selben Abend schon im
   Messskript passiert -- dort hatte ich "Heute=0" gemessen und den Code
   verdaechtigt, der richtig lag.

3. Beim Bauen fast eingebaut: margin-left:auto von der Uhrgruppe
   genommen, weil der neue Block sie ja schon nach rechts schiebt. Er tut
   das nur, solange er da ist -- bis zur ersten Antwort steht er auf
   hidden, und die Uhr waere sichtbar weggesprungen.

Neu: server/pruef-ueberlappung.mjs. Misst auf 5 Seiten x 4 Breiten, ob
ein Bedienelement ueber einem anderen liegt (am 06.09. lag der
Sicht-Umschalter bei 412 px auf zwoelf Seiten ueber dem Chat-Knopf).
Ueberlappungen INNERHALB eines Bedienelements zaehlen nicht -- ein
durchsichtiges select ueber seinem eigenen Schild ist die uebliche
Bauart, und eine Warnung, die immer kommt, ist keine Warnung mehr. Mit
Gegenprobe: ein absichtlich verschobener Knopf muss erkannt werden.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 01:05:54 +02:00
DogFatherGitandClaude Opus 5 535d86d3f7 Die Termine im Tagesfenster sind Karten statt Werkzeugleisten
Filipe: "die sollen viel besser aussehen und viel geiler."

WAS WIRKLICH SCHIEFLIEF, WAR KEIN GESCHMACK, SONDERN DER AUFBAU

Zeit, Titel, Art und FUENF Knoepfe standen in EINER Zeile. Der Titel
bekam damit den Rest -- "BigMatch vs. Beanii" brach auf DREI Zeilen um,
waehrend rechts daneben Platz war. Die wichtigste Angabe der Zeile war
die gequetschteste, und die Knoepfe waren genauso laut wie der Termin
selbst.

Jetzt drei Ebenen, wie bei einer Karte:

  OBEN    Zeit und Titel, gross, ueber die ganze Breite -- der Titel
          hat keinen Wettbewerb mehr
  MITTE   die Nebendaten (Dauer, Ort, Beschreibung)
  UNTEN   die Knoepfe, rechtsbuendig in einer eigenen Reihe, durch eine
          Haarlinie abgesetzt

Die Zeit steht gross am Anfang und mit gleichen Zifferbreiten: Sie ist
das, wonach man in einem Tagesfenster sucht, und mehrere Zeilen stehen
dadurch in einer Flucht. Die Zeile traegt jetzt dieselbe abgeschnittene
Ecke wie alle Module -- ein Eintrag im Tagesfenster ist ein kleines
Modul, kein Listenpunkt.

ZWEI DINGE, DIE DABEI AN DIE RICHTIGE STELLE GERUECKT SIND

  * DIE ART GEHOERT ZUM TITEL. Sie stand als erstes Element in der
    Knopfreihe und sah damit aus wie ein Knopf, der nicht reagiert. Sie
    ist aber eine ANGABE ueber den Termin, wie Uhrzeit und Titel. Jetzt
    steht sie neben dem Titel, und die Knopfreihe enthaelt nur noch
    Dinge, die etwas tun.
  * DIE NEBENDATEN VOR DIE KNOEPFE. Im Raster bestimmt die Reihenfolge
    im Dokument, welche Zeile ein Feld bekommt -- die Knopfreihe stand
    davor und landete zwischen Titel und "30 Min · TikTok". Im ersten
    Bildschirmfoto stand die Beschreibung UNTER den Knoepfen, als
    gehoerte sie zu ihnen. Geloest ueber die Reihenfolge im Dokument und
    nicht ueber `order` im Stil: Sie gilt auch fuer Vorleseprogramme und
    die Tastatur, `order` verschiebt nur das Bild.

Auf dem Handy stehen Zeit und Titel untereinander -- bei 390 px laesst
eine 1,06-rem-Uhrzeit daneben keine zwei Woerter uebrig.

Zehn Pruefungen gelaufen, alle gruen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 00:18:06 +02:00
DogFatherGitandClaude Opus 5 e744f22fbc Vier Tafeln in einer Reihe -- die offene breiter als die Reiter
Filipe: "die sollen alle in einer reihe sein und nicht 3 und dann eins
drunter. perfektionier das."

DER GRUND WAR EINE RECHNUNG, DIE ICH NICHT KONTROLLIERT HABE

Dort stand `auto-fit` mit 340 px Mindestbreite -- CSS rechnet sich dann
selbst aus, wie viele nebeneinanderpassen. Bei vier Tafeln in einer
1240 px breiten Spalte reichte es fuer drei; die vierte rutschte in
eine zweite Zeile. `auto-fit` ist bequem, solange die Anzahl offen ist.
Sobald sie feststeht, ist es eine Rechnung, die man aus der Hand gibt.

Vier sind es, vier stehen nebeneinander -- und zwar mit `flex` statt
`grid`, weil damit die OFFENE Tafel breiter sein kann als die
geschlossenen. Es ist immer genau eine offen, und die bekommt den
anderthalbfachen Anteil: Dort wird gearbeitet, die anderen sind
Reiter. Das ist der Unterschied zwischen vier gleich grossen Kaesten
und einem Brett.

UND EIN VERSPRECHEN, DAS ERST NACH DEM ERSTEN KLICK GALT

Das Akkordeon griff nur beim Klicken. Beim Laden kamen die gemerkten
Staende aus der Ablage, und die konnten drei offene Tafeln ergeben --
im Bildschirmfoto standen genau so drei offen nebeneinander. Jetzt
bleibt beim Aufbau die erste Tafel offen, die etwas enthaelt; alle
weiteren klappen zu, ohne den gemerkten Stand zu ueberschreiben.

DREIMAL GEMESSEN STATT GESCHAETZT

Nach dem Umbau standen dort "LAEUFT AUTO..." und "FESTGEHALT..." --
252 px je Reiter, gemessen. Ich habe zweimal an den Pixeln gedreht
(Anteil 2,2 -> 1,8 -> 1,5, Sperrung 0,08 -> 0,035 em) und es blieb
abgeschnitten. Die richtige Antwort war nicht die dritte Zahl, sondern
der Name: Ein Reiter braucht ein Wort. Aus "Laeuft automatisch" wurde
"Wiederholungen" -- was es genau heisst, steht im Satz darunter, und
den liest man ohnehin erst, wenn die Tafel offen ist.

Gemessen am Ende: vier Tafeln, EINE Reihe, EINE offen, KEIN
abgeschnittener Titel.

Sechs Pruefungen gelaufen, alle gruen.

OFFEN, damit es nicht untergeht: pruef-call-kategorien meldet auf
Windows sporadisch Rueckgabewert 127 -- NACH "ALLES IN ORDNUNG", also
beim Beenden des Prozesses (libuv-Assertion beim Schliessen des noch
laufenden Servers). Das Ergebnis stimmt, der Rueckgabewert luegt. Wer
nur auf den Code sieht, haelt einen gruenen Lauf fuer rot.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 00:05:15 +02:00
DogFatherGitandClaude Opus 5 1c2e196d1d Der Wecker: mehrere Erinnerungen je Termin, jeder fuer sich
Filipe: "wie so ein wecker, den man auch in den eintraegen aktivieren
oder ausschalten kann, den soll man sogar so einstellen koennen, dass
er einen auch mehrmals informiert, einmal eine woche vorher, einmal
drei tage vorher und einmal am tag selber. das soll man auch selbst
jeder fuer sich einstellen koennen. hol die besten skills."

NACHGELESEN, NICHT GERATEN. Google Calendar erlaubt fuenf Erinnerungen
je Termin, Outlook genau eine, Apple zwei. Die verbreitete Empfehlung
fuer Wichtiges lautet "eine Woche, ein Tag, am Tag selbst" -- also
genau die Staffel, die Filipe genannt hat. Uebernommen: sechs Stufen
zur Wahl (Woche, drei Tage, ein Tag, selber Tag, Stunde, zehn Minuten),
hoechstens fuenf gleichzeitig.

EINE ZEILE IST EIN WECKER -- kein Feld am Termin mit einer Liste darin.
Mehrere Vorlaufzeiten UND "jeder fuer sich" sind zusammen eine
n:m-Beziehung; ein Feld mit kommagetrennten Zahlen waere beim ersten
"zeig mir alle faelligen Wecker" nicht mehr abfragbar.

DER ABSTAND STEHT IN DER DATENBANK, NICHT DER ZEITPUNKT. Ein Zeitpunkt
muesste bei jeder Terminverschiebung nachgezogen werden -- und genau
das vergisst man. Ein Abstand rechnet sich beim Wecken aus dem
aktuellen Beginn und ist damit immer richtig.

ZWEI GRENZEN IM WECKLAUF, und beide sind noetig: faellig (Weckzeit
erreicht) UND der Termin liegt noch vor uns. Ohne die zweite wuerde
beim ersten Lauf nach einem Ausfall jeder alte Wecker der letzten
Wochen nachtraeglich klingeln.

DER ABSTAND GEHOERT INS MERKMAL der Doppelsperre. Ohne ihn wuerde der
erste Wecker eines Termins alle weiteren sperren -- und genau das
Mehrfach-Wecken, um das es geht, faende nie statt.

DIE PRUEFUNG HAT SICH ZWEIMAL SELBST KORRIGIERT

  1. Erster Lauf um 23:42: vier Fehler, keiner echt -- der Melder
     schweigt zwischen 22 und 7 Uhr. Sie hat den Kalender gemessen,
     nicht die Software, und waere am Vormittag gruen gewesen. Dass die
     GEGENPROBE mitgefallen ist, war die eigentliche Auskunft: Waeren
     nur die Grenzen falsch, haette sie gehalten. Die Ruhezeit ist
     jetzt ueber die Umgebung einstellbar (Vorgabe unveraendert 22/7),
     damit eine Pruefung ihre Voraussetzung herstellen kann.
  2. Danach immer noch nichts: Ich hatte angenommen, der Melder trage
     den Versand nach dem VERSUCH ein. Er traegt ihn nach der
     erfolgreichen ZUSTELLUNG ein -- und das ist richtig so. Meine
     Annahme war falsch, nicht der Code. Die Pruefung hat jetzt einen
     winzigen echten Empfaenger; damit laeuft der ganze Versandweg mit,
     Verschluesselung und VAPID inbegriffen.

pruef-wecker.mjs: 20 Pruefungen. Sie stellt alle vier Fehler nach, die
bei einem Wecker moeglich sind (klingelt nicht / doppelt / nur einmal
von dreien / nachtraeglich nach einem Ausfall) -- plus die Gegenprobe,
dass ein faelliger Wecker wirklich ankommt.

Zwoelf weitere Pruefungen gelaufen, alle gruen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-07 23:51:20 +02:00
DogFatherGitandClaude Opus 5 fc4616bb05 Immer nur eine Tafel offen -- und eine zugeklappte belegt nichts mehr
Filipe: "wenn ich eine aufklicke soll auch immer nur die aufgehen und
nicht alle 3."

DAS IST MEHR ALS GESCHMACK. Seit die drei Tafeln nebeneinander stehen
und jede ihren eigenen Lauf hat, teilen sie sich die Bildschirmhoehe:
Drei offene Tafeln heissen drei kurze Ausschnitte -- eine offene heisst
eine, in der man wirklich arbeiten kann.

Die anderen werden ZUGEKLAPPT, nicht versteckt: Ihre Koepfe bleiben mit
Namen und Anzahl stehen. Man sieht weiterhin, was es sonst gibt, und
kommt mit einem Klick hin. Der gemerkte Stand wird mitgeschrieben --
sonst waere die Seite beim naechsten Aufruf in einem Zustand, den
niemand hergestellt hat.

UND EIN FEHLER VON MIR, DEN SEIN BILD GEZEIGT HAT

Die zugeklappten Tafeln standen als LEERE KAESTEN ueber die volle Hoehe
da. `align-items: stretch` am Brett gilt eben auch fuer die, die nichts
zeigt. Drei gleich hohe Tafeln sind richtig, solange sie etwas
enthalten -- eine geschlossene enthaelt nichts und soll dann auch
nichts belegen.

Vier Pruefungen gelaufen, alle gruen.

NOCH OFFEN, und bewusst nicht angefangen: Erinnerungswecker,
Terminarten (BigMatch/Turniere/Special-Live) und der Umbau der
Begruessungskachel nach VanVans Werktisch. Jede davon ist ein eigener
Bau -- angefangen und liegengelassen waeren sie schlimmer als gar nicht
begonnen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-07 18:41:12 +02:00