Drei Sachen von Filipe, und eine davon war ein Fehler von mir.
1. DER VERMITTLUNGSSERVER HAT NIE EINEN ANRUF GETRAGEN.
Am 18.09. habe ich gemeldet, coturn laufe und sei "von aussen
nachgewiesen". Das war falsch. Im Protokoll: null Zuteilungen, jemals.
Beim ersten echten Versuch "check_stun_auth: Cannot find credentials"
-- in /etc/turnserver.conf fehlte `static-auth-secret`, also suchte
coturn die Zugangsdaten in seiner eigenen Datenbank und wies jeden ab.
Und mein eigenes Werkzeug meldete die ganze Zeit gruen:
"Eingetragen, Geheimnis lesbar, Server antwortet." Jedes Wort wahr --
und keins beantwortete die Frage, um die es geht. Eine STUN-Bindung
fragt "bist du da?", eine Zuteilung fragt "traegst du meinen Anruf?".
`tools/turn-sprache.mjs` (neu) versucht jetzt eine ECHTE Zuteilung und
schickt ein Paket darueber. `turn-einrichten.mjs` benutzt sie und hat
drei Ausgaenge statt zwei: traegt / traegt nicht / konnte nicht
nachsehen. Nach Filipes Reparatur auf dem Server gemessen: Zuteilung
auf Port 49199, Paket angekommen -- von Luxemburg durch Deutschland.
2. UNSERE SEITEN -- die erste Kachel, die HINAUSFUEHRT.
Website und VanVans Shop, mit dem Rabattcode DOGI10. Der Code wurde
nachgesehen, nicht abgeschrieben: partnercodes.json, 10 Prozent,
aktiv, "zum weitergeben an Community" -- und giltAufSale: false,
weshalb der Satz zu reduzierten Artikeln danebensteht. Der zweite Code
dort ist als "nur fuer Filipe persoenlich" vermerkt und steht nirgends.
Auch Name und Beschreibung des Shops stammen von der Seite selbst.
Meine erste Fassung hiess "Van's DIY Bastelbedarf" und nannte "Perlen,
Anhaenger, Werkzeug" -- ausgedacht und falsch. Er heisst mit "&" und
verkauft Haekelwerke, Plushies, Schmuck.
Der Ton der Kachel wurde GESUCHT, nicht gewaehlt: sieben geratene
Blautoene schafften den noetigen Abstand nicht, also 372 600
Kombinationen abgesucht. #087ce7, Abstand 0.310, Kontrast 4.51:1.
3. DIE GANZE VIDEO-KARTE KLICKT -- "egal wo man drauf drückt".
Und hier steckte der lehrreiche Fehler: Zuerst stand der Klick-Block
unten vor `return k`. Diese Funktion hat DREI Rueckgabepunkte, und der
erste lautet `if (!darfEintragen()) { ...; return k; }` -- also genau
fuer die Mitglieder, fuer die Filipe es wollte. Beim Team ging es, bei
der Community nicht. Jetzt haengt er dort, wo `videoWeg` entsteht.
Nicht klickbar bleiben Karten ohne Video und solche, deren Video bei
TikTok geloescht wurde -- sonst fuehrt der Klick auf eine Fehlerseite,
und wir sehen kaputt aus.
GEMESSEN: pruef-wege-nach-draussen (neu) 63 Pruefungen, 0 Fehler, auf
1400 und 412 px. Mit Gegenproben: der Kopierknopf oeffnet nichts, der
eigene Knopf wirkt genau einmal, auf einer Karte ohne Video passiert
nichts. pruef-community-sicht 10/0 auf jetzt 11 Seiten, 0 tote Wege.
Nebenbei: Der Pfeil klebte bei langen Untertiteln am Text (auf dem
Bildschirmfoto gesehen). 0.45rem Abstand.
Co-Authored-By: Claude Opus 5 <[email protected]>
143 lines
5.8 KiB
HTML
143 lines
5.8 KiB
HTML
<!doctype html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||
<title>Wer sieht was · Creator Workspace</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=202609190116" />
|
||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609190116" />
|
||
<link rel="stylesheet" href="assets/css/gate.css?v=202609190116" />
|
||
<link rel="stylesheet" href="assets/css/start.css?v=202609190116" />
|
||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609190116" />
|
||
<link rel="stylesheet" href="assets/css/treff.css?v=202609190116" />
|
||
<link rel="stylesheet" href="assets/css/module.css?v=202609190116" />
|
||
<link rel="stylesheet" href="assets/css/haus.css?v=202609190116" />
|
||
</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 Workspace</a> · Wer sieht was</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">
|
||
|
||
<section class="kopf-zeile">
|
||
<div>
|
||
<p class="marke">Rechte · nur für dich</p>
|
||
<h1 class="titel">Wer sieht was</h1>
|
||
<p class="unterzeile">
|
||
Nicht aufgeschrieben, sondern ausgerechnet – aus derselben Tafel,
|
||
aus der die Schranke ihre Entscheidung holt. Und umstellbar.
|
||
</p>
|
||
</div>
|
||
</section>
|
||
|
||
<p class="fehler" id="fehler" role="alert" aria-live="polite" hidden></p>
|
||
|
||
<!-- Die Leiste sagt, ob etwas von Hand gesetzt ist, und ist der Weg
|
||
zurück. Sie steht OBEN und nicht unter der Tabelle: Wer etwas
|
||
verstellt hat und es zurückdrehen will, sucht nicht erst
|
||
zweihundert Zeilen lang. -->
|
||
<div class="rechte-leiste" id="leiste" hidden></div>
|
||
|
||
<!-- ==================================================================
|
||
WARUM DIESE SEITE ÜBERHAUPT EXISTIERT
|
||
|
||
Filipe: „egal welche Rolle oder Person hinzugefügt wird, soll
|
||
immer nur das sehen, was ich erlaube."
|
||
|
||
Dazu gehört, dass er es NACHSEHEN kann. Eine Regel, die man nur
|
||
glauben kann, ist eine Zusage; eine, die man ansehen kann, ist
|
||
eine Auskunft.
|
||
|
||
Und sie ist eine Gegenprobe: Wenn hier bei einer Rolle plötzlich
|
||
zwanzig Punkte stehen, wo gestern drei waren, sieht man das in
|
||
einer Sekunde. In 74 Rollenabfragen über 20 Module sieht man es
|
||
nie.
|
||
============================================================== -->
|
||
|
||
<section class="treff-abschnitt">
|
||
<h2 class="treff-abschnitt__titel">Wie viele Seiten je Rolle</h2>
|
||
<div class="treff-abschnitt__inhalt">
|
||
<p>
|
||
Das ist die Zahl, um die es geht. Eine neue Rolle startet bei
|
||
<strong>null</strong> – sie bekommt nichts, bis es jemand einträgt.
|
||
</p>
|
||
</div>
|
||
<ul class="rechte-zahlen" id="zahlen">
|
||
<li class="leise">wird geladen …</li>
|
||
</ul>
|
||
</section>
|
||
|
||
<section class="treff-abschnitt">
|
||
<h2 class="treff-abschnitt__titel">Die ganze Tafel</h2>
|
||
<div class="treff-abschnitt__inhalt">
|
||
<p>
|
||
Ein Punkt heißt: diese Rolle darf diese Seite öffnen. Leer heißt
|
||
nein – und zwar auch dann, wenn niemand je darüber nachgedacht hat.
|
||
Das ist der Unterschied zu vorher.
|
||
</p>
|
||
<p>
|
||
<strong>Ein Klick stellt um</strong>, und er wird sofort gespeichert –
|
||
kein Knopf am Ende, an dem eine halbe Änderung verlorengeht. Ein
|
||
heller Rahmen heißt: <em>dieses Feld ist von Hand gesetzt</em> und
|
||
weicht vom Grundstand im Code ab.
|
||
</p>
|
||
<p class="leise">
|
||
Drei Felder sind fest: Du kannst dir selbst die Rechte-, die Personen-
|
||
und die Startseite nicht wegnehmen – sonst käme niemand mehr an die
|
||
Rechte, an die Zugänge oder auf die Startseite.
|
||
</p>
|
||
</div>
|
||
<div class="rechte-tafel" id="tafel" aria-busy="true">
|
||
<p class="leise">wird geladen …</p>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="treff-abschnitt">
|
||
<h2 class="treff-abschnitt__titel">Ohne Anmeldung</h2>
|
||
<div class="treff-abschnitt__inhalt">
|
||
<p>
|
||
Diese Seiten sind offen – man kann sich schlecht anmelden, wenn die
|
||
Anmeldeseite eine Anmeldung verlangt. Jede andere Seite ist zu.
|
||
</p>
|
||
<ul class="regel-liste" id="offen"><li class="leise">wird geladen …</li></ul>
|
||
</div>
|
||
</section>
|
||
|
||
</main>
|
||
|
||
<!-- WER kopf.js LAEDT, MUSS AUCH wahl.js LADEN (Regel seit 07.09.2026).
|
||
|
||
Der Umschalter "Meine Sicht" in der Kopfleiste ist ein selbst
|
||
gebautes Bedienelement; dahinter liegt ein unsichtbares Systemfeld
|
||
fuer Vorleseprogramme. Ohne wahl.js faellt kopf.js auf dieses Feld
|
||
zurueck -- ein grauer Kasten von 92 x 19 Pixeln mit weisser
|
||
Schrift, mitten in einer dunklen Leiste.
|
||
|
||
Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen
|
||
Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen,
|
||
die seit dem 07.09. jede Seite danach absucht. -->
|
||
<script src="assets/js/wahl.js?v=202609190116" defer></script>
|
||
<script src="assets/js/bereiche.js?v=202609190116" defer></script>
|
||
<script src="assets/js/kopf.js?v=202609190116" defer></script>
|
||
<script src="assets/js/rechte.js?v=202609190116" defer></script>
|
||
</body>
|
||
</html>
|