Die Modi-Seite gehoert Dogi und den Modis -- Wand, Zeichen, Reiter
Filipe zum Bildschirmfoto der Zugangswand auf crew.: "alles soll auf dogfather und die modis perfektionniert werden auf der neuen modi seite." Dort stand bis eben die gewohnte Wand: Spicy-Media-Logo, "Creator Workspace", der Satz ueber Manager, Scouts und Creator, fuenf Rollenkacheln. Fuer einen Modi war davon nichts richtig. DIE KACHELREIHE FAELLT WEG, und das ist eine Verbesserung: Eine Reihe mit genau einem Eintrag ist keine Auswahl, sondern eine Huerde -- man muesste erst daraufdruecken, bevor das Codefeld etwas annimmt. gate.js prueft jetzt, OB es Kacheln gibt, statt sie vorauszusetzen. DIE BUEHNE IST AUS DEM VORHANDENEN MOTIV GEBAUT, nicht neu erfunden, und das ist kein Sparen: Die Anmeldeseite ist eine MECHANIK. Rechts steht im Bild eine leere Tafel, und gate.css setzt die Karte auf Hundertstel genau dort hinein. Ein frei erfundenes Bild haette diese vier Zahlen mitgenommen. Also dieselbe Szene, ueber den Mischmodus "color" ins Blau umgefaerbt (hue-rotate haette Rot nach Cyan UND Blau nach Gelb gedreht), Dogi anstelle des Spicy-Medaillons, "TEAM DOGI" darunter. Gemessen: rote Bildpunkte 18,1 % -> 0,0 %, Karte auf 0 px genau. NACH DER ANMELDUNG geht es weiter: kopf.js zieht Reitertitel und Zeichen aus `ich.marke` nach -- "Aufgaben · Team Dogi" statt "· Spicy & Dogi", mit dem eigenen Symbol. An einer Stelle statt in 30 HTML-Dateien. DREI FUNDE, DIE NICHT AUS DEM KOPF KAMEN 1. DER KNOPF WAERE SCHLECHTER LESBAR GEWORDEN. Mein erstes Blau endete bei #4aa4cf -- weisse Schrift darauf: 2,8 zu 1. Der rot-blaue Verlauf, den er ersetzt, haelt ueber seine GANZE Laenge 4,65; er war offenbar genau darauf gebaut. Jetzt 5,10 zu 1, am fertigen Bildschirmfoto gemessen statt aus einer einzelnen Farbe hergeleitet. 2. DIE NEUE WAND WAR AUCH AUF workspace. ABRUFBAR. Sie liegt als Datei im selben Ordner. Aufgefallen ist das, weil der Wortleck-Test sie ueberhaupt las -- die Frage WARUM war die Antwort. Ausserhalb von crew. antwortet sie jetzt mit 404; auf den Pruefadressen bleibt sie erreichbar, sonst koennte die Pruefung sie nicht mehr oeffnen und waere gruen ohne etwas zu messen. 3. ZWEI GLEICHE KACHELN AUF DER STARTSEITE, seit dem letzten Deploy live. Die Team-Lage-Kachel von heute Mittag hatte Name, Zeichen, Ton UND Gruppe einer schon vorhandenen -- fuehrte aber woandershin. Gefunden von "jede Kachel hat ihre eigene Farbe (23 Farben auf 24 Kacheln)". Jetzt "Eingang", Gruppe Taeglich, neuer Ton 24 (#8a20cf, Abstand 38,5 im CIELAB-Raum; reines Blau haette 52 gehabt und waere auf dunklem Grund am schlechtesten zu fokussieren). Eine Fehlermeldung zeigte dadurch auf die falsche Seite -- ebenfalls behoben. Und die Pruefung, die es fand, zaehlte nur bereiche.js: Vom Server angehaengte Kacheln kannte sie nicht. Sie fragt jetzt beide Quellen. Der Wortleck-Test meldete ausserdem sieben Fundstellen -- allesamt Kommentare, die ich beim Bauen selbst geschrieben hatte. GEMESSEN pruef-crew-adresse 103 pruef-crew-wand-bild 43 (neu) pruef-modi-checkliste 59 pruef-modi-verborgen 75 pruef-rollen 245 pruef-zwischenspeicher 21 pruef-modi-wortleck 4 pruef-start-ansicht gruen Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -303,6 +303,121 @@ for (const s of mc.icons || []) {
|
||||
ok((mc.icons || []).length > 0 && symboleDa === (mc.icons || []).length,
|
||||
`crew.: alle ${symboleDa} Symbole werden auch ausgeliefert`);
|
||||
|
||||
/* =====================================================================
|
||||
DIE ZUGANGSWAND
|
||||
|
||||
Filipe am 10.09.2026: "alles soll auf dogfather und die modis
|
||||
perfektionniert werden auf der neuen modi seite." Bis dahin stand auf
|
||||
crew. die gewohnte Wand -- Spicy-Media-Logo, "Creator Workspace",
|
||||
fuenf Rollenkacheln. Fuer einen Modi war davon nichts richtig.
|
||||
|
||||
Zwei Dinge werden hier gemessen, und das zweite ist das wichtigere:
|
||||
dass die ALTE Wand unangetastet blieb.
|
||||
===================================================================== */
|
||||
console.log("");
|
||||
console.log("--- Zwei Waende ---");
|
||||
|
||||
const wandCrew = await hole("/workspace/", { host: CREW });
|
||||
const wandWs = await hole("/workspace/", { host: WS });
|
||||
|
||||
ok(wandCrew.status === 200, "crew.: die Zugangswand kommt (keine Weiterleitungsschleife)");
|
||||
ok(wandWs.status === 200, "workspace.: die Zugangswand kommt");
|
||||
|
||||
ok(/Team Dogi|Team Dogi/.test(wandCrew.text), "crew.: dort steht Team Dogi");
|
||||
ok(/DogFather/.test(wandCrew.text), "crew.: und DogFather daneben");
|
||||
ok(!/Spicy/i.test(wandCrew.text), "crew.: von Spicy Media steht dort nichts mehr");
|
||||
ok(!/Creator/i.test(wandCrew.text), "crew.: und vom Creator Workspace auch nicht");
|
||||
ok(/die Modis/.test(wandCrew.text), "crew.: der Satz nennt DogFather und die Modis");
|
||||
|
||||
/* Die Kachelreihe ist weg -- auf einer Adresse mit genau einer Sorte
|
||||
Zugang waere sie eine Bedienhuerde, keine Auswahl. */
|
||||
const kachelnCrew = (wandCrew.text.match(/class="rolle"/g) || []).length;
|
||||
const kachelnWs = (wandWs.text.match(/class="rolle"/g) || []).length;
|
||||
ok(kachelnCrew === 0, `crew.: keine Rollenkacheln (gezaehlt: ${kachelnCrew})`);
|
||||
ok(kachelnWs === 5, `workspace.: dort weiterhin fuenf (gezaehlt: ${kachelnWs})`);
|
||||
ok(/SpicyMedia/.test(wandWs.text), "workspace.: die alte Wand ist unveraendert");
|
||||
|
||||
/* Auch der ausgeschriebene Weg. Ihn zu vergessen waere nicht
|
||||
aufgefallen -- im Alltag tippt ihn niemand. */
|
||||
const wandCrewLang = await hole("/workspace/index.html", { host: CREW });
|
||||
ok(wandCrewLang.status === 200 && /Team Dogi|Team Dogi/.test(wandCrewLang.text),
|
||||
"crew.: auch /workspace/index.html fuehrt zur neuen Wand");
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
DIE ZWEITE WAND GIBT ES NUR AUF crew.
|
||||
|
||||
Sie liegt als Datei im selben Ordner wie alles andere. Ohne Sperre
|
||||
koennte sie jeder unter ihrem Dateinamen aufrufen -- auch auf
|
||||
workspace. -- und saehe dort eine Anmeldeseite, die es dort nicht
|
||||
geben soll.
|
||||
------------------------------------------------------------------ */
|
||||
/* ZWEI NUMMERN, EINE AUSSAGE. Auf workspace. antwortet die Sperre mit
|
||||
404 "gibt es nicht". Auf der Hauptseite und www. kommt schon der
|
||||
Umzugs-Zwischenschritt vom 06.09.2026 davor und beantwortet den
|
||||
GANZEN Pfad /workspace mit 410 "gab es, ist absichtlich weg".
|
||||
|
||||
Erwartet werden deshalb beide -- was zaehlt, ist: kein Inhalt und
|
||||
keine 200. Auf eine der zwei Nummern zu bestehen hiesse, eine
|
||||
fremde, aeltere Entscheidung nachtraeglich zu einem Fehler zu
|
||||
erklaeren. */
|
||||
for (const [name, host] of [["workspace.", WS], ["die Hauptseite", HAUPT], ["www.", "www." + HAUPT]]) {
|
||||
const a = await hole("/workspace/crew-index.html", { host });
|
||||
ok(a.status === 404 || a.status === 410,
|
||||
`${name}: die zweite Wand gibt es dort nicht (${a.status})`);
|
||||
ok(!/Team Dogi/.test(a.text), `${name}: und ihr Inhalt kommt auch nicht durch`);
|
||||
}
|
||||
/* Doppelte Schraegstriche haben diese Schranke im Haus schon einmal
|
||||
umgangen (04.09.2026, //workspace/start.html kam mit 200). */
|
||||
const schraeg = await hole("/workspace//crew-index.html", { host: WS });
|
||||
ok(schraeg.status === 404 || !/Team Dogi/.test(schraeg.text),
|
||||
`workspace.: auch mit doppeltem Schraegstrich nicht (${schraeg.status})`);
|
||||
|
||||
/* GEGENPROBE: Auf crew. und auf den Pruefadressen bleibt sie erreichbar
|
||||
-- sonst haette ich sie fuer alle gesperrt, auch fuer die Pruefung,
|
||||
die sie im Browser ansieht. Die waere dann gruen und wertlos. */
|
||||
const dortSchon = await hole("/workspace/crew-index.html", { host: CREW });
|
||||
ok(dortSchon.status === 200, "crew.: dort gibt es sie natuerlich");
|
||||
const lokalSchon = await hole("/workspace/crew-index.html", { host: LOKAL });
|
||||
ok(lokalSchon.status === 200, "127.0.0.1: und auf den Pruefadressen auch");
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
WAS gate.js AUS DEM HTML BRAUCHT -- auf BEIDEN Seiten.
|
||||
|
||||
Es gibt jetzt zwei Wanddateien und ein gemeinsames Skript. Wer nur
|
||||
eine anfasst, macht die andere kaputt, und zwar lautlos: Ein
|
||||
fehlendes Element ist im Browser ein `null`, der Fehler steht in der
|
||||
Konsole und sonst nirgends. Deshalb wird beides gegen dieselbe Liste
|
||||
gehalten.
|
||||
------------------------------------------------------------------ */
|
||||
const GEBRAUCHT = ["formular", "code", "auge", "fehler", "hinweis", "knopf", "fuer"];
|
||||
for (const [name, wand] of [["crew.", wandCrew], ["workspace.", wandWs]]) {
|
||||
const fehlend = GEBRAUCHT.filter((id) => !wand.text.includes(`id="${id}"`));
|
||||
ok(fehlend.length === 0,
|
||||
`${name} die Wand hat alle ${GEBRAUCHT.length} Elemente, die gate.js sucht`
|
||||
+ (fehlend.length ? ` -- es fehlen: ${fehlend.join(", ")}` : ""));
|
||||
ok(wand.text.includes("knopf__text") && wand.text.includes("buehne__bild"),
|
||||
`${name} auch die beiden Klassen, die gate.js anspricht`);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
Die Buehne.
|
||||
------------------------------------------------------------------ */
|
||||
ok(/crew-gate-\d+\.webp/.test(wandCrew.text), "crew.: die eigene Buehne ist eingebunden");
|
||||
ok(!/buehne\/gate-\d+\.webp/.test(wandCrew.text), "crew.: die alte Buehne nicht mehr");
|
||||
ok(/buehne\/gate-\d+\.webp/.test(wandWs.text), "workspace.: dort weiterhin die alte");
|
||||
ok(/crew-32\.png/.test(wandCrew.text) && /crew-180\.png/.test(wandCrew.text),
|
||||
"crew.: eigenes Zeichen im Reiter und auf dem Startbildschirm");
|
||||
|
||||
/* Ein Verweis beweist nicht, dass die Datei da ist. */
|
||||
const buehnen = [...new Set(wandCrew.text.match(/assets\/img\/buehne\/crew-gate-[a-z0-9-]+\.webp/g) || [])];
|
||||
let buehnenDa = 0;
|
||||
for (const b of buehnen) {
|
||||
const a = await hole("/workspace/" + b, { host: CREW });
|
||||
if (a.status === 200) buehnenDa++;
|
||||
}
|
||||
ok(buehnen.length >= 8 && buehnenDa === buehnen.length,
|
||||
`crew.: alle ${buehnenDa} von ${buehnen.length} Buehnenbildern werden ausgeliefert`);
|
||||
|
||||
/* =====================================================================
|
||||
DIE GEGENPROBE
|
||||
|
||||
|
||||
Reference in New Issue
Block a user