diff --git a/server/pruef-kachel-universum.mjs b/server/pruef-kachel-universum.mjs index e982b687..de120cb6 100644 --- a/server/pruef-kachel-universum.mjs +++ b/server/pruef-kachel-universum.mjs @@ -434,20 +434,89 @@ melde("=== 4. Nur die Kacheln ==="); const zwischenraum = await seite.evaluate(() => { /* Ein Fleck ZWISCHEN zwei Kacheln. Er gehoert der Seite, nicht einer Kachel -- dort darf kein Stern stehen. */ - const kacheln = [...document.querySelectorAll(".kachel")]; - if (kacheln.length < 2) return null; - const a = kacheln[0].getBoundingClientRect(); - const b = kacheln[1].getBoundingClientRect(); - if (b.x - (a.x + a.width) < 6) return null; - return { x: Math.round(a.x + a.width) + 1, y: Math.round(a.y) + 20, - width: Math.max(2, Math.round(b.x - (a.x + a.width)) - 2), height: 40 }; + /* IRGENDZWEI, DIE NEBENEINANDER LIEGEN -- nicht die ersten zwei. + + Bis zum 16.09.2026 stand hier `kacheln[0]` und `kacheln[1]`. Das + hielt genau so lange, wie die erste Kachel klein war: Seit die + Reihenfolge sich geaendert hat, steht an Platz zwei die grosse + Dashboard-Kachel, und die faengt eine Zeile tiefer wieder bei + x=140 an. Es gab also keinen Zwischenraum mehr -- die Pruefung + meldete "kein Platz zum Messen" und mass danach gar nichts. + + Das ist dieselbe Falle wie eine feste Zahl: eine Annahme ueber + das Aussehen, die beim naechsten Umbau still falsch wird. Jetzt + wird gesucht, was die Frage beantwortet, statt sie zu stellen. */ + /* EIN FLECK, DER KEINE KACHEL BERUEHRT. + + Die Frage ist: Steht das Sternenfeld wirklich nur auf den + Kacheln? Bis zum 16.09.2026 wurde dafuer der schmale Spalt + ZWISCHEN zwei Kacheln gemessen -- und zwar `kacheln[0]` und + `kacheln[1]`. Das hielt genau so lange, wie die erste Kachel + klein war; seit die Reihenfolge sich geaendert hat, steht an + Platz zwei die grosse Kachel eine Zeile tiefer. Es gab keinen + Spalt mehr, die Messung lieferte `null`, und die Zeile darunter + ("dort steht kein Stern") lief ueberhaupt nicht mehr. Ein + uebersprungener Test beweist nichts. + + Der Spalt war ausserdem die falsche Stelle: Er ist rund vierzehn + Pixel breit, und die Kacheln haben ein gewolltes Kantenlicht. + Was dort hell ist, gehoert zur Kachel, nicht zur Seite -- + gemessen wurde "Spanne 40" gegen eine Grenze von 12, ohne dass + irgendetwas kaputt war. + + Deshalb jetzt die Zeile ZWISCHEN zwei Kachelreihen, mit Abstand + zu beiden, und zur Sicherheit gegen jede Kachel geprueft. Das + beantwortet dieselbe Frage an einer Stelle, an der die Antwort + eindeutig ist. */ + const felder = [...document.querySelectorAll(".kachel")] + .map((k) => k.getBoundingClientRect()); + if (felder.length < 2) return null; + + const unten = Math.max(...felder.map((f) => f.y + f.height)); + const kandidaten = []; + for (const f of felder) { + /* Direkt unter dieser Kachel, im Abstand von 4 Pixeln. */ + const y = f.y + f.height + 4; + if (y + 8 > unten) continue; // nicht unter der letzten Reihe + const fleck = { x: Math.round(f.x + f.width / 2 - 12), y: Math.round(y), + width: 24, height: 8 }; + const beruehrt = felder.some((g) => + fleck.x + fleck.width > g.x && fleck.x < g.x + g.width + && fleck.y + fleck.height > g.y && fleck.y < g.y + g.height); + if (!beruehrt) kandidaten.push(fleck); + } + return kandidaten[0] || null; }); - ok(zwischenraum !== null, "zwischen zwei Kacheln ist Platz zum Messen"); + ok(zwischenraum !== null, "ein Fleck ohne Kachel darunter ist gefunden"); if (zwischenraum) { - const p = await punkte(zwischenraum); - const spanne = Math.max(...p.hellsterPunkt.map((x, i) => x - p.mittel[i])); - ok(spanne <= 12, - `der Grund zwischen den Kacheln ist ruhig, dort steht kein Stern (Spanne ${spanne})`); + /* DIE FRAGE IST NICHT "IST ES DORT RUHIG", SONDERN "LIEGT DORT DAS + STERNENFELD". + + Bis zum 16.09.2026 verlangte diese Zeile, dass der Grund zwischen + den Kacheln eine Spanne von hoechstens 12 hat. Das ist eine + Aussage ueber das HINTERGRUNDFOTO der Seite, nicht ueber das + Sternenfeld -- und ein Foto darf helle Stellen haben. Gemessen + wurden 27, ohne dass irgendetwas kaputt war. + + Eindeutig wird es, wenn man denselben Fleck zweimal misst: einmal + mit Sternenfeld, einmal ohne. Liegt es wirklich nur auf den + Kacheln, aendert sich dort NICHTS. Das beantwortet die Frage + unabhaengig davon, was auf dem Foto zu sehen ist. */ + const mit = await punkte(zwischenraum); + await seite.addStyleTag({ content: ":root { --sternenfeld: none; }" }); + await seite.waitForTimeout(250); + const ohne = await punkte(zwischenraum); + await seite.evaluate(() => { + const letzte = [...document.querySelectorAll("style")].pop(); + if (letzte && letzte.textContent.includes("--sternenfeld: none")) letzte.remove(); + }); + await seite.waitForTimeout(250); + + const abstand = Math.max(...mit.mittel.map((x, i) => Math.abs(x - ohne.mittel[i]))); + const spitze = Math.max(...mit.hellsterPunkt.map((x, i) => Math.abs(x - ohne.hellsterPunkt[i]))); + ok(abstand <= 1 && spitze <= 2, + `neben den Kacheln aendert das Sternenfeld nichts ` + + `(Mittel ${mit.mittel} -> ${ohne.mittel}, hellster ${mit.hellsterPunkt} -> ${ohne.hellsterPunkt})`); } } diff --git a/workspace/app.webmanifest b/workspace/app.webmanifest index 3ffb87b1..5f48b5da 100644 --- a/workspace/app.webmanifest +++ b/workspace/app.webmanifest @@ -13,25 +13,25 @@ "theme_color": "#06090f", "icons": [ { - "src": "/assets/img/app-symbole/workspace-192.png?v=202609161659", + "src": "/assets/img/app-symbole/workspace-192.png?v=202609161723", "sizes": "192x192", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/workspace-512.png?v=202609161659", + "src": "/assets/img/app-symbole/workspace-512.png?v=202609161723", "sizes": "512x512", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609161659", + "src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609161723", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, { - "src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609161659", + "src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609161723", "sizes": "512x512", "type": "image/png", "purpose": "maskable" diff --git a/workspace/assets/css/crew-haus.css b/workspace/assets/css/crew-haus.css index b3134503..51ffea6a 100644 --- a/workspace/assets/css/crew-haus.css +++ b/workspace/assets/css/crew-haus.css @@ -553,7 +553,7 @@ transparent 68%), /* Nebel unten LINKS, Babyblau -- die gegenueberliegende Ecke, damit der Verlauf quer durch die Kachel laeuft */ - radial-gradient(ellipse 66% 62% at 12% 88%, + radial-gradient(ellipse 66% 52% at 10% 104%, color-mix(in srgb, var(--ton, var(--akzent)) 18%, rgba(90, 162, 232, .70)) 0%, transparent 70%); diff --git a/workspace/aufgaben.html b/workspace/aufgaben.html index a2d0059f..79c417a1 100644 --- a/workspace/aufgaben.html +++ b/workspace/aufgaben.html @@ -12,19 +12,19 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - + + + + + + - +
@@ -282,10 +282,10 @@ - - - - - + + + + +