diff --git a/server/pruef-reaktion-schmal.mjs b/server/pruef-reaktion-schmal.mjs index 82360333..86c809ef 100644 --- a/server/pruef-reaktion-schmal.mjs +++ b/server/pruef-reaktion-schmal.mjs @@ -19,30 +19,42 @@ Eine Bestandsliste ist ein Wegweiser, keine Wahrheit. Auch meine eigene. - WAS HIER BEWACHT WIRD UND WAS NICHT + UND WAS SEITDEM PASSIERT IST - Dass bei OFFENER Regie auf 320 px das Bild verschwindet, ist ein - BEKANNTER Mangel. In reaktion.css steht die Begruendung samt sechs - gescheiterten Versuchen, und dort steht auch, dass es ein eigenes - Nachdenken braucht (etwa: die Regie wird dort ein eigener - Bildschirm statt einer Schublade). Diese Pruefung macht daraus - KEINEN gruenen Haken -- sonst wuerde eine spaetere Reparatur hier - rot, und das waere die Welt verkehrt herum. + Filipe: „auf so apps wie youtube und so geht es doch auch auf dem + handy also perfektionier es endlich." - Bewacht wird die GRENZE darum herum, und zwar dreierlei: + Er hatte recht. Bei offener Regie stand auf 320 px das Pult IM + RASTER statt darueber -- Bild 0 px, Transportleiste 1017 Pixel + unter dem Fensterrand. Ab 360 px war genau das laengst geloest; + es war dieselbe Seite, nur schmaler. Die 360-Pixel-Sperre ist am + 02.10.2026 gefallen (Begruendung und Messreihe in reaktion.css). - 1. Mit GESCHLOSSENER Regie muss das Bild auch auf 320 px eine - brauchbare Hoehe haben. Faellt es dort je auf 0, ist das - etwas Neues und kein Bestand. - 2. Ab 360 px -- der Breite, ab der die Regie aus dem Fluss - genommen wird -- muss das Bild seine Hoehe auch bei OFFENER - Regie behalten. Genau dort verlaeuft die Zeile - `@media (pointer: coarse) and (min-width: 360px)`. - 3. IN JEDEM ZUSTAND muss der Knopf, der die Regie wieder - zumacht, im Fenster stehen UND obenauf liegen. Das ist der - Unterschied zwischen „haesslich" und „Falle": Solange er da - ist, kommt man immer wieder zum Bild zurueck. Gemessen ist - er es heute ueberall -- diese Zeile haelt das fest. + Gemessen danach, Regie offen: + + 320x568 Bild 180 px · Kopf 147 · Schublade 280 · Inhalt 132 + 360x640 Bild 203 px (unveraendert) + 390x844 Bild 219 px (unveraendert) + + WAS HIER BEWACHT WIRD -- auf JEDER Breite, ohne Ausnahme: + + 1. Das Bild behaelt seine Hoehe, zu UND auf. + 2. Die Transportleiste bleibt im Fenster. + 3. Der Inhalt der Schublade ist erreichbar -- er passt hinein + oder er rollt. Eine Schublade, deren Inhalt man nicht + erreicht, verdeckt nur eleganter als vorher. + 4. Die drei grossen Knoepfe behalten ihre 44 Pixel, keiner ist + abgeschnitten, alle liegen obenauf. Schmaler ja, beschnitten + nein. + 5. In JEDEM Zustand steht der Knopf, der die Regie wieder + zumacht, im Fenster UND obenauf. + + Punkt 2 ist die eigentliche Lehre aus dem Tag: Die alte Fassung + dieser Datei hat den Mangel unter 360 px nur PROTOKOLLIERT statt + behauptet, damit eine spaetere Reparatur hier nicht rot wird. Das + war richtig, solange es keine Reparatur gab -- und ist falsch, + sobald es eine gibt. Eine Pruefung, die eine Reparatur nicht + bemerkt, hat sie nie abgesichert. DREI AUSGAENGE: 0 in Ordnung · 1 Befunde · 2 konnte nicht arbeiten. ===================================================================== */ @@ -96,12 +108,15 @@ d.close(); const { chromium } = await import("playwright"); const browser = await chromium.launch(); -/* Die Grenze, ab der reaktion.css die Regie aus dem Fluss nimmt. - Sie steht dort als `and (min-width: 360px)` -- hier als Zahl, weil - diese Pruefung genau an ihr entlangmisst. */ -const AUS_DEM_FLUSS_AB = 360; -/* So hoch muss ein Bild mindestens sein, um ein Bild zu sein. 127 px - sind heute auf 320 gemessen; 100 laesst Luft, ohne 0 zu decken. */ +/* So hoch muss ein Bild mindestens sein, um ein Bild zu sein. + Gemessen am 02.10.2026 mit offener Regie: 180 px auf 320, + 203 auf 360, 219 auf 390. 100 laesst Luft nach unten, ohne 0 zu + decken. + + (Hier stand bis heute `AUS_DEM_FLUSS_AB = 360` -- die Breite, ab + der die Regie aus dem Fluss genommen wurde. Die Grenze gibt es + nicht mehr, also auch die Zahl nicht. Eine Konstante, die nichts + mehr trennt, ist der Anfang einer Erklaerung, die nicht stimmt.) */ const BILD_MIN = 100; const GERAETE = [[320, 568, "Handy klein"], [390, 844, "Handy"], [430, 932, "Handy gross"]]; @@ -244,23 +259,64 @@ for (const [breite, hoehe, wie] of GERAETE) { console.log(` Regie auf: Bild ${auf.bild} px · Transport endet bei ` + `${auf.transportUnten} von ${auf.fenster}`); - if (breite >= AUS_DEM_FLUSS_AB) { - /* AB 360 px wird die Regie aus dem Fluss genommen und liegt ueber - dem Bild. Dann darf das Bild nichts verlieren. */ - ok(auf.bild >= BILD_MIN, - `auch mit offener Regie bleibt das Bild ${auf.bild} px hoch`); - ok(auf.transportUnten !== null && auf.transportUnten <= auf.fenster + 1, - ` und die Transportleiste bleibt im Fenster (${auf.transportUnten})`); - } else { - /* UNTER 360 px GILT DIESE ZUSAGE NICHT -- und das wird hier NICHT - als „in Ordnung" abgehakt. Behauptet wird nur, was auch nach - einer Reparatur noch wahr ist: dass man wieder herauskommt. - Ein gruener Haken auf „das Bild ist 0" wuerde bei der - Reparatur rot. */ - console.log(` (unter ${AUS_DEM_FLUSS_AB} px bleibt die Regie im Fluss — ` - + "bekannter Mangel, siehe reaktion.css. Hier wird nur geprueft, " - + "dass man wieder herauskommt.)"); - } + /* DIE ZUSAGE GILT SEIT DEM 02.10.2026 AUF JEDER BREITE. + + Bis dahin stand hier eine Ausnahme fuer alles unter 360 px: + Dort blieb die Regie im Raster, das Bild fiel auf 0 und die + Transportleiste rutschte 1017 Pixel unter den Fensterrand. Die + Ausnahme ist weg, weil der Mangel weg ist -- und genau deshalb + wird hier jetzt BEHAUPTET statt protokolliert. Eine Pruefung, + die eine Reparatur nicht bemerkt, hat die Reparatur nie + abgesichert. */ + ok(auf.bild >= BILD_MIN, + `auch mit offener Regie bleibt das Bild ${auf.bild} px hoch`); + ok(auf.transportUnten !== null && auf.transportUnten <= auf.fenster + 1, + ` und die Transportleiste bleibt im Fenster (${auf.transportUnten})`); + + /* DER INHALT DER SCHUBLADE MUSS ERREICHBAR SEIN. + + Eine Schublade, die ueber dem Bild liegt und deren Inhalt man + nicht erreicht, ist kein Fortschritt gegenueber der alten -- + sie verdeckt dann nur eleganter. Gemessen wird deshalb, dass + der Inhalt entweder vollstaendig hineinpasst ODER rollt, und + dass die drei grossen Knoepfe ihre 44 Pixel behalten und + obenauf liegen. */ + const innen = await seite.evaluate(() => { + const i = document.getElementById("pult-innen"); + const p = document.getElementById("pult"); + const rollt = (e) => !!e && e.scrollHeight > e.clientHeight + 2; + const knoepfe = [...document.querySelectorAll(".pult__tun .tun")].map((b) => { + const r = b.getBoundingClientRect(); + const oben = document.elementFromPoint( + Math.min(innerWidth - 1, Math.max(0, r.left + r.width / 2)), + Math.min(innerHeight - 1, Math.max(0, r.top + r.height / 2))); + return { + wort: (b.textContent || "").trim().slice(0, 14), + hoch: Math.round(r.height), + /* `scrollWidth <= clientWidth` heisst: der Text ist ganz da. + Knoepfe schmaler zu machen ist erlaubt, sie abzuschneiden + nicht. */ + ganz: b.scrollWidth <= b.clientWidth + 1, + erreichbar: r.top >= 0 && r.bottom <= innerHeight + && !!oben && (oben === b || b.contains(oben) || !!oben.closest(".pult__tun")), + }; + }); + return { + passtOderRollt: !!i && (i.scrollHeight <= i.clientHeight + 2 || rollt(i) || rollt(p)), + sichtbar: i ? Math.round(i.getBoundingClientRect().height) : 0, + knoepfe, + }; + }); + ok(innen.passtOderRollt, + ` der Inhalt der Schublade ist erreichbar (${innen.sichtbar} px sichtbar, Rest rollt)`); + ok(innen.knoepfe.length === 3 && innen.knoepfe.every((k) => k.hoch >= 44), + ` die drei grossen Knoepfe behalten ihre 44 Pixel ` + + `(${innen.knoepfe.map((k) => k.hoch).join("/")})`); + ok(innen.knoepfe.every((k) => k.ganz), + " und keiner ist abgeschnitten — schmaler ja, beschnitten nein"); + ok(innen.knoepfe.every((k) => k.erreichbar), + ` alle drei sind im Fenster und liegen obenauf ` + + `(${innen.knoepfe.map((k) => k.wort).join(", ")})`); ok(auf.zuImFenster && auf.zuObenauf, " und der Knopf zum Zumachen ist auch jetzt da und anklickbar — " diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index 3526aa71..79472dd4 100644 --- a/workspace/anruf-probe.html +++ b/workspace/anruf-probe.html @@ -16,8 +16,8 @@ verdeckt. Gefunden hat es pruef-struktur. Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. --> - - + + - +