SECHS SACHEN, UND KEINE DAVON WAR DAS, WONACH ICH GESUCHT HABE. 1. ZWEI NATIVE prompt() IN teamlage.js -- die letzten im Haus. Sie halten die ganze Seite an, sehen auf jedem Browser anders aus als der Rest und koennen nicht sagen, was BLEIBT, wenn man absagt. Genau das ist dort die Frage, die jemand vor dem Klicken hat. Jetzt derselbe Dialog wie an den 42 anderen Stellen. 2. UND DER GRUND, WARUM SIE NIEMAND GEFUNDEN HAT. pruef-nachfrage suchte mit `(?:^|[^.\w])(confirm|prompt)\s*\(`. Das `[^.\w]` sollte fremde Methoden ausschliessen -- `angebot .prompt()` ist die Installations-Aufforderung des Browsers und kein nativer Dialog. Nur trifft dieser Ausschluss ausgerechnet die HAEUFIGSTE Schreibweise: `window.prompt(` hat einen Punkt davor. Die Pruefung war gruen, waehrend zwei native prompt() dastanden. Genau das Muster, vor dem dieses Haus warnt: eine Pruefung, die laeuft, gruen ist und das Falsche prueft. Die Gegenprobe kennt jetzt beide Schreibweisen -- haette sie das vorher getan, waere es am selben Tag aufgefallen. 3. willkommen.html LUD nachfrage.js NICHT. Gefunden von der geschaerften Pruefung. kopf.js ruft `frageNach(` ohne Absicherung -- auf dieser einen Seite haette ABMELDEN einen Absturz ausgeloest. Die Seite ist vom 21.09., die Luecke also einen Tag alt. 4. ZWEI FEHLALARME IM HANDY-RUNDGANG ABGESTELLT. Er meldete bei JEDEM Lauf dieselben drei Befunde: `button.schnitt bis 481px`, die Rechtetafel `table bis 877px`, `a.k-pille 8x8`. Nachgemessen bei 390 px: Das Dokument ist exakt 390 px breit, NICHTS laeuft ueber -- beide stehen in einem Kasten mit `overflow-x: auto`, und der rollt absichtlich. Die Kalenderpunkte tragen `pointer-events: none`; der Tipp gehoert der Tageszelle. Eine Warnung, die immer kommt, ist keine Warnung mehr (Hausregel vom 03.09.). Beide Regeln sind SCHMAL: nur ausdrueckliches `overflow-x: auto|scroll` (nicht `hidden` -- dort ist der Inhalt wirklich weg), nur ausdrueckliches `pointer-events: none`. Die Gegenprobe hat jetzt vier Faelle statt zwei: zwei, die gemeldet werden MUESSEN, und zwei, die es NICHT duerfen. Eine engere Messung kann auch zu eng sein. 5. DER LETZTE ECHTE BEFUND: 404 BEI JEDEM MODI. Der Rundgang meldete "404 (Not Found)" ohne Adresse -- eine Pruefung, die einen Fehler findet, ihn aber nicht auffindbar macht, kostet mehr Zeit als sie spart. Sie nennt jetzt die Adresse, und damit war es in einer Minute klar: `/workspace/api/werdegang/liste`. Der Code BEHANDELTE den 404 richtig, der Browser protokolliert ihn trotzdem -- derselbe Fall wie am 19.09. bei /anruf/adressen. Jetzt sagt der Server in /api/ich, ob jemand Team Dogi fuehrt. EIGENES FELD, kein Stellvertreter: `darf_verteilen` sieht aehnlich aus, ist aber nicht dasselbe -- ein Manager darf verteilen und fuehrt Team Dogi nicht. Dabei EINE Wartestelle statt zwei: `window.wennIchDaBin()`. `window.__ich` kommt ueber das Netz; zwei Seiten hatten dafuer jeweils ein eigenes setInterval. Zwei Fassungen desselben Wartens altern unterschiedlich. 6. pruef-werdegang MASS AUF DER FALSCHEN ADRESSE. Drei Pruefungen waren dauerhaft rot (`data-ton=null`) -- an einer Seite, die in Ordnung ist. Sie oeffnete `127.0.0.1`, also die Adresse der AGENTUR; dort ist `person.haus` nicht "crew" und die Kachelliste eine andere. Nachgemessen: Alle vier Rollen HABEN die Kachel, sobald das Haus stimmt. Jetzt derselbe https-Vorbau wie in pruef-willkommen und pruef-zuteilung. Beinahe haette ich hier etwas "repariert", das nicht kaputt war: Meine erste Messung rief `bereicheFuer(p, "crew")` auf -- das Haus wird aber aus `person.haus` gelesen, nicht als Argument. Sie sagte "DogFather hat keine Kachel". Eine plausible Herleitung ersetzt keine Messung, und eine falsch aufgesetzte Messung auch nicht. GEMESSEN: pruef-handy-teamdogi 214 Seitenaufrufe, 108.564 Elemente, 4.126 Bedienelemente -- 0 Befunde. Alle vier Rollen, beide Breiten. Zum ersten Mal. pruef-werdegang 103/0 (war 100/3), pruef-nachfrage 51/0 (war 49), pruef-stelle 15/0, pruef-entwicklung 48/0, pruef-start-ansicht 153/0, pruef-wege-nach-draussen 67/0, pruef-tippziele 11/0, pruef-treff 80/0, pruef-willkommen 67/0, pruef-sackgassen 13/0. Co-Authored-By: Claude Opus 5 <[email protected]>
158 lines
6.9 KiB
HTML
158 lines
6.9 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 · Der Treff</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=202609221014" />
|
||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609221014" />
|
||
<link rel="stylesheet" href="assets/css/gate.css?v=202609221014" />
|
||
<link rel="stylesheet" href="assets/css/start.css?v=202609221014" />
|
||
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609221014" />
|
||
<link rel="stylesheet" href="assets/css/module.css?v=202609221014" />
|
||
<link rel="stylesheet" href="assets/css/haus.css?v=202609221014" />
|
||
</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">Der Treff</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">Der Treff · 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=202609221014" defer></script>
|
||
<script src="assets/js/nachfrage.js?v=202609221014" defer></script>
|
||
|
||
<script src="assets/js/wahl.js?v=202609221014" defer></script>
|
||
<script src="assets/js/bereiche.js?v=202609221014" defer></script>
|
||
<script src="assets/js/kopf.js?v=202609221014" defer></script>
|
||
<script src="assets/js/hilfe.js?v=202609221014" defer></script>
|
||
</body>
|
||
</html>
|