screen5: Aus dem Treff wird das Rudel, aus der Zentrale die IrrenAnstalt

Filipe, 22.09.2026: "ersetze die zentrale durch, Die IrrenAnstalt.
genau so geschrieben bitte. und alles was treff heißt oder wo treff
steht soll durch Rudel ersetzt werden bitte."

Die Schreibweise "IrrenAnstalt" mit grossem A in der Mitte ist so
gewollt. Das steht als Hinweis daneben, damit sie beim naechsten Mal
niemand "korrigiert".

WAS UMBENANNT WURDE: alles, was jemand LIEST -- Kachelnamen,
Ueberschriften, Markenzeilen, Saetze, Meldungen, Aufgabenvorlagen.
116 Zeilen in 42 Dateien.

WAS BLEIBT: Adressen (treff-regeln.html), Bezeichner (TREFF_ROLLEN),
Datenbankwerte (bereich = 'treff'), Abfrageteile (b=treff). Eine
Adresse umzubenennen bricht jedes Lesezeichen, und ein Datenbankwert
umzuschreiben waere eine Umstellung ohne Gegenwert. Dieselbe
Entscheidung wie heute frueh bei Dogi-Media, wo material.html auch
material.html geblieben ist.

DREI GRAMMATIKFEHLER IM EIGENEN ENTWURF, alle vor dem Ausliefern
gefunden -- ein blindes Ersetzen reicht hier nicht:

1. "der Treff" ist maennlich, "das Rudel" saechlich. Ohne Tabelle
   waere ueberall "Der Rudel" gestanden. (Und "Treffer" waere zu
   "Rudeler" geworden, "Treffen" zu "Rudelen" -- deshalb greift die
   Regel nur bei Wortgrenze und nie vor einem Kleinbuchstaben.)

2. BINDESTRICH-ZUSAMMENSETZUNGEN. In "der Treff-Chat" gehoert der
   Artikel zu "Chat", nicht zu "Treff". Der erste Durchlauf machte
   daraus "das Rudel-Chat", "das Rudel-Kacheln" und "ein Rudel-Raum".
   Jetzt greift die Artikelregel nur, wenn das Wort allein steht.

3. GESCHUETZTE LEERZEICHEN. In den Markenzeilen steht
   `Der Treff`, damit die zwei Woerter nicht umbrechen. Das
   Muster hat daran vorbeigegriffen: "Der Rudel", auf fuenf
   Seiten. Jetzt wird das Trennzeichen mitgefasst und unveraendert
   wieder eingesetzt.

Gefunden wurden alle drei, weil jede einzelne der 116 Zeilen vor dem
Schreiben als ALT/NEU ausgegeben und gelesen wurde -- und danach
gezielt nach falschen Artikeln gesucht ("den Rudel", "der Rudel",
"einen Rudel"). Uebrig blieben sechs Treffer, und die sind alle
richtig: "einen Rudel-Raum", "der Rudel-Chat", "den Rudel-Regeln" --
Zusammensetzungen, bei denen der Artikel zum letzten Wort gehoert.

UND ZWEI PRUEFUNGEN, die die Umbenennung nicht mitbekommen haetten:
`/Treff/.test(...)` und `/Treff/i.test(...)`. Ein regulaerer Ausdruck
ist keine Zeichenkette -- sie haetten ab sofort nach einem Wort
gesucht, das die Seite nicht mehr sagt, und waeren still rot geworden,
ohne dass etwas kaputt ist.

Geprueft, alle gruen: pruef-treff, pruef-treffchat,
pruef-deutsche-texte, pruef-uebernahme, pruef-crew-adresse,
pruef-willkommen, pruef-wege-nach-draussen, pruef-vorlagen,
pruef-start-ansicht, pruef-struktur.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-22 14:25:56 +02:00
co-authored by Claude Opus 5
parent 091c5f9cd9
commit 25de892fdb
74 changed files with 708 additions and 696 deletions
+9 -7
View File
@@ -188,7 +188,7 @@ ok(!!kDogi && !!kModi && !!kGast, "DogFather, ein Modi und zwei Gäste sind ange
1. DIE RECHNUNG — ohne Server, ohne Uhr zu fälschen
======================================================================= */
melde("");
melde("=== 1. Wann schläft der Treff ===");
melde("=== 1. Wann schläft das Rudel ===");
{
/* Die Vorgabe ist 0 bis 6 -- geprüft wird gegen die KONSTANTEN, nicht
gegen eine abgeschriebene Zahl. Wer die Zeiten ändert, ändert sie
@@ -237,8 +237,8 @@ melde("=== 2. Der Raum ===");
ok(raeume.length === 1, `und darin genau einen Raum (${raeume.length})`);
const treff = raeume[0];
ok(treff?.art === "kanal" && treff?.kategorie === "treff",
`den Treff (${treff?.art}/${treff?.kategorie})`);
ok(treff?.name === "Der Treff", `mit lesbarem Namen: „${treff?.name}“`);
`das Rudel (${treff?.art}/${treff?.kategorie})`);
ok(treff?.name === "Das Rudel", `mit lesbarem Namen: „${treff?.name}“`);
/* GENAU EINER. Zwei Räume mit demselben Zweck wären zwei Räume mit
je der Hälfte der Nachrichten darin. */
@@ -247,7 +247,7 @@ melde("=== 2. Der Raum ===");
const d = oeffne();
const anzahl = d.prepare(
"SELECT COUNT(*) AS n FROM chat_raeume WHERE kategorie = 'treff'").get().n;
ok(anzahl === 1, `es gibt genau einen Treff-Raum (${anzahl})`);
ok(anzahl === 1, `es gibt genau einen Rudel-Raum (${anzahl})`);
const drin = d.prepare(`SELECT p.rolle, t.leitung FROM chat_teilnehmer t
JOIN personen p ON p.id = t.person_id
@@ -292,7 +292,7 @@ let treffId = null;
{
const r = json(await ruf("/workspace/api/chat/raeume", CREW, "GET", { cookie: kGast }));
treffId = r.raeume?.[0]?.id ?? null;
ok(!!treffId, `der Treff hat eine Nummer (${treffId})`);
ok(!!treffId, `das Rudel hat eine Nummer (${treffId})`);
ok(r.treff && r.treff.zu === NACHTLAUF,
NACHTLAUF
@@ -390,7 +390,7 @@ let treffId = null;
const imHaus = await ruf(`/workspace/api/chat/raeume/${treffId}/nachrichten`, HAUS, "POST",
{ cookie: kCreator }, { text: "Ich auch!" });
ok(imHaus.code === 404,
`und auf seiner eigenen Adresse kennt der Treff ihn nicht (${imHaus.code})`);
`und auf seiner eigenen Adresse kennt das Rudel ihn nicht (${imHaus.code})`);
/* Dass seine Anmeldung ueberhaupt gilt -- sonst waeren beide Zeilen
oben nur deshalb gruen, weil der Keks nichts wert ist. */
const seins = await ruf("/workspace/api/chat/raeume", HAUS, "GET", { cookie: kCreator });
@@ -542,7 +542,9 @@ melde("=== 6b. Im Browser ===");
|| !!document.getElementById("anruf-video-start"),
breiter: document.documentElement.scrollWidth > document.documentElement.clientWidth + 1,
}));
ok(/Treff/i.test(stand.text), "die Seite nennt den Treff");
/* s.o.: Der Ausdruck hat die Umbenennung nicht mitbekommen und
haette nach "Treff" gesucht, waehrend die Seite "Rudel" sagt. */
ok(/Rudel/i.test(stand.text), "die Seite nennt das Rudel");
/* KEIN TELEFONKNOPF. Der Riegel im Server ist das eine -- ein Knopf,
der mit 404 antwortet, waere trotzdem ein Knopf, den man drueckt. */
ok(stand.anrufKnopf === false, "und es gibt keinen Anrufknopf");