diff --git a/server/pruef-willkommen.mjs b/server/pruef-willkommen.mjs
index 51efc910..9654ddff 100644
--- a/server/pruef-willkommen.mjs
+++ b/server/pruef-willkommen.mjs
@@ -238,11 +238,49 @@ for (const p of LEUTE) {
/* ---------------------------------------------------------------------
4. DIE LINKE HAND BEKOMMT IHRE GRENZEN GESAGT
--------------------------------------------------------------------- */
-melde("\n=== Die linke Hand ===");
+melde("\n=== Niemand erfaehrt, was er NICHT hat ===");
{
- const h = gesehen.linke?.daten?.hinweise || [];
- ok(h.some((x) => /nicht/i.test(x.titel + x.text)),
- "ihr wird gesagt, was sie nicht hat -- einmal, klar, ohne Liste");
+ /* UMGEDREHT AM 22.09.2026. Hier stand: "ihr wird gesagt, was sie
+ nicht hat -- einmal, klar, ohne Liste."
+
+ Filipe: "keiner soll wissen was er nicht sieht das geht keinen was
+ an. sie sehen die sachen ja nicht weil es sie nichts angeht und das
+ muss auch nicht erwaehnt werden. kontrollier das ueberall bitte."
+
+ Das "ueberall" ist der Grund, warum hier nicht eine Zeile
+ umgedreht, sondern JEDE ROLLE gemessen wird. Ein Satz, der
+ aufzaehlt, was fehlt, hebt ausserdem die Sorgfalt wieder auf, mit
+ der der Server ueberall 404 statt 403 antwortet -- damit ein "das
+ darfst du nicht" gar nicht erst verraet, dass es etwas gibt. */
+ const VERRAETERISCH = [
+ /nicht f(u|ue|\u00fc)r dich freigeschaltet/i,
+ /was du nicht siehst/i,
+ /was du nicht hast/i,
+ /hast du nicht/i,
+ /siehst du nicht/i,
+ /darfst du nicht/i,
+ /bleiben seine/i,
+ /kein zugriff/i,
+ ];
+ const gefunden = [];
+ for (const pp of LEUTE) {
+ const d = gesehen[pp.rolle]?.daten;
+ const text = [
+ d?.einleitung?.was, d?.einleitung?.dazu,
+ ...(d?.hinweise || []).flatMap((h) => [h.titel, h.text]),
+ ].filter(Boolean).join(" ");
+ for (const m of VERRAETERISCH) {
+ if (m.test(text)) gefunden.push(pp.rolle + ": " + m.source);
+ }
+ }
+ ok(gefunden.length === 0, gefunden.length === 0
+ ? `keine der ${LEUTE.length} Rollen bekommt gesagt, was ihr fehlt`
+ : `ZAEHLT AUF, WAS FEHLT: ${gefunden.join(" | ")}`);
+
+ /* GEGENPROBE: Wuerde dieses Muster so einen Satz ueberhaupt finden?
+ Ohne sie waere die Zeile oben gruen, sobald die Liste kaputt ist. */
+ ok(VERRAETERISCH.some((m) => m.test("Das ist nicht fuer dich freigeschaltet.")),
+ "und ein solcher Satz wuerde hier wirklich auffallen");
const ziele = (gesehen.linke?.daten?.gruppen || [])
.flatMap((g) => g.kacheln || []).map((k) => String(k.ziel).split("?")[0]);
ok(!ziele.includes("personen.html") && !ziele.includes("hilfe.html"),
diff --git a/server/workspace-willkommen.js b/server/workspace-willkommen.js
index 409dc267..8b061c73 100644
--- a/server/workspace-willkommen.js
+++ b/server/workspace-willkommen.js
@@ -67,17 +67,29 @@ const EINLEITUNG = {
},
hand: {
was: "Du vertrittst DogFather im Alltag und hältst das Team zusammen.",
- dazu: "Du siehst dieselben Aufgaben, Ideen und Auswertungen wie er und "
- + "kannst Aufgaben an die Modis verteilen. Private Bereiche von "
- + "DogFather bleiben seine.",
+ dazu: "Du siehst dieselben Aufgaben, Ideen und Auswertungen wie er, "
+ + "verteilst Aufgaben an die Modis und legst neue Leute an — samt "
+ + "ihrem Zugangscode.",
},
linke: {
was: "Du führst das Team durch den Tag — mit denselben Werkzeugen wie "
+ "die rechte Hand.",
- dazu: "Aufgaben verteilen, Stände verfolgen, Rückmeldung geben: alles "
- + "wie sie. Was du NICHT hast: Personen anlegen, Rollen ändern und "
- + "den vertraulichen Meldeweg. Das ist kein Versehen, sondern so "
- + "eingerichtet.",
+ /* NUR, WAS DA IST (22.09.2026).
+ ----------------------------------------------------------------
+ Hier stand: "Was du NICHT hast: Personen anlegen, Rollen ändern
+ und den vertraulichen Meldeweg."
+
+ Filipe: "keiner soll wissen was er nicht sieht das geht keinen
+ was an. sie sehen die sachen ja nicht weil es sie nichts angeht
+ und das muss auch nicht erwaehnt werden."
+
+ Er hat recht, und es passt zur Hausregel, die ueberall sonst
+ schon gilt: Der Server antwortet mit 404 statt 403, damit ein
+ "das darfst du nicht" nicht verraet, dass es etwas gibt. Ein
+ Satz, der dasselbe aufzaehlt, hebt diese Sorgfalt wieder auf. */
+ dazu: "Aufgaben verteilen, Stände verfolgen, Rückmeldung geben — und "
+ + "dabei sehen, wie es bei jedem gerade läuft. Alles dafür findest "
+ + "du unten.",
},
modi: {
was: "Schön, dass du da bist. Hier findest du alles für deinen Tag.",
@@ -179,6 +191,18 @@ willkommenRouter.get("/workspace/api/willkommen", (req, res) => {
unter: k.unter || "",
ziel: k.ziel,
zeichen: k.zeichen || null,
+ /* DERSELBE FARBTON WIE AUF DER STARTSEITE (22.09.2026).
+ Filipe: "die kacheln in der willkommens seite sollen die
+ selben farben haben wie in der startseite."
+
+ Durchgereicht, nicht neu vergeben: `[data-ton="N"]` in
+ start.css setzt `--ton`, und start.css laedt diese Seite
+ ohnehin. Eine eigene Farbtabelle waere die, die beim
+ naechsten Farbwechsel auseinanderlaeuft -- und genau das ist
+ am 19.09. schon einmal passiert, als elf Seiten die neue
+ Kachelfarbe nie bekamen. */
+ ton: Number.isFinite(k.ton) ? k.ton : null,
+ gross: !!k.gross,
/* Der lange Satz nur, wenn es einen gibt -- `null` heißt
ausdrücklich "hier reicht die Zeile". */
lang: Object.prototype.hasOwnProperty.call(LANG, datei) ? LANG[datei] : null,
@@ -230,14 +254,19 @@ function hinweiseFuer(person) {
+ "unangenehm.",
});
}
- if (person.rolle === "linke") {
- aus.push({
- titel: "Was du nicht siehst",
- text: "Personen anlegen, Rollen ändern, Bewerbungen und der "
- + "vertrauliche Meldeweg sind nicht für dich freigeschaltet. "
- + "Alles, was mit Aufgaben und dem Team zu tun hat, schon.",
- });
- }
+ /* HIER STAND "Was du nicht siehst" (entfernt 22.09.2026).
+ ------------------------------------------------------------------
+ Der Hinweis zaehlte auf, was der linken Hand fehlt. Filipe: "das
+ geht keinen was an. sie sehen die sachen ja nicht weil es sie
+ nichts angeht und das muss auch nicht erwaehnt werden."
+
+ Die Zeile bleibt als Kommentar stehen, damit niemand den Hinweis
+ spaeter "nachtraegt", weil er ihn fuer vergessen haelt. Er ist
+ entfernt worden, nicht uebersehen.
+
+ Dieselbe Ueberlegung steht im Kopf dieser Datei schon: "Eine Liste
+ von Dingen, die man nicht darf, ist keine Orientierung, sondern
+ eine Kraenkung." Genau das galt fuer diesen Hinweis. */
if (istDogFather(person)) {
aus.push({
titel: "Du entscheidest am Ende",
diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html
index 9c9cc12b..edb2a0b8 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`. -->
-
-
+
+
-
+