WAS DAS BILD GEZEIGT HAT
Beim Durchsehen der Einzelbilder einer Videoaufnahme -- vier
Sekunden lang, gleich nach dem Laden:
---- SPICY MEDIA ----
Zentrale
WIRD GELADEN
Und zwar auf der Startseite eines COMMUNITY-MITGLIEDS.
In start.html steht die Vorgabe des Agenturhauses. Das Teamhaus
bekommt eigene Worte ("Team Dogi" / "Die IrrenAnstalt"), aber erst
wenn /api/ich geantwortet hat. Bis dahin las jeder Modi und jedes
Community-Mitglied die Marke der Agentur in der groessten Schrift
der Seite. Auf einem langsamen Telefon sekundenlang, bei jedem
Aufruf.
Das ist kein Schoenheitsfehler. Spicy Media ist der Betrieb hinter
der Agentur, und seit dem 24.09. sind die beiden Haeuser getrennt.
Genau diese Zeile hat die Trennung bei jedem Seitenaufruf kurz
aufgehoben -- und niemandem ist es aufgefallen, weil die Seite
DANACH richtig aussah. Wer hinsieht, sieht den Endzustand.
GELOEST OHNE SPRUNG
`data-wartet` macht die zwei Zeilen durchsichtig, nicht leer -- der
Platz bleibt stehen, es ruckt nichts. start.js nimmt das Merkmal
weg, sobald es weiss, in welchem Haus es ist; gemessen dauert das
351 ms.
Eine Notbremse in der Seite nimmt es nach vier Sekunden notfalls
selbst weg. Ohne sie waere die groesste Schrift der Seite fuer immer
unsichtbar, falls start.js gar nicht erst laeuft -- und "unsichtbar"
waere schlimmer als das falsche Wort.
DIE PRUEFUNG DAZU -- UND ZWEI MESSFEHLER DARIN
pruef-start-ansicht misst ab jetzt beide Richtungen: nach dem Laden
muessen beide Zeilen sichtbar sein, mit gesetztem `data-wartet`
unsichtbar. Ohne die zweite Haelfte koennte die Regel spurlos
verschwinden, ohne dass etwas rot wird.
Die Pruefung selbst hat mich zweimal getaeuscht, und beide Male
lehrreich:
1. Sie mass 900 ms nach der Anmeldung -- eine feste Pause. Ob
/api/ich in dieser Zeit geantwortet hat, haengt vom Rechner ab.
Dieselbe Pruefung war einmal gruen und einmal rot, bei
unveraendertem Code. Gewartet wird jetzt auf das Merkmal selbst,
und wie lange es gedauert hat, steht im Meldetext.
2. `opacity` hat einen Uebergang von 180 ms, und getComputedStyle
liefert waehrenddessen den laufenden Zwischenwert statt des
Ziels. Erst meldete die Gegenprobe "nicht verdeckt", dann die
Messung davor "nicht sichtbar" -- beide Male war die Regel in
Ordnung und nur die Animation im Weg. Fuer die Messung wird der
Uebergang jetzt abgeschaltet.
DAS VIDEOWERKZEUG
server/tiktok-videos.mjs nimmt die vier Clips auf. Sechs Aenderungen,
jede aus einem Einzelbild:
- DIE NACHTRUHE HAT DIE VORBEREITUNG MITBLOCKIERT. Video 2 zeigte
einen leeren Chat. Gemeldet wurde "gefuellt", weil nur geprueft
war, dass es den RAUM gibt. Jetzt werden die Nachrichten
zurueckgelesen und gezaehlt; unter acht wird nicht gefilmt.
- DOGI-MEDIA WAR LEER -- ein Video ueber Material zum Mitnehmen,
und auf dem Bildschirm stand "Gerade ist nichts frei". Sechs
echte Marken-Bilder werden eingestellt, zwei davon schon
genommen, damit die Aussage des Films auch im Bild steht.
- "WILL ICH AUCH - 0" an jedem Wunsch, waehrend der Untertitel
sagte "die anderen sehen, wer mitwill". Ein Versprechen, das das
Bild gleich wieder einkassiert, ist schlimmer als ein leeres
Brett. Jetzt wird ueber die echte Route gestimmt, absteigend
6/5/4 -- unter zehn Stimmen wird nicht gefilmt.
- DER WAECHTER FUER VIDEO 2 verglich zwei feste Zahlen
(TREFF_NACHT_AB === "0"). Das ist die Abschrift einer Einstellung
und keine Frage nach dem Zustand: Jedes andere Fenster, das den
Chat genauso schlafen legt, wurde abgewiesen. Gefragt wird jetzt
`istNachtruhe()` -- dieselbe Funktion, die auch die Seite
befragt. Mit 12 bis 6 steht im Bild "Ab 06:00 Uhr geht es
weiter" statt "Ab 24:00 Uhr", und das ergibt fuer einen
Zuschauer ueberhaupt erst Sinn.
- ROLLEN IM KASTEN STATT IN DER SEITE. `window.scrollBy` bewegt
die Seite; im Chat rollt aber der Verlauf in seinem eigenen
Kasten. Drei Bilder hintereinander sahen gleich aus.
- EINE FESTE PIXELZAHL TRAF DEN FALSCHEN BLOCK. Video 4 filmte
den Katalog der fertigen Vorschlaege statt der Wuensche, weil
"480 nach unten" zufaellig dort endete. `b.zu(wahl)` misst, wo
das Element steht.
Dazu: Umlaute in allen Bildtexten ("Tueren" stand im Video), der
Abspann bleibt am Ende stehen (vorher sah man die letzte Sekunde
wieder die App), und die Dateigroessen im Regal sind echt.
KEIN LINK, UND ZWAR GEMESSEN
Nach jedem Seitenwechsel wird der SICHTBARE Text nach Adressen
abgesucht -- dogfather-universe, https://, www., jeder Domainname.
Bei einem Fund bricht die Aufnahme ab, und es wird keine Datei
geschrieben. Das mit dem Auge zu pruefen waere genau die Sorte
Kontrolle, die beim vierten Video nachlaesst.
Mit PROBE_LECK=ja schiebt die Suche selbst eine Adresse ins Bild --
nachgefahren, Rueckgabewert 2. Eine Suche, die nur "nichts gefunden"
sagen kann, hat nichts bewiesen.
Gemessen: pruef-start-ansicht 160/0 (vorher 157), pruef-buehne
242/0, pruef-handy 177/0, pruef-kachelraster 24/0,
pruef-css-klassen 33/0.
160 lines
7.0 KiB
HTML
160 lines
7.0 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>Vertraulich melden · Das Rudel</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=202609271833" />
|
||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609271833" />
|
||
<link rel="stylesheet" href="assets/css/gate.css?v=202609271833" />
|
||
<link rel="stylesheet" href="assets/css/start.css?v=202609271833" />
|
||
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609271833" />
|
||
<link rel="stylesheet" href="assets/css/module.css?v=202609271833" />
|
||
<link rel="stylesheet" href="assets/css/haus.css?v=202609271833" />
|
||
</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">Das Rudel</a> · Vertraulich</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">Das Rudel · Vertraulich</p>
|
||
<h1 class="titel" id="seiten-titel">Vertraulich melden</h1>
|
||
<p class="unterzeile" id="seiten-unter">
|
||
Wenn etwas nicht stimmt – hier schreibst du direkt an DogFather.
|
||
</p>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ==================================================================
|
||
WARUM HIER "VERTRAULICH" STEHT UND NICHT "ANONYM"
|
||
|
||
Filipe hat es "anonym" genannt, und gegenüber den anderen
|
||
Mitgliedern ist es das auch: Niemand sonst sieht diese Meldungen,
|
||
kein Modi, kein anderes Mitglied.
|
||
|
||
Aber DogFather und die rechte Hand sehen den Namen — so ist es
|
||
bestellt, und es ist auch richtig so: Ohne Namen kann man
|
||
niemandem helfen. Wer glaubt, er schreibe unerkannt, schreibt
|
||
anders und fühlt sich hinterher getäuscht. Deshalb steht der
|
||
Satz oben im Formular, bevor jemand tippt.
|
||
============================================================== -->
|
||
|
||
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
||
|
||
<!-- Der Hinweis, wer mitliest. Steht VOR allem anderen. -->
|
||
<div class="vertrauen" id="vertrauen">
|
||
<span class="vertrauen__zeichen" aria-hidden="true">
|
||
<svg viewBox="0 0 24 24">
|
||
<path d="M12 3.2 5 6v5.6c0 4.3 2.9 7.6 7 9.2 4.1-1.6 7-4.9 7-9.2V6z" />
|
||
<path d="M9.2 12.2l2 2 3.6-4" />
|
||
</svg>
|
||
</span>
|
||
<p class="vertrauen__text" id="vertrauen-text">
|
||
<strong>DogFather und die rechte Hand lesen mit – sonst niemand.</strong>
|
||
Sie sehen auch deinen Namen. Kein anderes Mitglied und niemand aus
|
||
der Moderation bekommt diese Meldungen zu Gesicht.
|
||
</p>
|
||
</div>
|
||
|
||
<!-- ---- NEU MELDEN (nur für Mitglieder) ------------------------- -->
|
||
<section class="hilfe-block" id="neu-block" hidden>
|
||
<div class="hilfe-block__kopf">
|
||
<h2 class="hilfe-block__titel">Etwas melden</h2>
|
||
<button type="button" class="knopf knopf--klein" id="neu-auf">Neue Meldung</button>
|
||
</div>
|
||
|
||
<form class="hilfe-form" id="neu-form" hidden>
|
||
<label class="feld">
|
||
<span class="feld__schild">Worum geht es? <span class="feld__pflicht">kurz</span></span>
|
||
<input type="text" id="neu-betreff" maxlength="120" autocomplete="off"
|
||
placeholder="z. B. Jemand geht mich im Chat immer wieder an" />
|
||
</label>
|
||
<label class="feld">
|
||
<span class="feld__schild">Was ist passiert?</span>
|
||
<textarea id="neu-text" rows="6" maxlength="4000"
|
||
placeholder="Schreib so viel, wie du willst. Wann war es, wer war dabei, was ist passiert?"></textarea>
|
||
</label>
|
||
<p class="hilfe-form__hinweis">
|
||
Nach dem Absenden wartest du auf eine Antwort. Erst wenn eine da
|
||
ist, kannst du wieder schreiben – so geht nichts durcheinander.
|
||
</p>
|
||
<div class="hilfe-form__fuss">
|
||
<button type="submit" class="knopf" id="neu-senden">Meldung abschicken</button>
|
||
<button type="button" class="knopf knopf--still" id="neu-zu">Abbrechen</button>
|
||
<span class="hilfe-form__stand" id="neu-stand" role="status" aria-live="polite"></span>
|
||
</div>
|
||
</form>
|
||
</section>
|
||
|
||
<!-- ---- DIE LISTE ----------------------------------------------- -->
|
||
<section class="hilfe-block">
|
||
<div class="hilfe-block__kopf">
|
||
<h2 class="hilfe-block__titel" id="listen-titel">Deine Meldungen</h2>
|
||
<span class="hilfe-block__zahl" id="listen-zahl"></span>
|
||
</div>
|
||
<div id="liste" aria-busy="true"><p class="leise">wird geladen …</p></div>
|
||
</section>
|
||
|
||
<!-- ---- EIN FALL ------------------------------------------------- -->
|
||
<section class="hilfe-block" id="fall-block" hidden>
|
||
<div class="hilfe-block__kopf">
|
||
<h2 class="hilfe-block__titel" id="fall-titel">…</h2>
|
||
<button type="button" class="knopf knopf--klein knopf--still" id="fall-zurueck">Zur Liste</button>
|
||
</div>
|
||
<p class="fall-kopf" id="fall-kopf"></p>
|
||
<div id="verlauf"></div>
|
||
|
||
<form class="hilfe-form hilfe-form--antwort" id="antwort-form" hidden>
|
||
<label class="feld">
|
||
<span class="feld__schild" id="antwort-schild">Deine Antwort</span>
|
||
<textarea id="antwort-text" rows="4" maxlength="4000"></textarea>
|
||
</label>
|
||
<div class="hilfe-form__fuss">
|
||
<button type="submit" class="knopf" id="antwort-senden">Absenden</button>
|
||
<button type="button" class="knopf knopf--still" id="fall-schliessen" hidden>Fall abschließen</button>
|
||
<span class="hilfe-form__stand" id="antwort-stand" role="status" aria-live="polite"></span>
|
||
</div>
|
||
</form>
|
||
<!-- EIN <div>, KEIN <p> (20.09.2026). Seit dem Abschluss drei
|
||
Saetze enthaelt, stehen hier <p>-Elemente darin -- und ein
|
||
<p> in einem <p> ist ungueltig: Der Browser schliesst das
|
||
aeussere selbst und schiebt den Rest daneben. Das faellt
|
||
erst am Bildschirm auf, nicht im Quelltext. -->
|
||
<div class="fall-warten" id="fall-warten" hidden></div>
|
||
</section>
|
||
|
||
</main>
|
||
|
||
<script src="assets/js/meldung.js?v=202609271833" defer></script>
|
||
<script src="assets/js/nachfrage.js?v=202609271833" defer></script>
|
||
|
||
<script src="assets/js/wahl.js?v=202609271833" defer></script>
|
||
<script src="assets/js/bereiche.js?v=202609271833" defer></script>
|
||
<script src="assets/js/installieren.js?v=202609271833" defer></script>
|
||
<script src="assets/js/kopf.js?v=202609271833" defer></script>
|
||
<script src="assets/js/glocke.js?v=202609271833" defer></script>
|
||
<script src="assets/js/hilfe.js?v=202609271833" defer></script>
|
||
</body>
|
||
</html>
|