Files
dogfather-universe/workspace/unterstuetzen.html
T
DogFatherGitandClaude Opus 5 a02cf5c026 Reaction: Rollen sichtbar, Moderation im Live-Chat
Filipes Wunsch: „die modis, linke hand und rechte hand soll im chat
extra aussehen und auch sachen wie stummschaltungen, sperrungen,
meldunge und alles mögliche im chat machen können falls sich jemand
nicht benimmt."

WER SPRICHT
Jeder Beitrag aus dem Team trägt jetzt ein Abzeichen: „Dogi", „Team"
(beide Hände) und „Modi". Ein WORT und nicht nur eine Farbe — rund
acht Prozent der Männer unterscheiden Rot und Grün schlecht, und hier
hängt an der Unterscheidung etwas. Gedeckte Töne auf schwacher Fläche,
11,52 px (die Hausgrenze ist 11,5), weil daneben ein Video läuft.
Die Wörter sagen den RANG nicht: Filipe steht nie über seinem Team.
Eine Prüfung schlägt an, wenn dort „Chef", „Boss" oder „Leitung"
stünde.

WAS DIE MODERATION KANN
Am Namen öffnet sich ein Menü mit vier Wegen: Beitrag wegnehmen,
10 Minuten stumm, aus der Sendung — und der Verweis in den Treff, wo
längere Maßnahmen hingehören (mit Begründungspflicht und Frist in
Tagen). Die Reaction baut kein zweites Sperrsystem daneben: Wer im
Treff eine Pause hat, schreibt hier auch nicht. Neu ist nur, was der
Treff nicht hat — MINUTEN. Höchstens eine Stunde; wer länger etwas
braucht, nimmt den Treff.
Nicht gegen das Team: Wer einen Modi stummschalten könnte, hätte einen
Weg, die Moderation selbst auszuschalten, mitten in der Sendung.

MELDEN DARF JEDER
Die Moderation sieht nicht alles, wer mitliest schon. Zweimal melden
zählt einmal (sonst füllt einer allein die Liste). Bei der Moderation
erscheint im Kopf der Schiene „1 Meldung" — nur wenn etwas offen ist;
eine Zahl, die immer dasteht und meistens null ist, wird nach drei
Tagen nicht mehr gelesen.

VIER FEHLER, DIE DABEI AUFGEFALLEN SIND

1. `oeffentlich()` nahm `meldungen` und `massnahmen` NICHT aus dem
   Rundruf. Der Rundruf wird aus dem Stand dessen gebaut, der gerade
   etwas getan hat — bei einer Moderationshandlung wären der gemeldete
   Text, der Name des Gemeldeten und der Name des MELDERS an jeden im
   Saal gegangen. Wer meldet, muss sich darauf verlassen können, dass
   das niemand sieht.

2. `meldung.js` hatte zwei Schlüssel doppelt: `geschlossen` und
   `nur_leitung`. Der spätere gewinnt stillschweigend — in der Hilfe
   stand dadurch „Der Saal ist zu". Ein Wort, ein Satz; eine Prüfung
   hält das jetzt fest.

3. Wer stummgeschaltet war, bekam bei OFFENEM Chat „Der Chat ist
   gerade zu" — der Aufrufer reimte sich den Grund aus der Chat-Stufe
   zusammen. Jetzt gibt `schreibGrund()` den echten Grund zurück.

4. Wer rausgenommen wurde, merkte nichts: Das Video lief weiter, nur
   die Anwesenheitsmeldung schlug still fehl. Jetzt hält alles an und
   es steht ein Satz da, der sagt, dass es nur für heute gilt.

UND EINER, DEN NUR DAS BILDSCHIRMFOTO GEFUNDEN HAT
Das Menü lag messbar komplett im Fenster (x=1099..1315 von 1440,
y=652..840 von 900) und war trotzdem abgeschnitten: Die Chatliste
rollt, und ein rollender Vorfahre beschneidet sein Kind. „Im Fenster"
und „sichtbar" sind zwei verschiedene Fragen, und ich hatte die
falsche gemessen. Das Menü hängt jetzt fest am Fenster und klappt nach
oben oder links, wo kein Platz ist. Die Messung fasst seitdem mit
`elementFromPoint` an jeden Knopf an, statt Rechtecke zu vergleichen.

GEPRUEFT
pruef-reaktion: 216 Prüfungen (vorher 156), 0 Fehler — zwei neue
Abschnitte. mess-reaktion misst die Moderation jetzt im echten
Browser: Abzeichen, Überlauf der Schiene, Menü, Stummschaltung beim
Betroffenen, Meldung bis zur Moderation, Rauswurf.
Dazu grün: pruef-meldungen, pruef-struktur, pruef-css-klassen,
pruef-tippziele, pruef-deutsche-texte, pruef-hilfe.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-28 09:32:10 +02:00

123 lines
5.4 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>Unterstützen · Spicy &amp; Dogi</title>
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609280931" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609280931" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609280931" />
<link rel="stylesheet" href="assets/css/start.css?v=202609280931" />
<link rel="stylesheet" href="assets/css/unterstuetzen.css?v=202609280931" />
<link rel="stylesheet" href="assets/css/module.css?v=202609280931" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609280931" />
</head>
<body class="start">
<div class="schleier" aria-hidden="true"></div>
<header class="kopfleiste">
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
<path d="M14.5 5.5 8 12l6.5 6.5" />
</svg>
<span class="zurueck-knopf__text">Zurück</span>
</button>
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator&nbsp;Workspace</a> · Unterstützen</span></p>
<div class="kopfleiste__rechts">
<span class="wer" id="wer">…</span>
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
</div>
</header>
<main class="inhalt inhalt--breit">
<!-- ==================================================================
DER KOPF SAGT ZUERST, DASS NIEMAND MUSS (24.09.2026)
Filipe: „wo die leute alle supporten können auf andere art
anstatt nur tiktok."
Eine Seite, die mit „unterstütze mich" anfängt, liest sich wie
eine hohle Hand. Der erste Satz sagt deshalb das Gegenteil: Es
gibt Wege, die nichts kosten, und keiner davon ist zweite Wahl.
Erst danach kommen die, bei denen Geld fließt.
Wer nichts geben kann, soll diese Seite nicht mit einem
schlechten Gefühl schließen — das ist die ganze Überlegung
hinter dem Aufbau.
============================================================== -->
<section class="kopf-zeile">
<div>
<p class="marke">Community</p>
<h1 class="titel" id="seiten-titel">Dogi etwas zurückgeben</h1>
<p class="unterzeile" id="seiten-unter">
Es geht auch ohne TikTok – und es geht auch ohne Geld.
Such dir aus, was zu dir passt. Niemand muss etwas geben, um dazuzugehören.
</p>
</div>
</section>
<p class="fehler" id="fehler" role="alert" aria-live="polite" hidden></p>
<!-- ==================================================================
NUR DOGFATHER: die Leiste zum Ändern und die Zahlen
„nur dogfather soll sie verändern können oder vieles mehr sehen."
Sie steht im Dokument und wird von unterstuetzen.js eingeblendet
— ausgeliefert bekommt sie jeder, das ist nur HTML. Die
ENTSCHEIDUNG trifft der Server: Er liefert `darf_aendern` und
weist jedes Schreiben ohne dieses Recht mit 404 ab. Ein
verstecktes Feld ist eine Bitte, keine Sperre.
============================================================== -->
<section class="u-leitung" id="leitung" hidden aria-labelledby="leitung-titel">
<div class="u-leitung__kopf">
<h2 class="u-leitung__titel" id="leitung-titel">Nur du siehst das hier</h2>
<button type="button" class="knopf knopf--klein" id="aendern-an">Ändern</button>
</div>
<p class="u-leitung__satz" id="leitung-satz"></p>
<div class="u-zahlen" id="zahlen" hidden></div>
</section>
<!-- Die Wege. unterstuetzen.js baut sie aus der Antwort des Servers —
hier steht nur, wo sie hingehören. -->
<div id="wege" aria-live="polite">
<p class="u-laedt" id="laedt">Wird geladen …</p>
</div>
<!-- ==================================================================
DER LETZTE SATZ IST KEIN SCHMUCK
Er steht fest im Dokument und nicht in der Datenbank: Was hier
zugesagt wird, soll nicht aus Versehen wegzuklicken sein.
============================================================== -->
<p class="u-fuss">
Nichts davon ist Pflicht, und niemand sieht, wer etwas gegeben hat.
Wer nur zuschaut, gehört genauso dazu.
</p>
</main>
<!-- bereiche.js VOR kopf.js: Dort steht `window.Bereiche`, und kopf.js
liest daraus die Leitungsrollen. Ohne sie stürzt jede Seite mit
„Cannot read properties of undefined (reading 'LEITUNG')" ab. -->
<script src="assets/js/bereiche.js?v=202609280931" defer></script>
<script src="assets/js/wahl.js?v=202609280931" defer></script>
<script src="assets/js/nachfrage.js?v=202609280931" defer></script>
<script src="assets/js/installieren.js?v=202609280931" defer></script>
<script src="assets/js/kopf.js?v=202609280931" defer></script>
<script src="assets/js/glocke.js?v=202609280931" defer></script>
<script src="assets/js/holen.js?v=202609280931" defer></script>
<!-- Die Satz-Tafel. Ohne sie stand auf dieser Seite das Maschinenwort
des Servers (z.B. "nicht_gefunden") statt eines Satzes -- gemeldet
von pruef-meldungen, nicht beim Ansehen. -->
<script src="assets/js/meldung.js?v=202609280931" defer></script>
<script src="assets/js/unterstuetzen.js?v=202609280931" defer></script>
</body>
</html>