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:
@@ -140,7 +140,7 @@ for (const b of TREFF_BRETTER) {
|
||||
console.log(` ${b.padEnd(14)}` + zeile.map((z) => z.padEnd(8)).join(""));
|
||||
}
|
||||
|
||||
console.log("\n=== Und die uebrigen Kategorien (ausserhalb des Treffs) ===");
|
||||
console.log("\n=== Und die uebrigen Kategorien (ausserhalb des Rudels) ===");
|
||||
const andere = Object.keys(BEREICHE).filter((b) => !TREFF_BRETTER.includes(b));
|
||||
console.log(" Bereich " + ROLLEN.map((r) => r.padEnd(8)).join(""));
|
||||
for (const b of andere) {
|
||||
|
||||
@@ -95,7 +95,7 @@ function aufgabe(personId, titel, status, frist) {
|
||||
}
|
||||
const modi = leute.find((p) => p.rolle === "modi");
|
||||
for (const p of leute) {
|
||||
aufgabe(p.id, "Regeln des Treffs lesen", "offen", tag(-2));
|
||||
aufgabe(p.id, "Regeln des Rudels lesen", "offen", tag(-2));
|
||||
aufgabe(p.id, "Chat vor der Sendung pruefen", "offen", tag(0));
|
||||
aufgabe(p.id, "Drei Zeilen nach der Schicht", "offen", tag(1));
|
||||
aufgabe(p.id, "Clip zuschneiden", "arbeit", tag(2));
|
||||
|
||||
@@ -446,8 +446,12 @@ ok(!/Creator/i.test(wandCrew.text), "crew.: und vom Creator Workspace auch nicht
|
||||
sichtbare Unterzeile, nicht die Datei. */
|
||||
{
|
||||
const unter = /<p class="unterzeile">([^<]*)<\/p>/.exec(wandCrew.text)?.[1] || "";
|
||||
ok(/Team\s*Dogi/.test(unter) && /Treff/.test(unter),
|
||||
`crew.: die Unterzeile nennt Team Dogi und den Treff ("${unter.trim()}")`);
|
||||
/* Sucht seit dem 22.09.2026 nach "Rudel": Der Treff heisst so.
|
||||
Ein regulaerer Ausdruck ist keine Zeichenkette -- die
|
||||
Umbenennung ist an ihm vorbeigelaufen, und er haette ab sofort
|
||||
nach einem Wort gesucht, das die Seite nicht mehr sagt. */
|
||||
ok(/Team\s*Dogi/.test(unter) && /Rudel/.test(unter),
|
||||
`crew.: die Unterzeile nennt Team Dogi und das Rudel ("${unter.trim()}")`);
|
||||
ok(!/Arbeitsbereich/.test(unter),
|
||||
"und behauptet nicht mehr, das hier sei nur zum Arbeiten");
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ for (const [bereich, liste] of Object.entries(as.ARBEIT_START)) {
|
||||
for (const e of liste) texte.push([`Start ${bereich}`, `${e.titel} ${e.text ?? ""}`]);
|
||||
}
|
||||
for (const [bereich, liste] of Object.entries(ts.TREFF_START)) {
|
||||
for (const e of liste) texte.push([`Treff ${bereich}`, `${e.titel} ${e.text ?? ""}`]);
|
||||
for (const e of liste) texte.push([`Rudel ${bereich}`, `${e.titel} ${e.text ?? ""}`]);
|
||||
}
|
||||
/* Und der Entwicklungskatalog samt seiner Blöcke und Stufen. */
|
||||
for (const b of ep.ENTWICKLUNG_BLOECKE) texte.push([`Block ${b.schluessel}`, `${b.name} ${b.text}`]);
|
||||
|
||||
@@ -239,7 +239,7 @@ melde("=== 4. Die Sendezeit steht nicht zweimal verschieden da ===");
|
||||
: "FIX_STUNDE steht nicht mehr in assets/js/streamplan.js -- "
|
||||
+ "dieser Vergleich kann nichts mehr messen");
|
||||
ok(!!treffer && Number(treffer[1]) === SENDEZEIT_STUNDE,
|
||||
`und der Treff rechnet mit derselben Stunde (${SENDEZEIT_STUNDE})`);
|
||||
`und das Rudel rechnet mit derselben Stunde (${SENDEZEIT_STUNDE})`);
|
||||
ok(SENDEZEIT_STUNDE >= 0 && SENDEZEIT_STUNDE <= 23,
|
||||
`Gegenprobe: die Stunde ist ueberhaupt eine Uhrzeit (${SENDEZEIT_STUNDE})`);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* =====================================================================
|
||||
STUFE 6: DER TREFF WIRD EIN GESPRÄCH (17.09.2026)
|
||||
|
||||
"Der Treff -- Hallo sagen, fragen, loben" war eine Liste aus Karten.
|
||||
"Das Rudel -- Hallo sagen, fragen, loben" war eine Liste aus Karten.
|
||||
Der einzige Bereich, in dem Menschen MITEINANDER reden sollen,
|
||||
zwang sie, nebeneinander zu reden: Jeder schrieb eine eigene Karte,
|
||||
niemand antwortete jemandem.
|
||||
|
||||
@@ -237,7 +237,7 @@ const messen = () => ({
|
||||
|
||||
Die Pruefung zitierte bis zum 14.09.2026 die Regel, aber nicht
|
||||
ihre Ausnahme. Gemeldet wurden dadurch die zwei Verweise im
|
||||
Fliesstext der Treff-Regeln ("Der Treff", "Regeln & Hilfe", je
|
||||
Fliesstext der Treff-Regeln ("Das Rudel", "Regeln & Hilfe", je
|
||||
20 px hoch). Sie auf 24 px zu bringen hiesse, die Zeilenhoehe des
|
||||
Absatzes zu sprengen -- man wuerde also einen Text kaputtmachen,
|
||||
um eine Regel zu erfuellen, die diesen Text ausdruecklich nicht
|
||||
|
||||
@@ -253,7 +253,7 @@ melde("=== 4. Oben die Arbeit, dann Moderation, dann Community ===");
|
||||
"und beide sind wirklich zwei Gruppen, nicht eine");
|
||||
|
||||
const gast = folgeVon("gast");
|
||||
ok(!!gast?.includes("Community"), `ein Mitglied hat den Treff (${gast?.join(" | ")})`);
|
||||
ok(!!gast?.includes("Community"), `ein Mitglied hat das Rudel (${gast?.join(" | ")})`);
|
||||
ok(!!gast?.includes("Für dich"), "und eine eigene Seite");
|
||||
/* Was sie nicht sehen, sehen sie nicht. */
|
||||
ok(!gast?.includes("Moderation"), "aber KEINE Moderation");
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
geknallt und drauf geschissen".
|
||||
|
||||
Er hatte recht, und die Ursache war eine Zeile Reihenfolge. Das
|
||||
Raster hat DREI Spalten, "Der Treff" ist doppelt breit -- stand aber
|
||||
Raster hat DREI Spalten, "Das Rudel" ist doppelt breit -- stand aber
|
||||
an DRITTER Stelle. Nach zwei normalen Kacheln war noch EINE Spalte
|
||||
frei, er passte nicht und rutschte eine Reihe tiefer. Zurueck blieb
|
||||
eine Luecke mitten im Raster.
|
||||
|
||||
@@ -334,7 +334,7 @@ let namen = [];
|
||||
einen davon zu aendern und den anderen zu vergessen. */
|
||||
namen = (j.bereiche || []).map((k) => k.name);
|
||||
/* DIE REIHENFOLGE IST TEIL DER AUSSAGE, nicht Zufall (17.09.2026).
|
||||
"Der Treff" steht seit heute VORNE, und zwar aus zwei Gruenden:
|
||||
"Das Rudel" steht seit heute VORNE, und zwar aus zwei Gruenden:
|
||||
|
||||
1. Das Raster hat drei Spalten, seine Kachel ist doppelt breit.
|
||||
An dritter Stelle passte sie nicht mehr in die erste Reihe und
|
||||
@@ -349,7 +349,7 @@ let namen = [];
|
||||
ok(namen.join(" | ") === erwartet.join(" | "),
|
||||
`und zwar diese: ${namen.join(", ")}`);
|
||||
/* UEBER DIE EIGENSCHAFT, NICHT UEBER DEN NAMEN (berichtigt
|
||||
21.09.2026). Hier stand `namen[0] === "Der Treff"`. Am 21.09.
|
||||
21.09.2026). Hier stand `namen[0] === "Das Rudel"`. Am 21.09.
|
||||
wurde aus der Kachel die Willkommensseite, und die Zeile wurde
|
||||
rot, obwohl das Raster stimmte. Gemeint war nie der Name, sondern:
|
||||
die DOPPELT BREITE Kachel steht vorne. Genau das wird jetzt
|
||||
@@ -601,7 +601,7 @@ async function brett(b, host, keks) {
|
||||
const r = await brett(b, HAUS, kCrea);
|
||||
if (r.code === 200 && r.titel.some((t) => t.startsWith("CREW-PROBE"))) durch.push(b);
|
||||
}
|
||||
ok(durch.length === 0, `eine Creatorin sieht kein Brett des Treffs${durch.length ? " -- DURCH: " + durch.join(", ") : ""}`);
|
||||
ok(durch.length === 0, `eine Creatorin sieht kein Brett des Rudels${durch.length ? " -- DURCH: " + durch.join(", ") : ""}`);
|
||||
|
||||
const durchM = [];
|
||||
for (const b of BRETTER) {
|
||||
@@ -837,8 +837,8 @@ melde("=== 7. Das Wort für „Gilt für“ kommt vom Server ===");
|
||||
};
|
||||
|
||||
const treff = await lies("treff", CREW, kCrew);
|
||||
ok(treff.code === 200 && treff.gehoert === "Der Treff",
|
||||
`ein Treff-Brett gehoert dem Treff (${treff.gehoert})`);
|
||||
ok(treff.code === 200 && treff.gehoert === "Das Rudel",
|
||||
`ein Rudel-Brett gehoert dem Rudel (${treff.gehoert})`);
|
||||
|
||||
const crew = await lies("ideen", CREW, kCrew);
|
||||
ok(crew.code === 200 && crew.gehoert === "Team Dogi",
|
||||
@@ -877,7 +877,7 @@ melde("=== 7. Das Wort für „Gilt für“ kommt vom Server ===");
|
||||
`regeln` fiel aus TREFF_BRETTER -- und war fuer die
|
||||
Community 404, obwohl treff-regeln.html darauf verweist.
|
||||
20.09. Dasselbe noch einmal, bei MODI_BEREICHE_ERLAUBT.
|
||||
21.09. Die Kachel "Der Treff" wurde zur Willkommensseite.
|
||||
21.09. Die Kachel "Das Rudel" wurde zur Willkommensseite.
|
||||
`treff` fiel heraus -- und diesmal ging es in die andere
|
||||
Richtung: Die Schranke laesst eine AGENTURROLLE unbesehen
|
||||
durch, wenn ein Brett in keiner Liste steht. Eine
|
||||
@@ -931,7 +931,7 @@ melde("\n--- Kein Brett faellt zwischen die Regeln ---");
|
||||
const GEMEINSCHAFT = fuerAlle.filter((b) => b !== "agentur");
|
||||
const ungeschuetzt = GEMEINSCHAFT.filter((b) => !durchTreff.has(b));
|
||||
ok(ungeschuetzt.length === 0, ungeschuetzt.length === 0
|
||||
? `alle ${GEMEINSCHAFT.length} Bretter des Treffs stehen in TREFF_BRETTER`
|
||||
? `alle ${GEMEINSCHAFT.length} Bretter des Rudels stehen in TREFF_BRETTER`
|
||||
: `NICHT GESCHUETZT -- eine Agenturrolle kaeme hinein: ${ungeschuetzt.join(", ")}`);
|
||||
|
||||
/* UND DIE ANDERE RICHTUNG: Nichts darf in TREFF_BRETTER stehen, das
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -98,7 +98,7 @@ let idDogi, idLuna, idIdee, idTreff, idIdeeHoch;
|
||||
jetzt.slice(0, 10), "hoch", null, jetzt, idDogi);
|
||||
idIdeeHoch = d.prepare("SELECT last_insert_rowid() AS id").get().id;
|
||||
d.prepare(`INSERT INTO eintraege (bereich, art, titel, text, datum, erstellt, erstellt_von)
|
||||
VALUES ('treff','hallo','Beitrag aus dem Treff','Hallo zusammen',?,?,?)`)
|
||||
VALUES ('treff','hallo','Beitrag aus dem Rudel','Hallo zusammen',?,?,?)`)
|
||||
.run(jetzt.slice(0, 10), jetzt, idDogi);
|
||||
idTreff = d.prepare("SELECT last_insert_rowid() AS id").get().id;
|
||||
d.close();
|
||||
@@ -144,7 +144,7 @@ melde("=== 1. Aus welchen Brettern ===");
|
||||
|
||||
/* DIE TREFF-BRETTER STEHEN NICHT DRIN, und das ist der Punkt. */
|
||||
const treffBretter = TREFF_BRETTER.filter((b) => echte.includes(b));
|
||||
ok(treffBretter.length > 0, `${treffBretter.length} Bretter gehören dem Treff`);
|
||||
ok(treffBretter.length > 0, `${treffBretter.length} Bretter gehören dem Rudel`);
|
||||
const drin = treffBretter.filter((b) => modul.AUS_BRETTERN.includes(b));
|
||||
ok(drin.length === 0,
|
||||
drin.length ? `TREFF-BRETT DABEI: ${drin.join(", ")}`
|
||||
@@ -210,11 +210,11 @@ melde("=== 3. Genau einmal ===");
|
||||
4. NICHT AUS JEDEM BRETT
|
||||
======================================================================= */
|
||||
melde("");
|
||||
melde("=== 4. Nicht aus dem Treff ===");
|
||||
melde("=== 4. Nicht aus dem Rudel ===");
|
||||
{
|
||||
const a = await ruf(`/workspace/api/eintrag/${idTreff}/zur-aufgabe`, HAUS, "POST",
|
||||
{ cookie: kDogi }, {});
|
||||
ok(a.code === 400, `aus einem Treff-Beitrag wird keine Aufgabe (${a.code})`);
|
||||
ok(a.code === 400, `aus einem Rudel-Beitrag wird keine Aufgabe (${a.code})`);
|
||||
ok(/keine Aufgabe/.test(json(a).fehler || ""), `und die Absage sagt warum (${json(a).fehler})`);
|
||||
|
||||
const d = oeffne();
|
||||
@@ -267,7 +267,7 @@ melde("=== 6. Die Liste am Brett ===");
|
||||
/* GEGENPROBE: Ein Treff-Brett sagt „nicht moeglich" -- daran
|
||||
entscheidet die Oberflaeche, ob der Knopf ueberhaupt hingehoert. */
|
||||
const treff = json(await ruf("/workspace/api/bereich/treff/uebernahmen", HAUS, "GET", { cookie: kDogi }));
|
||||
ok(treff.moeglich === false, "ein Treff-Brett kennt keine");
|
||||
ok(treff.moeglich === false, "ein Rudel-Brett kennt keine");
|
||||
ok(Object.keys(treff.uebernahmen || {}).length === 0, "und liefert auch keine");
|
||||
}
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ melde("=== 3. Auf welchen Brettern? ===");
|
||||
`„${b}" hat keine Vorlagen -- dort schreibt die Community nicht`);
|
||||
}
|
||||
ok(drin.includes("treff") && drin.includes("wunsch"),
|
||||
`Treff und Wunschliste haben welche (${drin.join(", ")})`);
|
||||
`Rudel und Wunschliste haben welche (${drin.join(", ")})`);
|
||||
ok(vorlagenFuer("gibtsnicht").length === 0,
|
||||
"ein unbekanntes Brett liefert eine leere Liste, kein undefined");
|
||||
}
|
||||
@@ -163,7 +163,7 @@ ok(!!kDogi, "DogFather ist angemeldet");
|
||||
{
|
||||
const a = json(await roh("/workspace/api/bereich/treff/vorlagen", CREW, { cookie: kDogi }));
|
||||
ok(Array.isArray(a.vorlagen) && a.vorlagen.length >= 3,
|
||||
`er bekommt die Vorlagen des Treffs (${a.vorlagen?.length})`);
|
||||
`er bekommt die Vorlagen des Rudels (${a.vorlagen?.length})`);
|
||||
const b = json(await roh("/workspace/api/bereich/regeln/vorlagen", CREW, { cookie: kDogi }));
|
||||
ok(Array.isArray(b.vorlagen) && b.vorlagen.length === 0,
|
||||
`fuer „Regeln & Hilfe" kommt eine leere Liste (${b.vorlagen?.length})`);
|
||||
|
||||
@@ -127,7 +127,7 @@ const { bereicheFuer, TREFF_BRETTER } = await import("./workspace.js");
|
||||
ok(Array.isArray(TREFF_BEREICHE) && TREFF_BEREICHE.length > 0,
|
||||
`ein Mitglied bekommt ${TREFF_BEREICHE?.length} Kacheln`);
|
||||
const kachel = TREFF_BEREICHE.find((k) => k.ziel === "unsere-seiten.html");
|
||||
ok(!!kachel, "sie steht in der Liste der Treff-Kacheln");
|
||||
ok(!!kachel, "sie steht in der Liste der Rudel-Kacheln");
|
||||
/* DER NAME WIRD ABGELEITET, NICHT ABGESCHRIEBEN (21.09.2026).
|
||||
|
||||
Hier stand "Unsere Seiten" als Text. Als die Seite umgebaut wurde
|
||||
@@ -191,7 +191,7 @@ const { bereicheFuer, TREFF_BRETTER } = await import("./workspace.js");
|
||||
beschreibt, erfuellt sie nicht.
|
||||
|
||||
Aufgefallen ist es, als die Community neun Kacheln hatte (10
|
||||
Plaetze, weil "Der Treff" doppelt breit ist): Reihe 1 bis 3 voll,
|
||||
Plaetze, weil "Das Rudel" doppelt breit ist): Reihe 1 bis 3 voll,
|
||||
in Reihe 4 steht "Regeln & Hilfe" allein. Das ist voellig in
|
||||
Ordnung und sah trotzdem rot aus. Eine rote Zeile, die rot bleibt,
|
||||
bringt Menschen dazu, Rot zu ueberlesen -- und dann uebersieht man
|
||||
|
||||
@@ -335,9 +335,9 @@ melde("\n=== Der Weg zur Seite ===");
|
||||
Zeile daran erinnern, dass hier einmal eine war. */
|
||||
const brett = kacheln.filter((k) => String(k.ziel || "").includes("b=treff"));
|
||||
ok(brett.length === 0,
|
||||
`das leere Treff-Brett hat keine eigene Kachel mehr (${brett.length})`);
|
||||
`das leere Rudel-Brett hat keine eigene Kachel mehr (${brett.length})`);
|
||||
const chat = kacheln.filter((k) => String(k.ziel || "").includes("chat.html"));
|
||||
ok(chat.length >= 1, `der Treff-Chat dagegen schon (${chat.length})`);
|
||||
ok(chat.length >= 1, `der Rudel-Chat dagegen schon (${chat.length})`);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
|
||||
@@ -75,7 +75,7 @@ export const ARBEIT_START = {
|
||||
+ "Die ersten dreißig Sekunden entscheiden über die nächste Stunde." },
|
||||
{ art: "vorbereitung", titel: "Was heute im Stream vorkommen soll",
|
||||
text: "Drei Punkte reichen. Ein Stream ohne Plan wird nicht lockerer, "
|
||||
+ "er wird nur länger. Und die Wünsche aus dem Treff gehören hier "
|
||||
+ "er wird nur länger. Und die Wünsche aus dem Rudel gehören hier "
|
||||
+ "hinein — dort stehen sie bereits sortiert." },
|
||||
{ art: "mitschrift", titel: "Der Moment, der ein Clip wird",
|
||||
text: "Sobald etwas passiert, das gut war: Uhrzeit hier notieren. "
|
||||
@@ -194,8 +194,8 @@ export const ARBEIT_START = {
|
||||
{ art: "moderation", titel: "Eingreifen ohne Bühne",
|
||||
text: "Eine Verwarnung mit Publikum erzeugt Publikum. Kurz, sachlich, "
|
||||
+ "weiter — und danach nicht mehr darauf zurückkommen." },
|
||||
{ art: "aktion", titel: "Wunschstream aus dem Treff",
|
||||
text: "Die Wunschliste im Treff sortiert sich nach Stimmen. Einmal im "
|
||||
{ art: "aktion", titel: "Wunschstream aus dem Rudel",
|
||||
text: "Die Wunschliste im Rudel sortiert sich nach Stimmen. Einmal im "
|
||||
+ "Monat der oberste Wunsch — und danach der Clip zurück ins Brett, "
|
||||
+ "mit dem Namen dessen, der ihn geschrieben hat. Das ist der "
|
||||
+ "Unterschied zwischen einem Briefkasten und einer Community." },
|
||||
@@ -257,11 +257,11 @@ export const ARBEIT_START = {
|
||||
+ "die Frage, die sonst jeder einzeln stellt." },
|
||||
{ art: "live", titel: "Feste Sendezeiten statt „wenn es passt“",
|
||||
text: "Wiederkehrende Zeiten schlagen spontane Streams, auch bei "
|
||||
+ "weniger Stunden. Die Frage „Wann seid ihr da?“ steht im Treff — "
|
||||
+ "weniger Stunden. Die Frage „Wann seid ihr da?“ steht im Rudel — "
|
||||
+ "die Antwort gehört von dort hierher." },
|
||||
{ art: "community", titel: "Ein Willkommenstext, der automatisch kommt",
|
||||
text: "Wer zum ersten Mal schreibt, bekommt einen Satz und einen Weg: "
|
||||
+ "Regeln, Treff, nächster Stream. Danach fragt niemand mehr, "
|
||||
+ "Regeln, Rudel, nächster Stream. Danach fragt niemand mehr, "
|
||||
+ "wie das hier läuft." },
|
||||
{ art: "community", titel: "Highlights der Woche, jeden Sonntag",
|
||||
text: "Drei Clips, drei Zeilen, ein Beitrag. Macht aus verstreuten "
|
||||
|
||||
@@ -65,7 +65,7 @@ export function grundlageVon(rolle) {
|
||||
if (rolle === "gast") {
|
||||
return {
|
||||
grundlage: "Art. 6 Abs. 1 lit. a DSGVO – Einwilligung",
|
||||
warum: "Du bist freiwillig im Treff. Du kannst jederzeit gehen, und deine "
|
||||
warum: "Du bist freiwillig im Rudel. Du kannst jederzeit gehen, und deine "
|
||||
+ "Daten gehen mit.",
|
||||
};
|
||||
}
|
||||
@@ -207,7 +207,7 @@ export const FRISTEN = [
|
||||
},
|
||||
{
|
||||
schluessel: "treff_massnahmen",
|
||||
was: "Maßnahmen im Treff (Hinweis, Pause, Ausschluss) mit Begründung",
|
||||
was: "Maßnahmen im Rudel (Hinweis, Pause, Ausschluss) mit Begründung",
|
||||
art: "bleibt",
|
||||
frist: "solange die Person ein Konto hat",
|
||||
zweck: "Eine Entscheidung über einen Menschen muss begründet nachlesbar sein – "
|
||||
|
||||
@@ -147,7 +147,7 @@ export const BEREICHE = {
|
||||
},
|
||||
|
||||
treff: {
|
||||
name: "Der Treff",
|
||||
name: "Das Rudel",
|
||||
/* Was dasteht, wenn nichts dasteht. Ein Bereich, der
|
||||
schweigt, sieht kaputt aus statt leer. */
|
||||
leer: "Noch hat niemand Hallo gesagt. Sei der Erste — ein Satz reicht.",
|
||||
@@ -246,7 +246,7 @@ export const BEREICHE = {
|
||||
name: "Regeln & Hilfe",
|
||||
/* Was dasteht, wenn nichts dasteht. Ein Bereich, der
|
||||
schweigt, sieht kaputt aus statt leer. */
|
||||
leer: "Hier stehen die Regeln des Treffs — sobald sie eingetragen sind.",
|
||||
leer: "Hier stehen die Regeln des Rudels — sobald sie eingetragen sind.",
|
||||
ober: "Wie es hier läuft",
|
||||
/* REGELN IN EINFACHER SPRACHE UND AN ECHTEN FAELLEN. Vage Regeln
|
||||
erzeugen Grenzfaelle, und die muss dann jeder Modi einzeln
|
||||
@@ -1437,7 +1437,7 @@ bereicheRouter.get("/workspace/api/bereich/:bereich", (req, res) => {
|
||||
|
||||
Jetzt sagt der Server es. Er weiss beides: welches Brett es ist
|
||||
und in welchem Haus die Person gerade steht. */
|
||||
const gehoert = treffBrett ? "Der Treff"
|
||||
const gehoert = treffBrett ? "Das Rudel"
|
||||
: (req.sicht || req.person)?.haus === "crew" ? "Team Dogi"
|
||||
: "Agentur";
|
||||
|
||||
@@ -2139,7 +2139,7 @@ bereicheRouter.post("/workspace/api/bereich/:bereich/:id/daraus",
|
||||
/* =====================================================================
|
||||
ANTWORTEN (17.09.2026) -- Stufe 6 des Plans
|
||||
|
||||
"Der Treff" war eine Liste aus Karten. Der einzige Bereich, in dem
|
||||
"Das Rudel" war eine Liste aus Karten. Der einzige Bereich, in dem
|
||||
Menschen MITEINANDER reden sollen, zwang sie, nebeneinander zu
|
||||
reden.
|
||||
|
||||
|
||||
@@ -467,7 +467,7 @@ export const ENTWICKLUNG_PUNKTE = {
|
||||
text: "Nicht abwürgen — umlenken. Eine Frage an die Runde wirkt besser "
|
||||
+ "als eine Ermahnung." },
|
||||
{ schluessel: "e-stream-wunsch-eingebracht", stufe: "fort",
|
||||
titel: "Ein Wunsch aus dem Treff wird im Stream eingebracht",
|
||||
titel: "Ein Wunsch aus dem Rudel wird im Stream eingebracht",
|
||||
text: "Die Wunschliste sortiert sich nach Stimmen. Wer den obersten "
|
||||
+ "einbringt, schließt den Kreis für den, der ihn geschrieben hat." },
|
||||
{ schluessel: "e-stream-auswertung", stufe: "fort",
|
||||
|
||||
@@ -384,7 +384,7 @@ personenRouter.get("/workspace/api/verwaltung/personen", (req, res) => {
|
||||
...(darfAnlegen(req.person).includes("gast")
|
||||
? [{
|
||||
wert: "gast", name: "Community", symbol: "leute",
|
||||
text: "Zugang zum Treff. Sieht die sieben Bretter der Community "
|
||||
text: "Zugang zum Rudel. Sieht die sieben Bretter der Community "
|
||||
+ "und sonst nichts \u2013 keine Aufgaben, keine Termine, "
|
||||
+ "keine Namen aus dem Team.",
|
||||
}]
|
||||
@@ -449,7 +449,7 @@ personenRouter.get("/workspace/api/verwaltung/personen", (req, res) => {
|
||||
wert: "linke", name: "Linke Hand", symbol: "husky",
|
||||
text: "Dieselben Team- und Aufgabenrechte wie die rechte Hand – "
|
||||
+ "verteilt Aufgaben, sieht alle Auswertungen und den ganzen "
|
||||
+ "Treff. Kann aber keine Personen anlegen, keine Rollen "
|
||||
+ "Rudel. Kann aber keine Personen anlegen, keine Rollen "
|
||||
+ "ändern und sieht weder Bewerbungen noch den vertraulichen "
|
||||
+ "Meldeweg.",
|
||||
}]
|
||||
|
||||
@@ -155,7 +155,7 @@ const ABSCHNITTE = {
|
||||
admin: { name: "Leitung", text: "Wer freigibt und entscheidet." },
|
||||
manager: { name: "Leitung", text: "Wer freigibt und entscheidet." },
|
||||
hand: { name: "Team Dogi", text: "Wer den Laden mit am Laufen hält." },
|
||||
modi: { name: "Moderation", text: "Wer im Treff und im Stream nach dem Rechten sieht." },
|
||||
modi: { name: "Moderation", text: "Wer im Rudel und im Stream nach dem Rechten sieht." },
|
||||
scout: { name: "Scouting", text: "Sie finden neue Creator und begleiten den Anfang." },
|
||||
creator: { name: "Creator", text: "Die Leute, um die es geht." },
|
||||
gast: { name: "Community", text: "Die Leute, die zuschauen und mitmachen." },
|
||||
|
||||
@@ -392,7 +392,7 @@ export const SCHICHT_MAX_TAGE = 90;
|
||||
* Wissensbereich schon gibt. */
|
||||
export const ERSTER_TAG = [
|
||||
{ titel: "Was gilt",
|
||||
text: "Die Regeln des Treffs – und was passiert, wenn jemand sie bricht." },
|
||||
text: "Die Regeln des Rudels – und was passiert, wenn jemand sie bricht." },
|
||||
{ titel: "Was du darfst",
|
||||
text: "Welche Knöpfe da sind, welche noch nicht, und ab wann." },
|
||||
{ titel: "Wen du fragst",
|
||||
|
||||
@@ -152,7 +152,7 @@ export const TREFF_START = {
|
||||
+ "auf. Wenn es dich betrifft und du nicht weißt warum, frag nach." },
|
||||
|
||||
{ art: "hilfe", titel: "Wie du DogFather oder das Team erreichst",
|
||||
text: "Im Treff eine Frage stellen — dort liest immer jemand mit, und "
|
||||
text: "Im Rudel eine Frage stellen — dort liest immer jemand mit, und "
|
||||
+ "DogFather selbst schaut regelmäßig rein. Wenn es nicht öffentlich "
|
||||
+ "sein soll: im Bereich „Etwas stimmt nicht“ melden. Das sehen nur "
|
||||
+ "die Leute, die hier moderieren." },
|
||||
@@ -193,9 +193,9 @@ export const TREFF_START = {
|
||||
mitmachen: [
|
||||
{ art: "gesucht", titel: "Schritt 1: Sei ein paar von DogFathers Streams dabei",
|
||||
text: "Kein Bewerbungsschreiben, kein Formular. Wer mitmachen will, fängt "
|
||||
+ "damit an, da zu sein — im Chat, im Treff, bei den Wünschen. Fast "
|
||||
+ "damit an, da zu sein — im Chat, im Rudel, bei den Wünschen. Fast "
|
||||
+ "alle, die heute in DogFathers Team moderieren, sind so angefangen." },
|
||||
{ art: "gesucht", titel: "Schritt 2: Sag im Treff, dass du Lust hast",
|
||||
{ art: "gesucht", titel: "Schritt 2: Sag im Rudel, dass du Lust hast",
|
||||
text: "Ein Satz reicht: was du gern machen würdest und wann du ungefähr "
|
||||
+ "Zeit hast. Du musst nichts können — alles, was hier gebraucht wird, "
|
||||
+ "lernt man in ein paar Wochen nebenher." },
|
||||
@@ -247,7 +247,7 @@ export const TREFF_START = {
|
||||
{ art: "ansage", titel: "Willkommen bei DogFather",
|
||||
text: "Das hier ist der Raum neben dem Stream. Fragen an DogFather "
|
||||
+ "stellen, Hallo sagen, Wünsche eintragen, eure Clips zeigen. Wer "
|
||||
+ "neu ist: Fang im Treff an, ein Satz reicht." },
|
||||
+ "neu ist: Fang im Rudel an, ein Satz reicht." },
|
||||
{ art: "ansage", titel: "So läuft ein Stream bei DogFather ab",
|
||||
text: "Es geht pünktlich los, und wenn es anders kommt, steht es "
|
||||
+ "vorher hier unter „Was ansteht“. Während der Sendung liest jemand "
|
||||
@@ -260,8 +260,8 @@ export const TREFF_START = {
|
||||
+ "wo etwas herkommt." },
|
||||
{ art: "hinweis", titel: "Wo was hingehört",
|
||||
text: "Termine unter „Was ansteht“, Wünsche an DogFather in die "
|
||||
+ "Wunschliste, Clips zu den Highlights, alles andere in den Treff. "
|
||||
+ "Wenn du unsicher bist: Treff. Das Team sortiert es dann." },
|
||||
+ "Wunschliste, Clips zu den Highlights, alles andere ins Rudel. "
|
||||
+ "Wenn du unsicher bist: Rudel. Das Team sortiert es dann." },
|
||||
{ art: "danke", titel: "Danke, dass ihr da seid",
|
||||
text: "Ohne die Leute, die jede Woche wiederkommen, wäre das hier ein "
|
||||
+ "leerer Raum mit guter Beleuchtung. Das ist keine Floskel — "
|
||||
|
||||
@@ -270,7 +270,7 @@ export function fristErlaubt(person, tage) {
|
||||
export function darfSchreiben(person, bereich) {
|
||||
if (!TREFF_BRETTER.includes(bereich)) return null; // kein Treff-Brett
|
||||
if (TREFF_TEAM.has(person?.rolle)) return null; // Team schreibt überall
|
||||
if (!TREFF_AUSSEN.has(person?.rolle)) return "Dieser Bereich gehört zum Treff.";
|
||||
if (!TREFF_AUSSEN.has(person?.rolle)) return "Dieser Bereich gehört zum Rudel.";
|
||||
|
||||
const noetig = TREFF_SCHREIBEN[bereich];
|
||||
if (!noetig) return "Hier schreibt das Team.";
|
||||
@@ -278,7 +278,7 @@ export function darfSchreiben(person, bereich) {
|
||||
const sperre = treffSperre(person.id);
|
||||
if (sperre) {
|
||||
return sperre.art === "ausschluss"
|
||||
? "Dein Zugang zum Treff ist beendet."
|
||||
? "Dein Zugang zum Rudel ist beendet."
|
||||
: `Du hast gerade eine Pause${sperre.bis ? ` bis ${sperre.bis.slice(0, 10)}` : ""}.`;
|
||||
}
|
||||
|
||||
@@ -974,9 +974,9 @@ treffRouter.post("/workspace/api/treff/mitmachen/:id/uebernehmen", gleicheHerkun
|
||||
erstellt, erstellt_von, einsatz)
|
||||
VALUES ('talente','empfohlen',?,?,?,'mittel','offen',?,?,?,?)`)
|
||||
.run(
|
||||
`${wer?.name ?? "Jemand"} hat sich im Treff gemeldet`,
|
||||
`${wer?.name ?? "Jemand"} hat sich im Rudel gemeldet`,
|
||||
`Aus „Mitmachen": ${String(e.titel ?? "")}\n\n${String(e.text ?? "")}`.trim(),
|
||||
nun.slice(0, 10), e.erstellt_von, nun, req.person.id, "Der Treff");
|
||||
nun.slice(0, 10), e.erstellt_von, nun, req.person.id, "Das Rudel");
|
||||
protokolliere("treff_talent", { personId: req.person.id, ip: echteIp(req),
|
||||
detail: `aus Eintrag ${id}` });
|
||||
res.json({ ok: true, talent_id: Number(r.lastInsertRowid) });
|
||||
|
||||
@@ -90,7 +90,7 @@ import { AUSSEN_ROLLEN } from "./crew-adresse.js";
|
||||
* Richtige: Er gehört dem Haus, nicht den Anwesenden, und die
|
||||
* Leitung kommt über `istDrin` hinein, ohne dass jemand sie einträgt. */
|
||||
export const TREFF_KATEGORIE = "treff";
|
||||
export const TREFF_NAME = "Der Treff";
|
||||
export const TREFF_NAME = "Das Rudel";
|
||||
|
||||
/** Wer im Treff-Chat steht.
|
||||
*
|
||||
@@ -177,7 +177,7 @@ export function nachtruheStand(d = new Date()) {
|
||||
steht er in der Absage UND auf der Seite gleich — und wer ihn
|
||||
ändern will, ändert ihn einmal. */
|
||||
satz: zu
|
||||
? `Der Treff schläft. Ab ${String(NACHT_BIS).padStart(2, "0")}:00 Uhr `
|
||||
? `Das Rudel schläft. Ab ${String(NACHT_BIS).padStart(2, "0")}:00 Uhr `
|
||||
+ "geht es weiter – gelesen werden darf die ganze Nacht."
|
||||
: `Nachts zwischen ${String(NACHT_AB).padStart(2, "0")}:00 und `
|
||||
+ `${String(NACHT_BIS).padStart(2, "0")}:00 Uhr schreibt hier niemand.`,
|
||||
|
||||
@@ -1796,7 +1796,7 @@ vorlagenRouter.post("/workspace/api/vorlagen/uebernehmen", gleicheHerkunft,
|
||||
export const MODI_AUFGABEN = {
|
||||
chat: {
|
||||
neu: [
|
||||
{ schluessel: "ma-chat-regeln-lesen", titel: "Die Regeln des Treffs einmal ganz lesen", tage: 2,
|
||||
{ schluessel: "ma-chat-regeln-lesen", titel: "Die Regeln des Rudels einmal ganz lesen", tage: 2,
|
||||
text: "Nicht überfliegen. Wer sie kennt, kann sie erklären – und Erklären ist in neun von zehn Fällen wirksamer als Löschen." },
|
||||
{ schluessel: "ma-chat-begruessen", titel: "Eine Sendung lang jeden Neuen begrüßen", tage: 3,
|
||||
text: "Der erste Satz an einen Neuen entscheidet, ob er wiederkommt. Kostet nichts und passiert trotzdem selten." },
|
||||
|
||||
+10
-10
@@ -1186,7 +1186,7 @@ const HAND_BEREICHE = vorGruppe(
|
||||
ausgeliefert, jene bekommt jeder Besucher. */
|
||||
const TREFF_GRUPPE = {
|
||||
gruppe: "Community",
|
||||
gruppeUnter: "Der Treff \u2013 der Raum f\u00fcr die Zuschauer",
|
||||
gruppeUnter: "Das Rudel \u2013 der Raum f\u00fcr die Zuschauer",
|
||||
};
|
||||
|
||||
/* DIE BREITE KACHEL STEHT VORNE (17.09.2026).
|
||||
@@ -1195,7 +1195,7 @@ const TREFF_GRUPPE = {
|
||||
einfach total scheisse ... gerade einfach nur dahin geknallt".
|
||||
|
||||
Er hatte recht, und die Ursache stand genau hier. Das Raster hat
|
||||
DREI Spalten, "Der Treff" ist doppelt breit (`grid-column: span 2`)
|
||||
DREI Spalten, "Das Rudel" ist doppelt breit (`grid-column: span 2`)
|
||||
-- stand aber an DRITTER Stelle. Nach zwei normalen Kacheln war noch
|
||||
EINE Spalte frei, er passte nicht hinein und rutschte eine Reihe
|
||||
tiefer. Zurueck blieb ein Loch mitten im Raster:
|
||||
@@ -1271,7 +1271,7 @@ const TREFF_BEREICHE = [
|
||||
`?raum=treff` öffnet den Raum der Community direkt. Für die
|
||||
Community selbst ändert sich am Namen nichts Wesentliches -- sie
|
||||
hat nur diese eine. */
|
||||
{ ...TREFF_GRUPPE, name: "Treff-Chat", unter: "Miteinander reden – nachts schläft er",
|
||||
{ ...TREFF_GRUPPE, name: "Rudel-Chat", unter: "Miteinander reden – nachts schläft er",
|
||||
zeichen: "chat", ton: 41, ziel: "chat.html?raum=treff", szene: "lounge" },
|
||||
/* HIGHLIGHTS AN DIE SPITZE (22.09.2026).
|
||||
|
||||
@@ -1346,7 +1346,7 @@ const TREFF_BEREICHE = [
|
||||
schreiben, mitmachen. Diese eine verlaesst den Treff -- das ist der
|
||||
letzte Schritt, nicht der erste.
|
||||
|
||||
RASTERRECHNUNG (drei Spalten, "Der Treff" belegt zwei): Mit dieser
|
||||
RASTERRECHNUNG (drei Spalten, "Das Rudel" belegt zwei): Mit dieser
|
||||
Kachel sind es fuer die Community 7 + 1 Kacheln = 9 Plaetze, also
|
||||
genau drei volle Reihen. Vorher waren es acht Plaetze und damit
|
||||
eine Luecke am Ende. Sie passt also nicht nur inhaltlich. */
|
||||
@@ -1406,7 +1406,7 @@ const TREFF_BEREICHE = [
|
||||
die sieht nur, wer moderiert. */
|
||||
const MODERATION_GRUPPE = {
|
||||
gruppe: "Moderation",
|
||||
gruppeUnter: "Die Arbeit am Treff \u2013 sieht nur, wer moderiert",
|
||||
gruppeUnter: "Die Arbeit am Rudel \u2013 sieht nur, wer moderiert",
|
||||
};
|
||||
|
||||
const TREFF_MODERATION_KACHEL = {
|
||||
@@ -1458,7 +1458,7 @@ export const TREFF_BRETTER = [...new Set([
|
||||
/* UND DASSELBE EIN DRITTES MAL (21.09.2026) -- deshalb steht unten
|
||||
jetzt eine Pruefung, die es laut macht.
|
||||
----------------------------------------------------------------
|
||||
Am 21.09. wurde die Kachel "Der Treff" zur Willkommensseite
|
||||
Am 21.09. wurde die Kachel "Das Rudel" zur Willkommensseite
|
||||
(Auftrag Abschnitt 7). Damit fiel `treff` aus dieser Ableitung.
|
||||
|
||||
WAS DAS ANRICHTETE, ist schlimmer als beim letzten Mal: Die
|
||||
@@ -2123,7 +2123,7 @@ export function rollentextFuer(person) {
|
||||
Fuer den Menschen, der von aussen kommt und niemanden hier kennt,
|
||||
ist der erste Satz nach dem Anmelden der wichtigste im ganzen
|
||||
Haus. */
|
||||
if (person?.rolle === "gast") return "Community · dein Platz im Treff";
|
||||
if (person?.rolle === "gast") return "Community · dein Platz im Rudel";
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -2313,7 +2313,7 @@ export function zusatzBereicheFuer(person) {
|
||||
gruppe: "Team Dogi",
|
||||
gruppeUnter: "Das andere Haus \u2014 eigene Seite, eigene Daten",
|
||||
name: "Zu Team Dogi",
|
||||
unter: "Der Treff, das Team und die Moderation \u2014 auf ihrer eigenen Adresse",
|
||||
unter: "Das Rudel, das Team und die Moderation \u2014 auf ihrer eigenen Adresse",
|
||||
zeichen: "hinaus",
|
||||
ton: 40,
|
||||
szene: "portal",
|
||||
@@ -2585,7 +2585,7 @@ function umstellungen(d) {
|
||||
|
||||
/* ---- Antworten an einem Beitrag (17.09.2026), Stufe 6 ----
|
||||
|
||||
"Der Treff -- Hallo sagen, fragen, loben" war eine Liste aus
|
||||
"Das Rudel -- Hallo sagen, fragen, loben" war eine Liste aus
|
||||
Karten. Der einzige Bereich, in dem Menschen MITEINANDER reden
|
||||
sollen, zwang sie, nebeneinander zu reden: Jeder schreibt eine
|
||||
eigene Karte, niemand antwortet jemandem.
|
||||
@@ -4424,7 +4424,7 @@ export function db() {
|
||||
geaendert TEXT
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_eintraege_bereich ON eintraege (bereich, creator_id);
|
||||
/* Die Tabellen des Treffs folgen weiter unten, gleich nachdem
|
||||
/* Die Tabellen des Rudels folgen weiter unten, gleich nachdem
|
||||
dieser Bauplan durch ist -- sie haengen an eintraege und
|
||||
personen und koennen deshalb nicht davor stehen. Ihr SQL steht
|
||||
in treff-tabellen.js, samt Begruendung je Tabelle. */
|
||||
|
||||
Reference in New Issue
Block a user