Das Maus-Licht ist zurueck, und die Begruessung ist keine Kachel mehr

DAS LICHT, DAS DEM ZEIGER FOLGT -- MEIN EIGENER FEHLER VON HEUTE FRUEH

Es war nicht geloescht. In module.css stand seit heute

    .kachel > * { position: relative; z-index: 1; }

damit der Inhalt ueber Raster und Kantenlicht liegt. Das Lichtelement
ist aber ein direktes KIND jeder Karte -- ihm wurde damit sein
`position: absolute` genommen. Aus einer Flaeche ueber der ganzen Karte
wurde ein leerer Inline-Span ohne Ausdehnung. Im Browser gemessen:
`display: inline`, obwohl in start.css `absolute` steht.

Merksatz dazu im Code: Eine Regel auf `> *` trifft auch das, was gar
kein Inhalt ist.

Zweiter, aelterer Fehler beim selben Thema, den erst die Pruefung
gefunden hat: Beim Wechsel von einer Kachel direkt auf die naechste
ging das Licht GANZ aus. `pointermove` der neuen Karte meldet einen
Bildaufbau an, `pointerout` der alten kommt danach und hat ihn
geloescht -- obwohl er gar nicht ihr gehoerte. Jetzt wird nur noch der
EIGENE Bildaufbau entwertet.

DIE BEGRUESSUNG FLIEGT AUS DER REIHE

Filipe: "diese hauptkachel muss komplett aus der rolle fliegen im
gegenzug zu den anderen ... AUCH MIT DER UHR RECHTS; WIE IN DER
BUISNESS HUB SEITE VON VANVAN."

Nachgesehen statt geraten: Auf VanVans Business-Hub gibt es keine Uhr.
Gemeint ist das `gate-medaillon` der Anmeldeseite -- ein runder
Kegelverlauf, der wie gebuerstetes Metall aussieht, gefasst in zwei
eingelassenen Ringen. Diese Bauart steht jetzt hier, weitergetrieben.

Die Begruessung ist keine Kachel mehr, sondern eine KONSOLE, und sie
unterscheidet sich in der FORM, nicht im Lack:

  * Sie ist BREITER ALS DIE SEITE -- sie tritt links und rechts ueber
    die Spalte hinaus, in der alle Kacheln stehen.
  * Sie ist ein ACHTECK. Die Module haben EINE abgeschnittene Ecke,
    sie hat VIER.
  * Sie hat eine METALLFASSUNG, laengs gebuerstet, mit je einer warmen
    und einer kuehlen Spiegelung.

Die Uhr ist von 124 auf 164 px gewachsen und hat eine echte Luenette:
10 px deckendes Metall, zwoelf eingravierte Stundenmarken, sechzig
feine Minutenstriche, Glaskuppe.

VIER FEHLER AUF DEM WEG DAHIN, ALLE IM BILDSCHIRMFOTO GESEHEN

  1. HALBDURCHSICHTIGES METALL ist kein Metall, sondern graues Glas.
     Stand gleichzeitig an Konsole und Uhr.
  2. KEGELVERLAUF AUF EINEM BREITEN BALKEN bewirkt nichts: Die ganze
     Oberkante liegt in wenigen Grad. Rund -> conic, lang -> linear.
     Die Verlaufsart muss zur FORM passen, nicht zum Material.
  3. DIE SKALA DER UHR WAR NIE SICHTBAR, seit es sie gibt. Ihre Maske
     rechnete Prozente auf die weiteste ECKE (116 px) statt auf den
     Radius (82 px) -- der Ring lag komplett ausserhalb der Uhr.
     `closest-side` behebt es. Eine unsichtbare Verzierung sieht aus
     wie gar keine, nicht wie ein Fehler.
  4. `body.start .willkommen` in start.css hat die neue Konsole
     ueberschrieben -- nicht ueber die Ladereihenfolge, sondern ueber
     die SPEZIFITAET (0,2,1 gegen 0,1,0). Derselbe Fehler wie mit
     `:where()` heute Frueh, nur andersherum: damals zu schwach
     geschrieben, hier zu stark stehen gelassen.

Der Ueberstand haengt an der Polsterung der Inhaltsspalte
(`min(34px, 3.6vw)`) statt an einer festen Zahl -- eine feste haette
auf dem Handy 17 px aus dem Bildschirm geragt.

UND EINE PRUEFUNG, DIE UNTER DEN BILDRAND GEZIELT HAT

pruef-start-ansicht meldete zwei Fehler am Licht. Das Licht war in
Ordnung: Die hoehere Konsole hatte Kachel 3 auf y = 1134 geschoben,
bei einem 1200 px hohen Fenster lag ihre Mitte unter dem Rand. Sie
rollt jetzt hin, misst danach neu -- und die Zahl der wirklich
gemessenen Kacheln steht in der Bedingung. 140 statt 137 Pruefungen.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-07 13:03:16 +02:00
co-authored by Claude Opus 5
parent ac432d85e1
commit 2acb6bc020
24 changed files with 568 additions and 318 deletions
+29 -2
View File
@@ -501,9 +501,25 @@ console.log("\n=== Das Licht folgt dem Zeiger");
ok(await anzahlAn() === 0, `in der Luecke geht es aus (${await anzahlAn()})`);
/* 2. Direkt von einer Kachel auf die naechste -- es darf nie mehr
als eine gleichzeitig leuchten. */
als eine gleichzeitig leuchten.
ERST INS BILD ROLLEN, DANN MESSEN, DANN ZIELEN. Diese Datei
schreibt denselben Satz zwanzig Zeilen weiter unten schon
einmal, und trotzdem stand er hier nicht: Am 07.09.2026 wurde
die Begruessungskachel hoeher, Kachel 3 rutschte auf y = 1134 bei
einem 1200 px hohen Fenster -- ihre Mitte lag bei 1210, also
UNTER dem Bildrand. Der Zeiger landete im Nichts, keine Kachel
leuchtete, und die Pruefung meldete einen Fehler am Licht,
obwohl das Licht in Ordnung war.
Der Kasten wird NACH dem Rollen neu gelesen. Ein vor dem Rollen
gemessener Kasten ist danach falsch -- das waere derselbe Fehler
mit einem Zwischenschritt mehr. */
await seite.locator(".kachel").nth(2).scrollIntoViewIfNeeded();
await seite.waitForTimeout(250);
const k2 = await seite.locator(".kachel").nth(2).boundingBox();
await seite.mouse.move(k1.x + k1.width / 2, k1.y + k1.height / 2);
const k1neu = await seite.locator(".kachel").nth(1).boundingBox();
await seite.mouse.move(k1neu.x + k1neu.width / 2, k1neu.y + k1neu.height / 2);
await seite.waitForTimeout(250);
await seite.mouse.move(k2.x + k2.width / 2, k2.y + k2.height / 2);
await seite.waitForTimeout(300);
@@ -542,6 +558,13 @@ console.log("\n=== Das Licht folgt dem Zeiger");
{
const farben = [];
for (const nr of [1, 2, 3]) {
/* Auch hier: erst ins Bild rollen, dann den Kasten lesen. Eine
Kachel unter dem Bildrand bekommt keinen Zeiger, also auch
kein Licht-Element -- und `licht: null` fuer zwei von drei
Kacheln sah aus wie "zwei Kacheln leuchten gleich". Ein Fehler,
der etwas ganz anderes meldet, als er ist. */
await seite.locator(".kachel").nth(nr).scrollIntoViewIfNeeded();
await seite.waitForTimeout(200);
const b = await seite.locator(".kachel").nth(nr).boundingBox();
if (!b) continue;
await seite.mouse.move(b.x + b.width / 2, b.y + b.height / 2);
@@ -555,6 +578,10 @@ console.log("\n=== Das Licht folgt dem Zeiger");
};
}, nr));
}
/* DIE ANZAHL GEHOERT IN DIE BEDINGUNG. Waeren keine Kacheln
messbar, waere `farben` leer -- und "0 verschiedene Toene bei 0
Kacheln" ist immer wahr. Grün, ohne etwas angesehen zu haben. */
ok(farben.length === 3, `drei Kacheln wirklich gemessen (${farben.length})`);
const toene = new Set(farben.map((f) => f.ton));
ok(toene.size === farben.length,
`jede Kachel hat ihren eigenen Ton (${[...toene].join(", ")})`);