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:
2026-09-10 13:59:54 +02:00
co-authored by Claude Opus 5
parent 3cda64568d
commit 8bcbd83061
46 changed files with 1669 additions and 286 deletions
+55 -1
View File
@@ -153,7 +153,35 @@ export function sitzungPasstZurAdresse(rolle, hostKopfzeile) {
* Serverumbau lautlos weg.
*/
export function crewWeiche(req, res, next) {
if (!istCrewAdresse(req.get("host"))) return next();
if (!istCrewAdresse(req.get("host"))) {
/* DIE ANDERE RICHTUNG -- und sie war ein echtes Loch.
Die zweite Zugangswand liegt als Datei im selben Ordner wie alles
andere und wird von express.static ausgeliefert. Ohne diese Zeile
kann sie JEDER unter ihrem Dateinamen aufrufen, auch auf
workspace.dogfather-universe.com -- und saehe dort eine
Anmeldeseite, die es dort gar nicht geben soll.
Gefunden hat das nicht ein Gedanke, sondern eine Pruefung: Der
Wortleck-Test durchsucht ALLE ausgelieferten Dateien, und dass er
diese eine ueberhaupt las, war die Antwort auf eine Frage, die
ich mir nicht gestellt hatte -- naemlich wer sie sonst noch
abrufen kann.
404 UND KEINE WEITERLEITUNG: "Gibt es nicht" ist die Antwort, die
nichts verraet. Eine Weiterleitung wuerde sagen, dass es die
Datei gibt, nur woanders.
NUR AUF DEN DREI ECHTEN ADRESSEN, nicht "ueberall ausser crew":
Sonst waere sie auch auf localhost gesperrt, und die Pruefung,
die die Wand im Browser ansieht, koennte sie nicht mehr oeffnen
-- sie wuerde gruen bleiben und nichts mehr messen. */
if (istOhneModiAdresse(req.get("host"))
&& req.path.toLowerCase().replace(/\/{2,}/g, "/") === "/workspace/crew-index.html") {
return res.status(404).type("html").send("Nicht gefunden.");
}
return next();
}
res.setHeader("X-Robots-Tag", "noindex, nofollow");
@@ -179,6 +207,32 @@ export function crewWeiche(req, res, next) {
return next();
}
/* DIE ZUGANGSWAND GEHOERT DOGI UND DEN MODIS (10.09.2026).
Filipe: "alles soll auf dogfather und die modis perfektionniert
werden auf der neuen modi seite."
Bis dahin stand hier die gewohnte Wand: Spicy-Media-Logo, "Creator
Workspace", fuenf Rollenkacheln -- fuer einen Modi war davon nichts
richtig. Jetzt liefert crew. eine eigene Seite mit eigener Buehne,
eigenem Namen und ohne Kachelreihe.
DAS KEHRT EINE FRUEHERE ENTSCHEIDUNG UM, und das gehoert
hierhergeschrieben: Vorher war die Wand absichtlich identisch --
wer die Adresse errat, sollte etwas Vertrautes sehen und nichts
ueber Modis erfahren. Filipe hat anders entschieden. Der Tausch
ist damit bewusst: Ein Ratender liest jetzt "Team Dogi". Alles
andere bleibt, wie es war -- sein Code funktioniert dort nicht.
ZWEI ADRESSEN, EINE DATEI: `/workspace/` und
`/workspace/index.html` fuehren beide zur Wand, also muessen beide
umgebogen werden. Die zweite zu vergessen waere nicht aufgefallen,
denn im Alltag tippt sie niemand. */
if (req.path === "/workspace/" || req.path === "/workspace/index.html") {
req.url = "/workspace/crew-index.html";
return next();
}
if (istWorkspacePfad(req.path) || req.path.startsWith("/assets/")) return next();
return res.redirect(302, "/workspace/");
}