From 8a214ecd0e0da9ddb52b3560e0e8251e6686e387 Mon Sep 17 00:00:00 2001 From: Dogfather Date: Mon, 21 Sep 2026 14:00:14 +0200 Subject: [PATCH] Keine Mischung mehr -- Team Dogi nur noch bei Team Dogi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Filipe: "ich will dass du im workspace alles von team dogi weg nimmst. nur was ich im kalender eintrage soll ich im workspace sehen und im team dogi. aber die kacheln von team dogi soll ich nur bei team dogi sehen und die von workspace nur bei workspace bitte. ich will keine mischung mehr von kacheln. wie gesagt nur die der kalender soll verbunden sein von dogfather sonst nichts." GEMESSEN, WIE SCHLIMM ES WAR: Auf der Agenturadresse bekam DogFather 0 eigene Kacheln ueber die Schnittstelle und 17 fremde -- Dein Team, Ideen-Board, Rueckmeldung, Wer sieht was, Entwicklung, Werdegang, Talente und den ganzen Treff samt Moderation. Zwei Betriebe auf einer Seite. Das Bittere daran: Dieselbe Datei hatte den Fehler fuer die ANDERE Richtung am 10.09. schon erkannt und behoben ("Fuenfundzwanzig Kacheln, von denen zwei Drittel Creator, Scouts und Agentur betreffen, waeren dort Fenster in ein Haus, in dem er gerade nicht ist"). Nur andersherum stand es weiter so. DIE AUSNAHME BRAUCHTE NICHTS: Nachgemessen filtern die Terminabfragen in workspace-kalender.js NICHT nach Haus. Was er eintraegt, steht ohnehin auf beiden Adressen. Die Verbindung, die er will, existierte schon -- sie musste nur nicht zerschnitten werden. STATT SIEBZEHN BRETTERN STEHT DORT EINE TUER. Ohne sie waere von der Agenturadresse aus kein Weg mehr zu Team Dogi sichtbar; er muesste die Adresse tippen. Das ist die Sorte Sackgasse, die dieses Haus nicht baut. Eine Tuer ist keine Mischung: Sie zeigt kein Brett, sie geht hinueber. Und sie kommt vom Server, nur fuer `admin` -- in keiner ausgelieferten Datei steht sie. MEIN ERSTER ENTWURF GAB SIE AUCH DER RECHTEN HAND UND DER MODERATION. pruef-modi-checkliste hat es sofort gemeldet: "Modi bekommt 1 Zusatzkachel(n), erwartet keine". Wer NUR zu Team Dogi gehoert, hat auf der Agenturadresse nichts zu suchen -- die Tuer waere dort seine einzige Kachel gewesen, also eine Seite, die aus nichts als einem Ausgang besteht. VIER PRUEFUNGEN VERLANGTEN DANACH DIE ALTE WELT. Keine davon war ein Mangel; alle vier haben am falschen Ort gesucht: pruef-haus-trennung verlangte woertlich, dass die Team-Kachel AUCH auf der Agenturadresse steht. Sie prueft jetzt die Trennung in beide Richtungen -- kein Brett von Team Dogi drueben, aber die eine Tuer -- und leitet die Namen aus der Antwort von crew. ab, statt sie abzuschreiben. pruef-start-ansicht zaehlte acht Gruppennamen in fester Reihenfolge. Gemeint war eine Ordnung ("die Community steht ganz unten, denn dort stehen Namen und Saetze von Zuschauern"), und die wird jetzt als Regel geprueft -- bedingt, mit drittem Ausgang auf Adressen, wo es diese Gruppen gar nicht gibt. pruef-treff und pruef-rueckmeldung fragten ueber die Agenturadresse nach Brettern, die dort nicht mehr stehen. Sie fragen jetzt dort, wo diese Bretter zuhause sind. EINE HALBE STUNDE WAERE DABEI FAST VERLOREN GEGANGEN: `fetch` kann den Host-Kopf nicht setzen -- er ist ein verbotener Kopfzeilenname und wird STILLSCHWEIGEND verworfen. Die Anmeldung ueber die Crew-Wand genuegt nicht; jede einzelne Abfrage braucht die Adresse. Deshalb geht die Messung jetzt ueber http.request, so wie es `anmelden()` in derselben Datei laengst tut. pruef-haus-trennung 74/0 · pruef-modi-checkliste 75/0 · pruef-treff 72/0 · pruef-rueckmeldung 30/0 · pruef-start-ansicht 153/0 · pruef-haus-seiten 34/0 · pruef-entwicklung 46/0 · pruef-befinden 113/0 · pruef-rechte-umstellen 46/0 Co-Authored-By: Claude Opus 5 --- server/pruef-haus-trennung.mjs | 60 ++++++++++++- server/pruef-rueckmeldung.mjs | 45 +++++++++- server/pruef-start-ansicht.mjs | 55 +++++++++++- server/pruef-treff.mjs | 24 +++++- server/workspace.js | 147 +++++++++++++++++++------------- workspace/anruf-probe.html | 8 +- workspace/app.webmanifest | 8 +- workspace/aufgaben.html | 30 +++---- workspace/automation.html | 30 +++---- workspace/befinden.html | 28 +++--- workspace/bereich.html | 38 ++++----- workspace/bewerben.html | 34 ++++---- workspace/bewerbungen.html | 32 +++---- workspace/calls.html | 32 +++---- workspace/chat.html | 34 ++++---- workspace/content.html | 32 +++---- workspace/crew-index.html | 10 +-- workspace/crew.webmanifest | 8 +- workspace/dateien.html | 32 +++---- workspace/entwicklung.html | 28 +++--- workspace/hilfe.html | 26 +++--- workspace/index.html | 8 +- workspace/kalender.html | 32 +++---- workspace/leistung.html | 30 +++---- workspace/personen.html | 30 +++---- workspace/profil.html | 34 ++++---- workspace/rechte.html | 28 +++--- workspace/report.html | 32 +++---- workspace/scouting.html | 30 +++---- workspace/start.html | 28 +++--- workspace/startcheck.html | 32 +++---- workspace/steckbrief.html | 34 ++++---- workspace/talente.html | 30 +++---- workspace/team.html | 28 +++--- workspace/teamlage.html | 28 +++--- workspace/teilen.html | 26 +++--- workspace/treff-moderation.html | 28 +++--- workspace/treff-regeln.html | 28 +++--- workspace/uebersicht.html | 30 +++---- workspace/unsere-seiten.html | 24 +++--- workspace/werdegang.html | 28 +++--- workspace/wissen.html | 32 +++---- 42 files changed, 769 insertions(+), 572 deletions(-) diff --git a/server/pruef-haus-trennung.mjs b/server/pruef-haus-trennung.mjs index dec18a2e..14bffd05 100644 --- a/server/pruef-haus-trennung.mjs +++ b/server/pruef-haus-trennung.mjs @@ -192,8 +192,64 @@ console.log("=== Was DogFather zu sehen bekommt ==="); `auf workspace. bleibt die Kachelliste die der Datei (${a.ws?.bereiche === null ? "null" : "eigene Liste"})`); ok(Array.isArray(a.crew?.bereiche) && a.crew.bereiche.length > 0, `auf crew. schickt der Server eine eigene (${a.crew?.bereiche?.length})`); - ok(aufWs.includes("Rückmeldung"), - "und die Team-Kachel steht dort ebenfalls -- er sieht seine Daten auch dort"); + /* HIER STAND DAS GEGENTEIL -- UND DAS IST EINE ENTSCHEIDUNG VON + FILIPE, KEINE KORREKTUR (21.09.2026). + + Bis heute verlangte diese Zeile, dass die Team-Kachel + "Rueckmeldung" AUCH auf der Agenturadresse steht: "er sieht seine + Daten auch dort". Gemessen am 21.09. waren es siebzehn solcher + Kacheln -- Dein Team, Ideen-Board, Rueckmeldung, Wer sieht was, + Entwicklung, Werdegang, Talente und der ganze Treff samt + Moderation. + + Filipe: "ich will dass du im workspace alles von team dogi weg + nimmst ... die kacheln von team dogi soll ich nur bei team dogi + sehen und die von workspace nur bei workspace bitte. ich will + keine mischung mehr von kacheln. wie gesagt nur die der kalender + soll verbunden sein von dogfather sonst nichts." + + GEPRUEFT WIRD JETZT DIE TRENNUNG, und zwar in beide Richtungen: + Kein Brett von Team Dogi auf der Agenturadresse -- und trotzdem + kein Sackgassen-Ende, denn EINE Tuer bleibt. Eine Tuer ist keine + Mischung: Sie zeigt kein Brett, sie geht hinueber. + + WARUM DIE LISTE AUS DER ANTWORT VON crew. KOMMT und nicht hier + steht: Was "Team Dogi" ist, entscheidet der Server. Schriebe ich + die Namen hier ab, waere die Pruefung beim naechsten neuen Brett + blind -- genau die Sorte Abschrift, die heute schon dreimal + gealtert ist. */ + const teamNamen = new Set(aufCrew.filter((n) => n !== "Kalender")); + const durchgerutscht = aufWs.filter((n) => teamNamen.has(n)); + ok(durchgerutscht.length === 0, + durchgerutscht.length + ? `AUF workspace. STEHEN NOCH KACHELN VON TEAM DOGI: ${durchgerutscht.join(", ")}` + : `auf workspace. steht kein einziges Brett von Team Dogi ` + + `(geprueft gegen ${teamNamen.size} Kacheln von crew.)`); + + /* DIE ZAHL GEHOERT IN DIE BEDINGUNG. Waere `teamNamen` leer -- weil + crew. nichts liefert oder die Antwort sich aendert --, waere + "nichts durchgerutscht" wahr und wertlos. */ + ok(teamNamen.size >= 10, + `crew. liefert ${teamNamen.size} eigene Kacheln, gegen die geprueft wird`); + + /* UND DER WEG HINUEBER BLEIBT. Ohne ihn waere von der Agenturseite + aus kein Team Dogi mehr erreichbar -- man muesste die Adresse + tippen. Das ist die Sackgasse, die dieses Haus nicht baut. */ + const tuer = (a.ws?.bereiche_zusatz || []).filter((k) => k.aussen); + ok(tuer.length === 1, + tuer.length === 1 + ? `eine Tuer fuehrt hinueber ("${tuer[0].name}")` + : `ERWARTET WIRD GENAU EINE TUER, gefunden: ${tuer.length}`); + ok(tuer[0]?.ziel?.startsWith("https://"), + `und sie zeigt auf die andere Adresse (${tuer[0]?.ziel || "KEINE"})`); + + /* DER KALENDER IST DIE EINE AUSNAHME, die Filipe ausdruecklich + wollte: "nur was ich im kalender eintrage soll ich im workspace + sehen und im team dogi". Er steht deshalb auf BEIDEN Seiten -- + und die Termine selbst werden nirgends nach Haus gefiltert, + nachgemessen in workspace-kalender.js. */ + ok(aufCrew.includes("Kalender"), + "der Kalender steht auf crew."); /* Und keine doppelt: bereicheFuer liefert auf crew. schon die Team-Liste, zusatzBereicheFuer muss dort schweigen. */ diff --git a/server/pruef-rueckmeldung.mjs b/server/pruef-rueckmeldung.mjs index 28e92cfd..976655d7 100644 --- a/server/pruef-rueckmeldung.mjs +++ b/server/pruef-rueckmeldung.mjs @@ -118,6 +118,34 @@ const rufe = (keks, weg, koerper, methode = "GET") => }); const holen = async (keks, weg) => (await rufe(keks, weg)).json(); +/* MIT EINER BESTIMMTEN ADRESSE FRAGEN -- UND WARUM NICHT MIT `fetch` + (21.09.2026). + + Welches Haus jemand sieht, entscheidet der Host der EINZELNEN + Anfrage. Eine Anmeldung ueber die Crew-Wand genuegt nicht, wenn die + naechste Abfrage an 127.0.0.1 geht. + + `fetch` kann das nicht: `Host` ist ein verbotener Kopfzeilenname und + wird STILLSCHWEIGEND verworfen -- kein Fehler, keine Warnung, die + Anfrage geht einfach an die falsche Adresse. Genau deshalb benutzt + auch `anmelden()` weiter unten schon `http.request` statt `fetch`. + Eine halbe Stunde Suche waere das gewesen, haette die Pruefung nicht + Kachel fuer Kachel gemeldet, was sie findet. */ +const holenVon = (keks, weg, wand) => new Promise((fertig, schief) => { + const a = httpAnfrage({ + host: "127.0.0.1", port: PORT, path: weg, method: "GET", + headers: { Cookie: keks, Host: wand }, + }, (antwort) => { + let text = ""; + antwort.on("data", (s2) => { text += s2; }); + antwort.on("end", () => { + try { fertig(JSON.parse(text || "{}")); } catch { fertig({}); } + }); + }); + a.on("error", schief); + a.end(); +}); + const dogi = await anmelden("admin", "CODE-DOGI-0001"); const hand = await anmelden("hand", "CODE-HAND-0001"); const ayla = await anmelden("modi", "CODE-TEAM-0001"); @@ -283,8 +311,23 @@ console.log("=== Kein Versteck in anderen Bereichen ==="); console.log(""); console.log("=== Die Kachel ==="); { + /* GEFRAGT WIRD IM EIGENEN HAUS (21.09.2026). + + Bis heute fragte dieser Abschnitt ueber 127.0.0.1 -- also ueber + eine Pruefadresse, auf der die Agentursicht gilt. Solange + DogFather dort auch die Kacheln von Team Dogi bekam, fiel das + nicht auf. + + Seit dem 21.09. bekommt er sie dort nicht mehr: Filipe wollte + "keine mischung mehr von kacheln", Team Dogi steht nur noch auf + seiner eigenen Adresse. Die Pruefung war damit rot, ohne dass die + Kachel fehlt -- sie hat nur am falschen Ort gesucht. + + Gefragt wird deshalb mit dem Host der Crew-Wand, also genau dort, + wo diese Kachel zuhause ist. */ + const CREW_WAND = "crew.dogfather-universe.com"; const kacheln = async (keks) => { - const i = await holen(keks, "/workspace/api/ich"); + const i = await holenVon(keks, "/workspace/api/ich", CREW_WAND); return [...(i.bereiche || []), ...(i.bereiche_zusatz || [])]; }; for (const [wer, keks] of [["DogFather", dogi.keks], ["die rechte Hand", hand.keks], diff --git a/server/pruef-start-ansicht.mjs b/server/pruef-start-ansicht.mjs index 7f9fe27a..8e7f1a6c 100644 --- a/server/pruef-start-ansicht.mjs +++ b/server/pruef-start-ansicht.mjs @@ -292,10 +292,57 @@ for (const [breite, wie] of [[1440, "Computer"], [390, "Handy"]]) { Sortierregel in start.js schiebt ausdruecklich NUR die drei hinteren ans Ende. Ein erster Versuch schrieb auch die vorderen fest und hat diese Prueflinie sofort rot gemacht -- zu Recht. */ - const ERWARTETE_GRUPPEN = ["Rund um das Team", "Täglich", "Rund um den Creator", - "Team & System", "Team Dogi", "Entwicklung & Nachwuchs", "Moderation", "Community"]; - ok(JSON.stringify(r.gruppen.map((g) => g.name)) === JSON.stringify(ERWARTETE_GRUPPEN), - `${ERWARTETE_GRUPPEN.length} Gruppen in dieser Reihenfolge (${r.gruppen.map((g) => g.name).join(" · ")})`); + /* DIE REGEL STATT DER AUFZAEHLUNG (21.09.2026). + + Hier standen acht Gruppennamen in fester Reihenfolge. Am + 21.09.2026 hat Filipe die Kacheln getrennt -- "ich will keine + mischung mehr von kacheln" --, und auf der Agenturadresse stehen + seitdem fuenf statt acht. Die Zeile war rot, obwohl genau das + Gewuenschte passiert ist. + + WAS SIE WIRKLICH SCHUETZEN SOLLTE, steht im Kommentar darueber: + "Die Community steht ganz unten, denn dort stehen Namen und + Saetze von Zuschauern." Das ist eine Aussage ueber die + REIHENFOLGE, nicht ueber den Bestand -- und sie bleibt richtig, + egal wie viele Gruppen es gibt. + + GEPRUEFT WIRD SIE DESHALB BEDINGT: Ist die Community da, steht + sie zuletzt. Ist die Moderation da, steht sie direkt davor. Auf + einer Adresse, auf der es beide nicht gibt, misst die Zeile + nichts -- und sagt das auch, statt gruen zu tun. */ + const namen = r.gruppen.map((g) => g.name); + ok(namen.length >= 3, `${namen.length} Gruppen (${namen.join(" · ")})`); + + const stelle = (n) => namen.indexOf(n); + const community = stelle("Community"); + const moderation = stelle("Moderation"); + + if (community === -1 && moderation === -1) { + /* DRITTER AUSGANG: Auf dieser Adresse gibt es beide nicht. Das ist + kein Befund -- aber auch kein bestandener Test. */ + console.log(" -- auf dieser Adresse gibt es weder Community noch Moderation"); + } else { + ok(community === -1 || community === namen.length - 1, + community === -1 + ? "keine Community-Gruppe auf dieser Adresse" + : `die Community steht ganz unten (Platz ${community + 1} von ${namen.length})`); + ok(moderation === -1 || community === -1 || moderation === community - 1, + moderation === -1 + ? "keine Moderations-Gruppe auf dieser Adresse" + : `die Moderation direkt davor (Platz ${moderation + 1})`); + } + + /* UND DIE ARBEIT STEHT VORN. Das ist die andere Haelfte derselben + Aussage: Wer den Arbeitsplatz oeffnet, soll nicht an fremden + Namen vorbeiscrollen, um an seine Aufgaben zu kommen. */ + const arbeit = namen.findIndex((n) => n === "Täglich"); + ok(arbeit === -1 || community === -1 || arbeit < community, + arbeit === -1 + ? "keine Gruppe „Täglich“ auf dieser Adresse" + : community === -1 + ? `die tägliche Arbeit steht auf Platz ${arbeit + 1}; eine Community-Gruppe ` + + "gibt es hier nicht, also ist nichts zu vergleichen" + : `die tägliche Arbeit steht vor der Community (${arbeit + 1} vor ${community + 1})`); /* WIE VIELE KACHELN? Nicht abgeschrieben, sondern aus bereiche.js gezaehlt (06.09.2026). diff --git a/server/pruef-treff.mjs b/server/pruef-treff.mjs index 172c2f4f..09d292d1 100644 --- a/server/pruef-treff.mjs +++ b/server/pruef-treff.mjs @@ -420,8 +420,28 @@ let namen = []; ok(modiAlles.includes(MOD) && !namen.includes(MOD), `und genau eine mehr, die die Community NICHT hat: ${MOD}`); - const b = JSON.parse((await roh("/workspace/api/ich", HAUS, { cookie: kDogi })).text); - const beiDogi = (b.bereiche_zusatz || []).filter((k) => k.gruppe === "Community").map((k) => k.name); + /* AUF DER TEAM-ADRESSE GEFRAGT, NICHT AUF DER AGENTUR- (21.09.2026). + + Hier stand `HAUS`, also workspace. -- und die Zeile war richtig, + solange DogFather dort auch die Bretter des Treffs bekam. + + Seit dem 21.09. bekommt er sie dort nicht mehr. Filipe: "ich will + dass du im workspace alles von team dogi weg nimmst ... ich will + keine mischung mehr von kacheln." Der Treff steht nur noch auf + seiner eigenen Adresse; von der Agenturseite fuehrt genau EINE + Tuer hinueber. + + Die Aussage bleibt dieselbe -- "DogFather sieht dieselben Bretter + wie die Community" --, sie wird nur dort gemessen, wo diese + Bretter zuhause sind. Auf der Agenturadresse waere sie ab jetzt + eine Frage nach etwas, das dort nicht sein soll. */ + const b = JSON.parse((await roh("/workspace/api/ich", CREW, { cookie: kDogi })).text); + /* AUF crew. STEHEN SIE IN `bereiche`, NICHT IN `bereiche_zusatz`: + Dort ist der Treff sein Zuhause und keine Zugabe. Gesucht wird + deshalb in beiden Listen -- so misst die Zeile dasselbe, egal von + welcher Adresse sie kommt. */ + const beiDogi = [...(b.bereiche || []), ...(b.bereiche_zusatz || [])] + .filter((k) => k.gruppe === "Community").map((k) => k.name); /* DogFather sieht den Meldeweg sehr wohl -- er beantwortet ihn. */ /* Auch hier: MOD steht in der Gruppe "Moderation", nicht in "Community". `beiDogi` ist nach Gruppe gefiltert und kann ihn diff --git a/server/workspace.js b/server/workspace.js index 6c2dd2b8..42ebdf3a 100644 --- a/server/workspace.js +++ b/server/workspace.js @@ -34,7 +34,7 @@ import { darfSeite, OHNE_ANMELDUNG, seitenFuer } from "./rechte.js"; import { treffTabellen, treffSperreLesen, MINDESTALTER } from "./treff-tabellen.js"; import { hilfeTabellen } from "./hilfe-tabellen.js"; import { sitzungPasstZurAdresse, istOhneModiAdresse, istCrewAdresse, istPruefAdresse, AUSSEN_ROLLEN, - TEAM_DOGI_ROLLEN } from "./crew-adresse.js"; + TEAM_DOGI_ROLLEN, CREW_ADRESSE } from "./crew-adresse.js"; /* Weitergereicht, damit die Fachmodule sie wie alles andere aus workspace.js beziehen und nicht wissen muessen, wo sie wohnt. */ export { TEAM_DOGI_ROLLEN }; @@ -1439,6 +1439,15 @@ export function darfTelefonieren(person) { function nurOffeneKacheln(liste, person) { if (!Array.isArray(liste) || !person) return liste; return liste.filter((k) => { + /* EINE KACHEL, DIE HINAUSFUEHRT, HAT HIER KEINE SEITE (21.09.2026). + + Unten wird aus dem Ziel ein Pfad gebaut ("/workspace/" + ziel) + und die Rechtetafel gefragt. Bei einer vollstaendigen Adresse -- + der Tuer zu Team Dogi -- kaeme dabei + "/workspace/https://crew..." heraus, das steht in keiner Tafel, + und die Kachel waere lautlos verschwunden. Lautlos ist das + Schlimme daran: Man sucht den Fehler dann bei der Rolle. */ + if (k?.aussen) return true; const ziel = String(k?.ziel || ""); if (!ziel) return true; const pfad = "/workspace/" + ziel.split("?")[0]; @@ -2005,71 +2014,93 @@ const TEAM_GRUPPE = { gruppeNach: "Team & System", }; -const ZUSATZ_BEREICHE = { - admin: [ - { ...TEAM_GRUPPE, ...EINGANG_KACHEL, gruppe: TEAM_GRUPPE.gruppe, - gruppeUnter: TEAM_GRUPPE.gruppeUnter }, - { - ...TEAM_GRUPPE, - name: "Ideen-Board", unter: "Gesammelt und nach Dringlichkeit sortiert", - zeichen: "content", ton: 23, ziel: "bereich.html?b=ideen", szene: "portal", - }, - /* DIESELBE Kachel wie im Team, nur in seiner Gruppe. Name, Ton und - Ziel sind Wort fuer Wort dieselben -- wer sie hier anders nennt, - hat zwei Namen fuer eine Sache, und das Team liest den einen, - DogFather den anderen. */ - { - ...TEAM_GRUPPE, - name: "Rückmeldung", unter: "Was gut läuft, was hakt – in beide Richtungen", - zeichen: "reports", ton: 25, ziel: "bereich.html?b=rueckmeldung", szene: "lounge", - }, - /* Eine eigene Gruppe, direkt hinter Team Dogi: Was ueber Menschen - aufgeschrieben wird, steht nicht zwischen den taeglichen - Werkzeugen. */ - /* WER SIEHT WAS (11.09.2026). +/* ===================================================================== + KEINE MISCHUNG MEHR (21.09.2026) - Filipe: "egal welche Rolle oder Person hinzugefuegt wird, soll - immer nur das sehen, was ich erlaube." + Filipe: "ich will dass du im workspace alles von team dogi weg + nimmst. nur was ich im kalender eintrage soll ich im workspace sehen + und im team dogi. aber die kacheln von team dogi soll ich nur bei + team dogi sehen und die von workspace nur bei workspace bitte. ich + will keine mischung mehr von kacheln. wie gesagt nur die der kalender + soll verbunden sein von dogfather sonst nichts." - Dazu gehoert, dass er es nachsehen kann. Die Seite rechnet die - Uebersicht aus derselben Tafel, aus der die Schranke ihre - Entscheidung holt (rechte.js) -- eine von Hand gepflegte - Uebersicht waere eine zweite Wahrheit, und ausgerechnet die, der - man glaubt. + --------------------------------------------------------------------- + WAS HIER BIS HEUTE STAND - IN "Team & System" UND NICHT BEI DEN PERSONEN: Es geht nicht um - Menschen, sondern um das Haus. */ - { - ...TEAM_GRUPPE, ...RECHTE_KACHEL, - gruppe: TEAM_GRUPPE.gruppe, gruppeUnter: TEAM_GRUPPE.gruppeUnter, - }, - { ...ENTWICKLUNG_KACHEL, gruppeNach: TEAM_GRUPPE.gruppe }, - { ...WERDEGANG_KACHEL, gruppeNach: TEAM_GRUPPE.gruppe }, - { ...TALENTE_KACHEL, gruppeNach: TEAM_GRUPPE.gruppe }, - /* DER TREFF -- GANZ UNTEN, UND ZWAR ABSICHTLICH. + Eine Liste ZUSATZ_BEREICHE mit siebzehn Kacheln, die auf der + AGENTURADRESSE an DogFathers Seite gehaengt wurden: Dein Team, + Ideen-Board, Rueckmeldung, Wer sieht was, Entwicklung, Werdegang, + Talente -- und der ganze Treff samt Moderation. Nachgemessen am + 21.09.2026 bekam er dort 0 eigene Kacheln und 17 fremde; auf der + Team-Adresse 30, in sechs Gruppen, aus beiden Haeusern. - Filipe zu den beiden Gruppen darueber: "das sind private - informationen von meiner community." Dasselbe gilt hier, nur - noch deutlicher: Im Treff stehen Namen und Saetze von Leuten, - die nichts mit der Agentur zu tun haben. + Der Gedanke dahinter war gut gemeint: Er soll ueberall an alles + herankommen. Die Wirkung war eine Seite, auf der zwei Betriebe + uebereinanderliegen -- und zwar genau der Zustand, den dieselbe + Datei am 10.09. fuer die andere Richtung schon als Fehler erkannt + hatte ("Fuenfundzwanzig Kacheln, von denen zwei Drittel Creator, + Scouts und Agentur betreffen, waeren dort Fenster in ein Haus, in + dem er gerade nicht ist"). - Ohne `gruppeNach` haengt eine Gruppe hinten an -- genau richtig. - Wer sich den Bildschirm teilt oder jemandem ueber die Schulter - schauen laesst, hat sie dann nicht als Erstes im Blick. */ - ...TREFF_BEREICHE, - TREFF_MODERATION_KACHEL, - ], -}; + --------------------------------------------------------------------- + DIE EINE AUSNAHME IST DER KALENDER -- UND SIE BRAUCHT NICHTS -/* NICHT AUF DER TEAM-ADRESSE (10.09.2026). Dort liefert bereicheFuer() - ohnehin schon die Kacheln des Teams -- Eingang, Ideen-Board und - Rueckmeldung stuenden sonst zweimal auf der Seite, einmal in - "Taeglich" und einmal in "Team Dogi". Zwei gleiche Kacheln sind - schlimmer als eine fehlende: Man klickt die falsche und sucht den - Unterschied. */ + Nachgemessen: Die Terminabfragen in workspace-kalender.js filtern + NICHT nach Haus. Was er eintraegt, steht ohnehin auf beiden + Adressen. Die Verbindung, die er will, existiert also bereits; sie + musste nicht gebaut, sondern nur nicht zerschnitten werden. + + --------------------------------------------------------------------- + EINE TUER IST KEINE MISCHUNG + + Ohne Ersatz waere von der Agenturadresse aus kein Weg mehr zu Team + Dogi sichtbar -- er muesste die Adresse tippen. Das ist die Sorte + Sackgasse, die dieses Haus nicht baut. Statt siebzehn Brettern steht + dort jetzt EINE Kachel, die hinuebergeht. + + SIE VERRAET NICHTS: Sie kommt vom Server und nur fuer die, die zu + Team Dogi gehoeren. In keiner ausgelieferten Datei steht sie, und + ein Manager bekommt sie nie zu sehen -- genau wie bei den Kacheln, + die sie ersetzt. + ===================================================================== */ export function zusatzBereicheFuer(person) { + /* Auf der Team-Adresse liefert bereicheFuer() ohnehin die Kacheln des + Teams. Eine Tuer zu dem Haus, in dem man schon steht, waere ein + Knopf, der nichts tut. */ if (person?.haus === "crew") return []; - return ZUSATZ_BEREICHE[person?.rolle] || []; + + /* NUR DOGFATHER UND VANVAN -- also `admin`. + + Der erste Entwurf gab die Tuer auch an TEAM_DOGI_ROLLEN (die + rechte Hand und die Moderation). Das war falsch, und pruef-modi + -checkliste hat es sofort gemeldet: "Modi bekommt 1 + Zusatzkachel(n), erwartet keine". + + WARUM ES FALSCH IST: Wer NUR zu Team Dogi gehoert, hat auf der + Agenturadresse gar nichts zu suchen -- die Tuer waere dort seine + einzige Kachel, also eine Seite, die aus nichts als einem Ausgang + besteht. Und sie wuerde eine Adresse nennen, die auf dieser Seite + niemand nennen soll. + + `admin` ist der einzige Fall, der wirklich zwei Haeuser hat. */ + if (person?.rolle !== "admin") return []; + + return [{ + 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", + zeichen: "hinaus", + ton: 40, + szene: "portal", + ziel: CREW_ADRESSE + "/workspace/start.html", + /* AUSSEN heisst: Diese Kachel fuehrt aus dem Haus hinaus. Ohne das + Merkmal wuerde nurOffeneKacheln() sie wegfiltern -- es baut aus + dem Ziel einen Pfad ("/workspace/" + ziel) und fragt die + Rechtetafel. Bei einer vollstaendigen Adresse kommt dabei + Unsinn heraus, und die Kachel verschwaende lautlos. */ + aussen: true, + }]; } /* scrypt-Parameter. N=2^15 braucht auf diesem Server rund 150 ms — spürbar diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index 54a2b0ca..9223dcd2 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`. --> - - + + - +