From 0031091bdd43f30137f9997498cb91982e9754e3 Mon Sep 17 00:00:00 2001 From: Dogfather Date: Wed, 30 Sep 2026 10:43:42 +0200 Subject: [PATCH] Die Eckenwahl zeigt, wo die Kameras stehen -- der letzte offene Punkt der Werbung MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Offener Punkt vom 29.09.2026: „Die Eckenbilder koennen auf den Kamerakacheln landen. 'Unten rechts' liegt im Layout 'Kino' genau dort, wo die Kameras stehen. ... aber die Regie warnt dich (noch) nicht vorher." GEZEIGT, NICHT VERBOTEN. Ein Platz, den die Regie ablehnt, waere falsch: Vielleicht soll das Logo genau dorthin, weil die Kameras gleich umziehen oder weil auf „nur Video" geschaltet wird. Wer entscheidet, braucht die Auskunft -- nicht die Entmuendigung. Dasselbe Verhaeltnis wie beim Tempo-Knopf, der grau wird statt zu verschwinden. NUR IM LAYOUT „KINO". `kamera_ecke` steuert den Stapel nur dort; bei „gleich" und „Kamera gross" stehen die Kameras woanders, bei „nur Video" gar nicht. Ein Hinweis, der auch dann erschiene, warnte vor etwas, das nicht passieren kann -- und so etwas gewoehnt man sich ab. AM KNOPF UND IM VORLESETEXT. Ein gestrichelter Rahmen in Bernstein (40 %, gedaempft -- was gewaehlt ist, muss lauter sein als was zu bedenken ist) UND der Satz „hier stehen gerade die Kameras" in `title` und `aria-label`. Eine Markierung, die nur eine Farbe ist, gibt es fuer den nicht, der Farben schlecht unterscheidet oder die Seite vorlesen laesst. Gemessen in mess-reaktion, mit Gegenprobe -- eine Markierung, die immer da ist, ist keine: Eckenwahl im Kino (Kameras unten rechts): ur:benannt Gegenprobe bei „nur Video": 0 Hinweis(e) „benannt" prueft ausdruecklich, dass der Satz dransteht und nicht nur die Farbe. Gemessen: mess-reaktion 0/0, pruef-reaktion 407/0, pruef-css-klassen 37/0, pruef-struktur 44/0, pruef-tippziele 13/0. Co-Authored-By: Claude Opus 5 --- server/mess-reaktion.mjs | 62 +++++++++++++++++++++++++++++++ workspace/anruf-probe.html | 10 ++--- workspace/app.webmanifest | 8 ++-- workspace/assets/css/reaktion.css | 17 +++++++++ workspace/assets/js/reaktion.js | 34 ++++++++++++++++- workspace/aufgaben.html | 38 +++++++++---------- workspace/automation.html | 32 ++++++++-------- workspace/befinden.html | 34 ++++++++--------- workspace/bereich.html | 44 +++++++++++----------- workspace/bewerben.html | 38 +++++++++---------- workspace/bewerbungen.html | 36 +++++++++--------- workspace/buehne.html | 6 +-- workspace/calls.html | 34 ++++++++--------- workspace/chat.html | 40 ++++++++++---------- workspace/content.html | 34 ++++++++--------- workspace/crew-index.html | 12 +++--- workspace/crew.webmanifest | 8 ++-- workspace/dateien.html | 34 ++++++++--------- workspace/entwicklung.html | 36 +++++++++--------- workspace/hilfe.html | 30 +++++++-------- workspace/index.html | 10 ++--- workspace/kalender.html | 34 ++++++++--------- workspace/leistung.html | 32 ++++++++-------- workspace/material.html | 32 ++++++++-------- workspace/notizen.html | 28 +++++++------- workspace/personen.html | 32 ++++++++-------- workspace/profil.html | 36 +++++++++--------- workspace/reaktion.html | 38 +++++++++---------- workspace/rechte.html | 34 ++++++++--------- workspace/report.html | 36 +++++++++--------- workspace/scouting.html | 32 ++++++++-------- workspace/start.html | 32 ++++++++-------- workspace/startcheck.html | 34 ++++++++--------- workspace/steckbrief.html | 36 +++++++++--------- workspace/support.html | 28 +++++++------- workspace/tafel.html | 6 +-- workspace/talente.html | 36 +++++++++--------- workspace/team.html | 32 ++++++++-------- workspace/teamlage.html | 34 ++++++++--------- workspace/teilen.html | 30 +++++++-------- workspace/treff-moderation.html | 32 ++++++++-------- workspace/treff-regeln.html | 32 ++++++++-------- workspace/uebersicht.html | 32 ++++++++-------- workspace/unsere-seiten.html | 30 +++++++-------- workspace/unterstuetzen.html | 32 ++++++++-------- workspace/werdegang.html | 32 ++++++++-------- workspace/willkommen.html | 30 +++++++-------- workspace/wissen.html | 34 ++++++++--------- 48 files changed, 782 insertions(+), 671 deletions(-) diff --git a/server/mess-reaktion.mjs b/server/mess-reaktion.mjs index 18fa380e..2399e3e1 100644 --- a/server/mess-reaktion.mjs +++ b/server/mess-reaktion.mjs @@ -2839,6 +2839,68 @@ console.log("=== Die Werbeeinblendung ==="); "das Laufband fuer das Bildschirmfoto"); await bild(zuschauer.seite, "24-werbung"); + /* ---- 5b. Zeigt die Eckenwahl, wo die Kameras stehen? ---- + Offener Punkt vom 29.09.: „Unten rechts" liegt im Layout „Kino" + genau dort, wo die Kamerakacheln sitzen. Die Regie sagt es jetzt + vorher -- gezeigt, nicht verboten. + + DIE GEGENPROBE IST DER HALBE SINN. Eine Markierung, die immer da + ist, ist keine. Sie muss auch verschwinden koennen, und zwar + genau dann, wenn es nichts zu bedenken gibt. */ + { + const lies = () => host.seite.evaluate(() => { + const g = document.querySelector("#eckenwahl-dogi .eckenwahl__gitter"); + return [...(g?.children || [])] + .filter((k) => k.dataset.kameras === "ja") + .map((k) => `${k.dataset.platz}:${k.title.includes("Kameras") ? "benannt" : "STUMM"}`); + }); + + const stelle = (koerper) => host.seite.evaluate(async (b) => { + const a = await fetch("/workspace/api/reaktion/layout", { + method: "POST", credentials: "same-origin", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(b), + }); + return a.status; + }, koerper); + + await stelle({ layout: "kino", kamera_ecke: "ur" }); + await warte(host.seite, + () => document.querySelector('#eckenwahl-dogi .eckenwahl__knopf[data-kameras="ja"]'), + "der Kamerahinweis in der Eckenwahl"); + const imKino = await lies(); + console.log(` Eckenwahl im Kino (Kameras unten rechts): ${imKino.join(", ") || "KEINER"}`); + if (imKino.length !== 1 || !imKino[0].startsWith("ur:")) { + console.log(" ACHTUNG: Der Hinweis steht nicht genau an der Kameraecke."); + ausgang = 1; + } + if (imKino.some((x) => x.endsWith("STUMM"))) { + console.log(" ACHTUNG: Der Hinweis ist nur eine Farbe -- wer vorlesen " + + "laesst, bekommt ihn nicht."); + ausgang = 1; + } + + /* GEGENPROBE: Bei „nur Video" gibt es keine Kameras -- dann darf + auch kein Hinweis stehen. Eine Warnung vor etwas, das nicht + passieren kann, gewoehnt man sich ab. */ + await stelle({ layout: "nur_video" }); + await host.seite.waitForFunction( + () => document.body.dataset.stand !== undefined, null, { timeout: 5000 }) + .catch(() => {}); + let ohne = await lies(); + for (let i = 0; i < 12 && ohne.length; i++) { + await host.seite.waitForTimeout(250); + ohne = await lies(); + } + console.log(` Gegenprobe bei „nur Video": ${ohne.length} Hinweis(e)`); + if (ohne.length) { + console.log(" ACHTUNG: Der Hinweis steht auch dort, wo es gar keine " + + "Kameras gibt."); + ausgang = 1; + } + await stelle({ layout: "kino" }); + } + /* ---- 6. Wieder aus ---- */ const aus = await setz({ art: "aus", ecke_dogi: "aus", ecke_hase: "aus" }); await warte(zuschauer.seite, diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index e5545dd9..2755f431 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`. --> - - + + - +