Die zwei Häuser sind getrennt -- und die Tür geht in beide Richtungen

Filipe: "ich will dass du zuerst die komplette site vn der workspace
seite trennst. da soll nichts verknüpft sein. wenn ich bei der einen
was mache soll nichts bei der anderen passieren. … es soll nur für
dogfather eine kachel geben wo er mit einem einfachen klick von der
einen auf die anderen seite kommt aber sonst garnichts."

Das kehrt die Entscheidung vom 10.09.2026 um ("getrennt wird das
AUSSEHEN, nicht der Bestand"). Wer den alten Kommentar liest, liest
einen überholten Stand -- das steht jetzt an jeder betroffenen Stelle.

WAS GEMESSEN WAR, BEVOR ETWAS GEBAUT WURDE
  * Nur drei Module trennten nach Haus (Aufgaben, Bereiche, Dateien).
    Chat, Kalender, Wissen, Material, Personenlisten und der Rest nicht.
  * Die Trennung war EINSEITIG: nurHaus() griff nur auf crew.
  * siehtModis() hebelte sie für DogFather auf der Agenturseite aus --
    in seiner Gesprächsliste standen dort beide Häuser nebeneinander.
  * Keine haus-Spalte in der Datenbank.
  * Der Bestand kreuzte aber kaum: 0 von 86 Terminen gemischt, 0 von 7
    Zweier-/Gruppengesprächen, genau EIN Kanal.

WAS JETZT DASTEHT
  * Drei Rollenmengen in crew-adresse.js (crew / agentur / beide) und
    hausVonRolle(); eine unbekannte Rolle bekommt null, kein Haus.
  * Spalte `haus` an acht Wurzeltabellen, nachgetragen aus Belegen:
    238 Zeilen eindeutig, die Wissensablage geschlossen der Agentur,
    vier Restzeilen namentlich, der gemischte Kanal aufgelöst
    (die zwei Scouts gehen heraus, die 7 Nachrichten sind alle vom
    Team). Offen bleiben: null.
  * nurHaus, hausBedingung und darfAnlegen gelten in BEIDE Richtungen.
  * Der siehtModis-Durchgriff ist weg -- aber in DREI Fällen, nicht
    zwei: Prüfadressen bekommen gar kein Haus und verhalten sich exakt
    wie vorher. Die erste Fassung hatte das übersehen und 19 Prüfungen
    umgeworfen, an denen nichts kaputt war.
  * Kalender: getrennt, aber "belegt" bleibt (Filipes Entscheidung).
    Die Blöcke tragen NUR Beginn und Dauer -- kein Titel, keine Person.
    Gebaut als Gegenstück zur Liste (meine Termine MINUS die sichtbaren),
    damit beide nicht auseinanderlaufen können.
  * Die Wissens-Kachel ist auf der Team-Adresse weg UND die Route
    antwortet dort mit 404 -- eine fehlende Kachel ist nur eine Bitte.
  * Die Wechsel-Kachel für DogFather geht jetzt in beide Richtungen.

GEPRÜFT: pruef-haus-trennung 97 statt 81, 0 Fehler (vorher 7, alle
haben die alte Regel behauptet). Die neuen Abschnitte sind DORT
eingezogen statt in eine zweite Datei -- `pruef-haustrennung.mjs` hätte
sich von `pruef-haus-trennung.mjs` um einen Bindestrich unterschieden.
Dazu grün: haus-seiten, crew-adresse, chat, chat-kanaele,
kanal-besetzung, kalender, serien, treffchat, wissen-neu,
modi-checkliste, modi-katalog, rechtetafel, personen-liste, sicht,
verborgen, fremde-sicht, alle-wege.

NICHT VON MIR: pruef-treff (3) und pruef-kachel-universum (2) waren
schon vorher rot -- beim Treff auf dem Stand 40b48e89 nachgemessen,
bei den Farben steht dieselbe Zahl im Kopf der Prüfung selbst.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-24 20:40:20 +02:00
co-authored by Claude Opus 5
parent 40b48e89f1
commit 9863645952
55 changed files with 1718 additions and 697 deletions
+48 -1
View File
@@ -73,6 +73,11 @@
Brett vergessen, genau wie die Filterliste, die hier schon
einmal stehengeblieben ist (siehe unten bei `zeigen`). */
brett: 'Vom Brett',
/* Der Name steht auch hier, damit Filterleiste und Beschriftung
dieselbe Quelle haben. Ohne Eintrag hiesse der Block in der
Leiste schlicht "belegt" in Kleinbuchstaben -- und niemand
wuesste, dass man ihn abschalten kann. */
belegt: 'Belegt (andere Seite)',
};
/* Jede Art trägt ihre eigene Farbe -- dieselbe Idee wie bei den Kacheln
auf der Startseite: Die Farbe gehört zur Sache, nicht zum Rang. */
@@ -112,6 +117,17 @@
unterscheidet: nicht das helle Blau der Calls, nicht das Violett
der Termine, nicht das Tuerkis der Collabs. */
brett: '#7f9cc0',
/* ==== BELEGT AUF DER ANDEREN SEITE (24.09.2026) ==================
Der leiseste Ton im ganzen Satz, und das ist Absicht: Ein
belegter Block ist keine Verabredung, die man ansieht, sondern
eine Stelle, an der man nichts hinlegt. Er soll auffallen, wenn
man eine Zeit SUCHT, und sonst nicht.
Grau und nicht eine der neun Farben -- jede von ihnen hiesse
„eine Art von Termin", und genau das ist hier nicht bekannt.
Man weiss, DASS etwas ist, und nichts darueber, WAS. */
belegt: '#5c6672',
};
/* Warum ein Zettel vom Brett im Kalender steht -- in Worten, die man
ohne Erklaerung versteht. Die Schluessel kommen vom Server; steht
@@ -540,6 +556,30 @@
checkliste: t.checkliste_aufgaben ?? null,
});
}
/* ==== DIE ZEITEN DER ANDEREN SEITE (24.09.2026) ==================
Filipe: „Getrennt, aber ‚belegt' bleibt sichtbar."
Der Server schickt hier NUR Beginn und Dauer -- kein Titel,
keine Nummer, keine Person. Der Browser kann also gar nichts
ueber die andere Seite verraten, selbst wenn er wollte: Es ist
nicht da. Das ist der Grund, warum die Trennung im SERVER
gemacht wird und nicht durch Weglassen beim Zeichnen.
KEINE `id` UND KEIN `ziel`: Damit ist der Block nicht anklickbar
und bekommt in der Tagesansicht keine Knoepfe. Ein „erledigt" an
einem fremden Termin waere eine Aenderung im anderen Haus --
genau das, was nicht mehr passieren soll. */
for (const b of roh.belegt || []) {
raus.push({
art: 'belegt', tag: b.beginn.slice(0, 10), uhr: b.beginn.slice(11, 16),
titel: 'belegt', erledigt: false, id: null,
farbe: ARTFARBE.belegt,
zusatz: [b.dauer_min ? b.dauer_min + ' Min' : null,
'auf der anderen Seite'].filter(Boolean).join(' · '),
dauer_min: b.dauer_min,
});
}
for (const f of roh.fristen || []) {
raus.push({
art: 'frist', tag: f.frist, uhr: null,
@@ -1271,7 +1311,14 @@
Dasselbe gilt seit jeher fuer die Frist -- deshalb steht beides
in EINER Bedingung und nicht in zwei: Es ist dieselbe Regel. */
if (e.art === 'frist' || e.art === 'brett') {
if (e.art === 'belegt') {
/* KEIN KNOPF. Ein „erledigt" an einem Block der anderen Seite
schickte `PATCH /workspace/api/termine/null` -- und waere,
wenn es ginge, eine Aenderung im anderen Haus. Hier steht
stattdessen der eine Satz, der alles sagt, was man wissen
darf. */
rechts.append(el('span', 'k-pille__zeit', 'auf der anderen Seite'));
} else if (e.art === 'frist' || e.art === 'brett') {
const a = el('a', 'schritt', e.art === 'brett' ? 'zum Brett' : 'zur Aufgabe');
a.href = e.ziel || 'aufgaben.html';
rechts.append(a);