Commit Graph
3 Commits
Author SHA1 Message Date
DogFatherGitandClaude Opus 5 6e46a08543 Portnummern werden abgeleitet, nicht mehr vergeben
Gemessen: 165 Pruefdateien, 129 verschiedene Nummern -- NEUNZEHN
doppelt, vier davon dreifach. Niemand hatte das gewollt; jede neue
Pruefung wurde von einer vorhandenen abgeschrieben, und die Nummer kam
mit. Meine eigene Notiz sagte "sieben" -- auch eine Bestandsliste
altert.

Der Waechter faengt den Schaden ab, aber er kann nur melden, was schon
passiert ist: Zwei Pruefungen mit derselben Nummer koennen nie
gleichzeitig laufen, und ein liegengebliebener Prozess der einen laesst
die andere abbrechen mit einer Meldung, die wie ein Befund aussieht.
Genau das ist mir am 20.09. zweimal passiert.

Jetzt leitet jede Datei ihre Nummer aus ihrer STELLE IM ALPHABET ab
(eigenerPort in helfer-port.mjs), zwei je Datei. Nicht ueber eine
Pruefsumme: Bei 165 Namen in 4900 Nummern waeren nach dem
Geburtstagsproblem rund DREI Zusammenstoesse zu erwarten -- ein Hash
tauscht eine sichtbare Doppelung gegen eine unsichtbare. Die Stelle im
Alphabet ist eindeutig von der Bauart her.

--- ZWEI FEHLER AUF DEM WEG, BEIDE LEHRREICH -------------------------

1. DER ERSTE VERSUCH WAR GRUEN UND KAPUTT. Ersetzt wurde mit einem
   Muster: "([^"]*4231[^"]*)". Das hielt

     { host: "127.0.0.1", port: 4231, path: "/404.html" }

   fuer eine Zeichenkette -- ein Muster kann eine oeffnende nicht von
   einer schliessenden Anfuehrung unterscheiden. Heraus kam

     { host: "127.0.0.1`, port: ${PORT}, path: `/404.html" }

   also GUELTIGER Code ohne port-Feld. `node --check` sagte gruen fuer
   alle 164 Dateien. Aufgefallen ist es erst, weil ich vier Vertreter
   gegen eine vorher gemessene Grundlinie laufen liess: pruef-schranke
   39/0 vorher, 38/1 nachher.

   Alles zurueckgenommen und mit einem Zerleger neu gemacht, der weiss,
   ob eine Stelle Code, Zeichenkette, Vorlage, Kommentar oder
   regulaerer Ausdruck ist. In pruef-ics stand die Nummer in einem
   regulaeren Ausdruck -- der wird jetzt gebaut statt hingeschrieben.

2. EIN MODUL, DAS BEIM IMPORTIEREN ARBEITET, IST EINE FALLE. Der
   zweite Durchgang importierte den ersten, um seine Mechanik zu
   benutzen -- und fuehrte dessen Hauptlauf gleich mit aus. Die
   zweiten Nummern wurden dadurch als erste behandelt, zwei Aufrufe
   bekamen dieselbe Nummer, und in pruef-content stand `const PORT`
   zweimal.

--- WAS DAS DAUERHAFT HAELT -----------------------------------------

pruef-portnummern.mjs (neu, 8 Pruefungen) fragt nicht "welche Nummern
sind doppelt", sondern "wer traegt ueberhaupt noch eine von Hand ein"
und "wer startet einen Server, ohne seine Nummer abzuleiten". Die
zweite Frage hat sofort etwas gefunden, das in KEINER Doppelungsliste
stand: pruef-push-weg belegte 4341 und 4342, rief den Waechter aber
gar nicht auf -- dieselbe Nummer wie pruef-agentur. Eine Liste zeigt
nur, was auf ihr steht.

Mit Gegenprobe: Eine unbekannte Datei bekommt keine geratene Nummer,
sondern einen Abbruch, und eine dritte Nummer je Datei gibt es nicht.

--- NACHGEMESSEN ----------------------------------------------------

Sechzehn Pruefungen gegen ihre vorher gemessene Grundlinie, je eine
Vertreterin jeder umgestellten Bauweise (eine Nummer, zwei Nummern,
Nummer in einer Zeichenkette, in einer Vorlage, in einem regulaeren
Ausdruck, dynamische Einfuhr, Nachtlauf mit zwei Laeufen):

  crew-adresse 132/0 · schranke 39/0 · content 45/0 · entwicklung 46/0
  anruf 127/0 · ics 37/0 · push-weg 20/0 · arten 28/0 · video 67/0
  kanalzeile 14/0 · agentur 62/0 · spicy 83/0 · creator-anlegen 50/0
  push-ziel 10/0 · portnummern 8/0

Alle exakt wie vorher. Zwei waren schon vorher rot und sind es
unveraendert geblieben (crew-wand-bild 41/4, teilen 14/3) -- per
`git stash` belegt, nicht angenommen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-20 22:51:21 +02:00
DogFatherGitandClaude Opus 5 9b1826721b Handy-Mitte, Babyblau und Spicy im Umschalter
Drei Bildschirmfotos, drei Befunde -- und alle drei waren messbar.

--- SCREEN 2: RING UND UHR STANDEN SCHIEF ---

Filipe: "ich will dass auf dem handy die uhr und der kreis ganz oben mit
den erledigten aufgaben, schoen mittig, zentriert sind. die stehen sehr
verzogen von der mitte. das soll bei jedem und jeder rolle verbessert
werden."

Gemessen bei 390 und 412 px, in allen fuenf Rollen, immer dieselbe
Zahl: Ring 31 px nach links, Uhr 31 px nach rechts. Gleicher Betrag,
entgegengesetzte Richtung -- eine Ursache, nicht zwei.

`justify-content: center` zentriert den INHALT der Reihe, und in der
Reihe steht neben dem Instrument noch ein Knopf (Glocke rechts vom Ring,
Wecker links von der Uhr). Zentriert wurde also [Knopf + Abstand +
Instrument] als Block; das Instrument rutschte um die halbe Knopfbreite
zur Seite. Die Knopfbreite steht seit jeher als `--instrument-knoepfe:
62px` in derselben Datei -- 62 / 2 = 31. Die gemessene Zahl war von
Anfang an aufgeschrieben, nur an anderer Stelle.

Der Knopf zaehlt jetzt nicht mehr mit: aus dem Fluss genommen, neben das
zentrierte Instrument gehaengt. NICHT um 31 px verschoben -- das waere
dieselbe Zahl ein zweites Mal, und beim naechsten Knopf waere sie
falsch. Jetzt folgt seine Lage dem Instrument, wie gross das auch ist.

Nachher: 0 px Abweichung, alle fuenf Rollen, beide Breiten.

--- SCREEN 3: DAS BABYBLAU WAR STAHLGRAU ---

Filipe: "die rolle dogfather soll eine uebertrieben geile babyblau
haben." Zum dritten Mal -- und die ersten beiden Male habe ich das
Falsche vergroessert.

Beide Male hatte ich den Abstand zwischen Rot- und Blaukanal im HEXWERT
erhoeht (45 Stufen, dann 86). Diesmal zuerst gemessen, was am Bildschirm
ankommt:

  Die DogFather-Zeile traegt 98,7 % farbige Bildpunkte -- MEHR als jede
  andere Rolle. An der Menge lag es also nie.
  Ihr Mittelwert war rgb(43,62,78): 35 Stufen zwischen Rot und Blau.
  Das ist Stahlgrau.

Die richtige Groesse ist die SAETTIGUNG. In OKLab hatte #9ed3f4 eine
Buntheit von 0,0718 -- der blasseste Wert aller fuenf Rollen. #5fbdff
hat 0,1303, also 81 Prozent mehr. Die Zeile kommt damit auf
rgb(36,60,79), und der mittlere Kanalabstand steigt von 35,2 auf 43,0.

Nachgerechnet, was NICHT verlorengeht: Kontrast auf dem Grund 9,75:1
(vorher 12,49) -- weit ueber den 7 fuer AAA. Abstand zur naechsten
Rollenfarbe 0,1608 in OKLab, vorher 0,1466; die Hausgrenze liegt bei
0,0973. DogFather ist also SICHERER unterscheidbar als vorher.
Gemessen an der echten Flaeche: 8,84:1 und 9,60:1.

--- SCREEN 4: SPICY FEHLTE IM UMSCHALTER ---

Filipe: "ich will da auch noch die spicy rolle sehen und die leute in
der rolle wie die anderen."

Der Sicht-Umschalter fuehrte eine EIGENE Rollenliste -- vier Eintraege,
Spicy Media fehlte. Zum vierten Mal derselbe Fehler: eine zweite
Fassung einer Liste, die es zentral schon gibt. Vorher traf es die
Leitungsliste (ein Set), die Rollennamen (ein Objekt in fuenf
Skripten -- im Chat stand "UNDEFINED" ueber einem Namen) und die
Personenliste.

Jetzt steht dort keine Liste mehr, sondern eine Ableitung aus
`ROLLENFOLGE` und `ROLLEN_GRUPPE`. Kommt eine sechste Rolle, ist sie
ohne eine Zeile Arbeit dabei.

--- Pruefung ---

pruef-handy: zehn neue Messungen (fuenf Rollen x zwei Breiten), alle
0 px. Die beiden fehlenden Rollen sind dafuer in den Testdaten
ergaenzt -- eine Pruefung an drei von fuenf haette "bei jeder Rolle"
nicht belegen koennen.

pruef-sicht: Cigdem als Spicy-Media-Person ergaenzt. Ohne sie waere es
nie aufgefallen -- eine Rolle ohne Leute wird ohnehin weggelassen, und
die alte Zusicherung "Manager, Scouts, Creator" waere weiter gruen
gewesen. Dazu eine Gegenprobe, dass die Reihenfolge WIRKLICH aus der
zentralen Liste kommt und nicht wieder abgeschrieben ist.

pruef-personen-kachel: DogFather-Kontrast neu dabei.
Ausserdem gruen: pruef-css-klassen, pruef-lesbarkeit.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 13:59:53 +02:00
DogFatherGitandClaude Opus 5 d5570ee501 Personenkachel: Rollenfarben, kein Leerband, dunklerer Grund
Filipe, mit Bildschirmfoto: "mach die ganze kachel perfekter
detailliert schoenes. der hintergrund soll auch bissl dunkler sein von
der kachel."

--- 29 PIXEL NICHTS, FUENFMAL UNTEREINANDER ---

Auf dem Bild stand unter jeder zugeklappten Rolle ein leerer Streifen.
Nachgemessen: Abschnitt 74 px, Zeile darin 45 -- 29 px Leerraum.

Sie kamen aus ZWEI Quellen, und nur eine stand in personen.css:
padding-bottom: 14px am Abschnitt, plus margin-bottom: 14px an
.gruppe__kopf aus start.css Zeile 765. Letzteres ist fuer die
freistehenden Abschnitte der STARTSEITE geschrieben, wo unter der
Ueberschrift wirklich gleich Karten kommen. Zugeklappt kommt hier aber
nichts, und dann ist der Abstand Abstand zu nichts.

Beide haengen jetzt am Zustand: offen -> Luft, zu -> keine. Die Kachel
ist damit 383 px hoch statt 293 -- pardon, 293 statt 383.

--- DIE ROLLEN HABEN FARBEN, NUR HIER NICHT ---

Fuenf Zeilen sahen fuenfmal gleich aus. Das Haus fuehrt fuer jede Rolle
eine Farbe (Anmeldeseite, Marken, Bereiche); ausgerechnet in der Liste,
in der es NUR um Rollen geht, hoerten sie auf.

Jeder Abschnitt traegt jetzt `data-rolle`, setzt daraus EIN --r, und
alles Weitere liest davon: der Streifen links, die Anzahl, die
Namenszeichen, der Pfeil, das Licht beim Aufklappen. Und `--ton`, die
Variable, aus der module.css das Kantenlicht jeder Kachel zieht -- die
Personenkarten in einem Manager-Abschnitt sind damit lila statt orange.
Eine Zeile, und der Abschnitt wird ein Stueck.

NEU: WER DRINSTEHT, OHNE AUFZUKLAPPEN. Vier Namenszeichen, ab dem
fuenften "+n". Zugeklappt sagte die Zeile bisher nur, WIE VIELE es
sind; wer wissen wollte, ob Patrick dabei ist, musste aufklappen.

--- DER STREIFEN, DEN getComputedStyle NICHT SIEHT ---

Erster Anlauf: 3 px breit, left: 0, volle Hoehe. Im Bild war nichts.
getComputedStyle meldete trotzdem "3 px, sichtbar, Deckkraft 0,55".

Der Grund steht in module.css: Jede Kachel traegt auf ::before ein
Kantenlicht mit inset: 0 und z-index: 2 -- eine 1,6 px breite Linie
UEBER allen Kindern. Vom Streifen blieben 1,4 px, und die lagen genau
in der Kante. Er sitzt jetzt bei 3 px, gerundet, mit Luft oben und
unten.

Die Pruefung misst ihn deshalb an echten BILDPUNKTEN, und zwar
dieselbe Stelle zweimal: einmal wie sie ist, einmal mit
ausgeschaltetem Streifen. Was sich aendert, IST der Streifen -- und was
sich nicht aendert, ist die Gegenprobe, ohne dass man sie erfinden
muss.

--- UND EINE PRUEFUNG, DIE GRUEN GELOGEN HAT ---

Die Kontrastmessung las die Textfarbe mit
`getComputedStyle(e).color.match(/\d+/g)`. Das geht, solange dort
"rgb(148, 165, 187)" steht. Alle neuen Stellen kommen aus color-mix(),
und Chromium antwortet darauf mit "color(srgb 0.36 0.51 0.42)". Aus
dem Muster fielen "0", "510588", "0" -- die Pruefung meldete
775929299:1 und war gruen.

Die Farbe wird jetzt in ein Canvas GEMALT und als Punkt zurueckgelesen;
das versteht jede Schreibweise, die der Browser versteht. Davor steht
eine Gegenprobe mit zwei bekannten Farben: Stimmt das Messgeraet nicht,
ist alles darunter wertlos. Echte Werte jetzt: 7,95 bis 15,71:1.

--- AM HANDY STAND DER PFEIL IN EINER DRITTEN ZEILE ---

Der Zusatztext bekommt dort eine eigene Rasterzeile -- richtig, er
passt sonst nicht. Der Pfeil bekam dadurch eine dritte und stand mittig
unter dem Text wie ein vergessenes Zeichen: 106 px je Rolle. Er hat
jetzt eine eigene Spalte und ueberspannt beide Zeilen: 75 px, und er
steht da, wo die Hand ihn sucht.

--- Pruefung ---

server/pruef-personen-kachel.mjs, neu, 43 Pruefungen, alle gruen.
Ausserdem gruen: pruef-personen-liste, pruef-css-klassen (die hat die
Namenszeichen bei 10,56 px erwischt, bevor sie jemand lesen musste).
Angesehen bei 1440 px und 390 px, zu und offen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 13:37:28 +02:00