diff --git a/server/mess-sichtbarkeit.mjs b/server/mess-sichtbarkeit.mjs index 91d60cfc..f0b19fa5 100644 --- a/server/mess-sichtbarkeit.mjs +++ b/server/mess-sichtbarkeit.mjs @@ -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) { diff --git a/server/mess-startseite.mjs b/server/mess-startseite.mjs index 1c3843e3..e94bc41c 100644 --- a/server/mess-startseite.mjs +++ b/server/mess-startseite.mjs @@ -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)); diff --git a/server/pruef-crew-adresse.mjs b/server/pruef-crew-adresse.mjs index dedc4816..fa5c0041 100644 --- a/server/pruef-crew-adresse.mjs +++ b/server/pruef-crew-adresse.mjs @@ -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>/.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"); } diff --git a/server/pruef-deutsche-texte.mjs b/server/pruef-deutsche-texte.mjs index 54d89e0a..84ab2d2b 100644 --- a/server/pruef-deutsche-texte.mjs +++ b/server/pruef-deutsche-texte.mjs @@ -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}`]); diff --git a/server/pruef-draussen.mjs b/server/pruef-draussen.mjs index 2086fdd2..cf9956a4 100644 --- a/server/pruef-draussen.mjs +++ b/server/pruef-draussen.mjs @@ -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})`); } diff --git a/server/pruef-gespraech.mjs b/server/pruef-gespraech.mjs index 89b48302..c588cc97 100644 --- a/server/pruef-gespraech.mjs +++ b/server/pruef-gespraech.mjs @@ -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. diff --git a/server/pruef-handy.mjs b/server/pruef-handy.mjs index 8130d073..ee3ebdc9 100644 --- a/server/pruef-handy.mjs +++ b/server/pruef-handy.mjs @@ -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 diff --git a/server/pruef-jeder-hat-eine-seite.mjs b/server/pruef-jeder-hat-eine-seite.mjs index 06fc3cdc..b932be72 100644 --- a/server/pruef-jeder-hat-eine-seite.mjs +++ b/server/pruef-jeder-hat-eine-seite.mjs @@ -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"); diff --git a/server/pruef-kachelraster.mjs b/server/pruef-kachelraster.mjs index 0d6dd290..7310b884 100644 --- a/server/pruef-kachelraster.mjs +++ b/server/pruef-kachelraster.mjs @@ -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. diff --git a/server/pruef-treff.mjs b/server/pruef-treff.mjs index 2bb98658..79837cf6 100644 --- a/server/pruef-treff.mjs +++ b/server/pruef-treff.mjs @@ -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 diff --git a/server/pruef-treffchat.mjs b/server/pruef-treffchat.mjs index 59deb0af..d4d7d48b 100644 --- a/server/pruef-treffchat.mjs +++ b/server/pruef-treffchat.mjs @@ -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"); diff --git a/server/pruef-uebernahme.mjs b/server/pruef-uebernahme.mjs index d1f89464..dbb919ee 100644 --- a/server/pruef-uebernahme.mjs +++ b/server/pruef-uebernahme.mjs @@ -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"); } diff --git a/server/pruef-vorlagen.mjs b/server/pruef-vorlagen.mjs index 38ace308..68793a72 100644 --- a/server/pruef-vorlagen.mjs +++ b/server/pruef-vorlagen.mjs @@ -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})`); diff --git a/server/pruef-wege-nach-draussen.mjs b/server/pruef-wege-nach-draussen.mjs index c185c23b..b7375482 100644 --- a/server/pruef-wege-nach-draussen.mjs +++ b/server/pruef-wege-nach-draussen.mjs @@ -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 diff --git a/server/pruef-willkommen.mjs b/server/pruef-willkommen.mjs index 9654ddff..fa08d6ac 100644 --- a/server/pruef-willkommen.mjs +++ b/server/pruef-willkommen.mjs @@ -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})`); } /* --------------------------------------------------------------------- diff --git a/server/workspace-arbeit-start.js b/server/workspace-arbeit-start.js index 6e720e6d..eb8786d3 100644 --- a/server/workspace-arbeit-start.js +++ b/server/workspace-arbeit-start.js @@ -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 " diff --git a/server/workspace-aufbewahrung.js b/server/workspace-aufbewahrung.js index ccf58081..bfea3e5a 100644 --- a/server/workspace-aufbewahrung.js +++ b/server/workspace-aufbewahrung.js @@ -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 – " diff --git a/server/workspace-bereiche.js b/server/workspace-bereiche.js index e7640f74..87bbc0a8 100644 --- a/server/workspace-bereiche.js +++ b/server/workspace-bereiche.js @@ -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. diff --git a/server/workspace-entwicklungs-punkte.js b/server/workspace-entwicklungs-punkte.js index 391be059..3c696109 100644 --- a/server/workspace-entwicklungs-punkte.js +++ b/server/workspace-entwicklungs-punkte.js @@ -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", diff --git a/server/workspace-personen.js b/server/workspace-personen.js index f65574f3..0085ee5e 100644 --- a/server/workspace-personen.js +++ b/server/workspace-personen.js @@ -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.", }] diff --git a/server/workspace-steckbrief.js b/server/workspace-steckbrief.js index a6138e41..76e0ba35 100644 --- a/server/workspace-steckbrief.js +++ b/server/workspace-steckbrief.js @@ -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." }, diff --git a/server/workspace-talent-punkte.js b/server/workspace-talent-punkte.js index d3cc797e..35fa56cd 100644 --- a/server/workspace-talent-punkte.js +++ b/server/workspace-talent-punkte.js @@ -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", diff --git a/server/workspace-treff-start.js b/server/workspace-treff-start.js index 44f18765..6e13a2b9 100644 --- a/server/workspace-treff-start.js +++ b/server/workspace-treff-start.js @@ -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 — " diff --git a/server/workspace-treff.js b/server/workspace-treff.js index ec3ad7af..82dbf8ac 100644 --- a/server/workspace-treff.js +++ b/server/workspace-treff.js @@ -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) }); diff --git a/server/workspace-treffchat.js b/server/workspace-treffchat.js index 6d896900..0f6a29c8 100644 --- a/server/workspace-treffchat.js +++ b/server/workspace-treffchat.js @@ -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.`, diff --git a/server/workspace-vorlagen.js b/server/workspace-vorlagen.js index a8841a87..d85a998b 100644 --- a/server/workspace-vorlagen.js +++ b/server/workspace-vorlagen.js @@ -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." }, diff --git a/server/workspace.js b/server/workspace.js index e48e0cfc..115723bc 100644 --- a/server/workspace.js +++ b/server/workspace.js @@ -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. */ diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index 44e249ed..976d4c6b 100644 --- a/workspace/anruf-probe.html +++ b/workspace/anruf-probe.html @@ -16,15 +16,15 @@ verdeckt. Gefunden hat es pruef-struktur. Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. --> - - + + - +