Die zweite Sitzung hat in den Praesentationen des Vaults 83 Stellen
gefunden — und damit auf Loecher in MEINER Wache gezeigt. Ich habe
sie nachgemessen, alle drei waren echt.
LOCH 1 — SIE SAH NUR `server/workspace-*.js`
Also ausgerechnet nicht `workspace.js`, die groesste Datei des
Hauses. Der weitere Filter fand dort sofort drei Stellen:
workspace.js:3404 Kanal „Chat-Moderation" (Protokoll)
workspace.js:3422 „${titel}" -> ${haus} (Protokoll)
workspace.js:3304 „${… || "ohne Titel"}" (siehe Loch 3)
Das ist heute der DRITTE Fall von „die Wache kennt nur die halbe
Menge" — nach pruef-struktur (sah nur die Pruefdateien, nicht die
Anwendung) und pruef-fingermass (sah keine variable Breite).
LOCH 2 — IHR AUSDRUCK GILT JE ZEILE
Ein `„`, das erst in der naechsten Zeile mit einem geraden `"`
schliesst, fiel durch. Gemessen: drei echte Faelle, zwei davon
sichtbarer Seitentext.
workspace/leistung.html „nicht / zugeordnet"
workspace/leistung.html „Backstage-Tabelle / einfuegen"
workspace/assets/js/ampel.js „noch ' + 'verbessern"
Beim letzten laeuft das Zitat ueber eine Zeichenketten-Verkettung.
Neue Regel ohne Fehlalarme: erst alle RICHTIG geschlossenen Paare
entfernen (auch mehrzeilig), dann die einzeilig falschen (die meldet
die alte Regel). Was danach noch ein `„` hat und binnen drei Zeilen
ein gerades `"`, ist ein Fund. Ausgenommen bleibt das Zeichen ALS
WERT — in `content: "„";` und in den Sprachtabellen ist das `„` der
Inhalt und das `"` die Begrenzung.
LOCH 3 — EINE AUSNAHME, DIE EINEN FUND VERSCHLUCKT HAT
Gefunden durch die ZAHL, nicht durch den Blick: Der weitere Filter
liess die Ausnahmen von 12 auf 13 steigen. Die dreizehnte war
`… „${zeile[titelSpalte] || "ohne Titel"}"`
Der Ausdruck blieb am `"` von `"ohne Titel"` haengen; als Inhalt kam
`${zeile[titelSpalte] || ` heraus, das endet auf ein Leerzeichen,
und damit galt „der Satz geht in der naechsten Zeile weiter". Das
echte Schlusszeichen stand hinter dem `}` und war gerade.
Dass die Ausnahmen gezaehlt UND genannt werden, hat ihn gefunden.
Genau dafuer steht die Zeile dort.
Behoben an der Wurzel: Anfuehrungszeichen innerhalb einer Einsetzung
`${…}` werden vorher durch X ersetzt, bei gleicher Laenge und
gleichen Zeilenumbruechen. Das nimmt einer ganzen Sorte
Fehlklassifizierung die Grundlage — die Ausnahmen fielen danach von
13 auf 11.
UND EIN VIERTES, BEIM MESSEN AUFGEFALLEN
`„Van-Van”` in assets/js/data-modis.js schliesst mit U+201D, dem
ENGLISCHEN Zeichen. Zweimal, beide Male in einer DEUTSCHEN Zeile
(`de:` und `"de-CH":`) — nicht einmal eine Uebersetzung, in der es
richtig waere. Eigene Regel dafuer, die keine Ausnahme braucht: Wer
mit `„` oeffnet, schliesst deutsch; in fremdsprachigen Zeilen steht
gar kein `„` am Anfang.
DIE AUSNAHMEZAHL IST JETZT STRENG. Sie stand auf „hoechstens 12" —
damit waere der Anstieg auf 13 nicht aufgefallen. Jetzt genau 11,
wie bei den Grundlinien in pruef-fingermass.
GEPRUEFT: pruef-struktur 68 -> 75 Pruefungen, 0 Fehler. Dazu
leistung-optik 59/0, ampel 47/0, treff 85/0, modi-verborgen 87/0 —
die Seiten, deren Text ich angefasst habe. Steuerzeichen: 830
Dateien, keines. Beide Stempel gesetzt.
Sechs echte Stellen berichtigt, vier neue Gegenproben.
Co-Authored-By: Claude Opus 5 <[email protected]>
117 lines
6.8 KiB
HTML
117 lines
6.8 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de" data-theme="hasidog">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>Stimmen über DogFather — DOGFATHER UNIVERSE</title>
|
|
<meta name="description" content="Was die Community und das Team über DogFather sagen." />
|
|
<link rel="icon" type="image/png" href="/assets/img/app-symbole/universe-32.png?v=202610011927" />
|
|
<link rel="apple-touch-icon" href="/assets/img/app-symbole/universe-180.png?v=202610011927" />
|
|
<link rel="manifest" href="/manifest.json" />
|
|
<meta name="theme-color" content="#065f76" />
|
|
<meta property="og:type" content="website" />
|
|
<meta property="og:site_name" content="DOGFATHER UNIVERSE" />
|
|
<meta property="og:title" content="Stimmen über DogFather — DOGFATHER UNIVERSE" />
|
|
<meta property="og:description" content="Was die Community und das Team über DogFather sagen." />
|
|
<meta property="og:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
|
<meta property="og:url" content="https://dogfather-universe.com/stimmen.html" />
|
|
<meta name="twitter:card" content="summary_large_image" />
|
|
<meta name="twitter:title" content="Stimmen über DogFather — DOGFATHER UNIVERSE" />
|
|
<meta name="twitter:description" content="Was die Community und das Team über DogFather sagen." />
|
|
<meta name="twitter:image" content="https://dogfather-universe.com/assets/img/og-cover.jpg" />
|
|
|
|
<link rel="stylesheet" href="assets/css/main.css?v=202610011927" />
|
|
<link rel="stylesheet" href="assets/css/theme-dogfather.css?v=202610011927" />
|
|
<link rel="stylesheet" href="assets/css/theme-hasidog.css?v=202610011927" />
|
|
<link rel="stylesheet" href="assets/css/theme-spicymedia.css?v=202610011927" />
|
|
</head>
|
|
<body class="mit-hintergrund" style="--page-bg:url('/assets/img/bg-stimmen.jpg?v=202610011927');--page-bg-mobile:url('/assets/img/bg-stimmen-mobile.jpg?v=202610011927');">
|
|
<div id="site-header"></div>
|
|
|
|
<main>
|
|
<section class="hero page-bg">
|
|
<div class="hero-banner"><img src="/assets/img/bg-stimmen.jpg?v=202610011927" alt="" loading="eager" /></div>
|
|
<div class="container">
|
|
<span class="eyebrow" data-i18n="st_eyebrow">Welt 2 — HasiDog</span>
|
|
<h1 data-i18n="st_h1">Stimmen über DogFather</h1>
|
|
<p class="lead worlds" data-i18n="st_lead">Was Community und Team sagen.</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ===== Eigene Stimme einreichen (20.08.2026, Nutzer-Wunsch: "eine
|
|
richtig geile kachel ... wo die leute mit namen und tiktok namen
|
|
mir eine nachricht schreiben können", "das wird mega persoenlich
|
|
zu den fans"). Landet in der Verwaltung, wird NIE automatisch
|
|
veroeffentlicht -- siehe server-internal/routes/testimonials.js. -->
|
|
<section class="section-tight">
|
|
<div class="container">
|
|
<div class="stimmen-einreichen-kachel" id="stimmen-formular-box">
|
|
<span class="stimmen-einreichen-glanz" aria-hidden="true"></span>
|
|
<div class="stimmen-einreichen-kopf">
|
|
<span class="stimmen-einreichen-herz" aria-hidden="true">💌</span>
|
|
<h2 data-i18n="st_form_titel">Deine Stimme zählt</h2>
|
|
<p class="small" data-i18n="st_form_text">
|
|
Was bedeutet dir Team Dogi? Schreib uns deine Geschichte — mit etwas Glück liest DogFather sie
|
|
persönlich und stellt sie hier auf die Seite.
|
|
</p>
|
|
</div>
|
|
<form id="stimmen-formular">
|
|
<div class="field">
|
|
<label for="st-name" data-i18n="st_form_name_label">Dein Name</label>
|
|
<input type="text" id="st-name" maxlength="60" required />
|
|
</div>
|
|
<div class="field">
|
|
<label for="st-tiktok" data-i18n="st_form_tiktok_label">TikTok-Name (optional)</label>
|
|
<input type="text" id="st-tiktok" maxlength="40" placeholder="@dein-name" />
|
|
</div>
|
|
<div class="field">
|
|
<label for="st-nachricht" data-i18n="st_form_nachricht_label">Deine Nachricht</label>
|
|
<textarea id="st-nachricht" maxlength="500" rows="4" required data-i18n-attr="placeholder:st_form_nachricht_placeholder" placeholder="Erzähl uns, was dir Team Dogi bedeutet …"></textarea>
|
|
</div>
|
|
<!-- Profilbild-Auswahl (21.08.2026, Nutzer-Wunsch: "ich soll auch
|
|
paar geile bilder zum aussuchen haben als profilbild falls die
|
|
leute kein bild mit schicken, das soll denen auch als
|
|
möglichkeit gegeben sein"). Die festen Kacheln kommen aus
|
|
data-stimmen-avatare.js, damit Seite und Verwaltung dieselbe
|
|
Auswahl zeigen.
|
|
Dazu eine "eigenes Bild"-Kachel mit echtem Datei-Upload (auch
|
|
21.08.2026 ergänzt; ein früherer Kommentar hier behauptete noch
|
|
"kein Upload" -- das stimmte nicht mehr und ist am 28.08.2026
|
|
richtiggestellt). Der Upload ist mehrfach abgesichert: nur
|
|
Bildtypen, max. 5 MB, Bremse pro IP gegen Massen-Uploads, vor
|
|
dem Absenden im Browser auf 512px verkleinert (bild-vorbereiten.js),
|
|
und NICHTS wird veröffentlicht, bevor Dogi die Stimme freigibt --
|
|
jede Einreichung landet zuerst in der Warteschlange. -->
|
|
<div class="field">
|
|
<span class="stimmen-avatar-titel" data-i18n="st_form_avatar_label">Dein Profilbild (optional)</span>
|
|
<p class="small muted stimmen-avatar-hinweis" data-i18n="st_form_avatar_hinweis">Ohne Auswahl erscheint einfach der erste Buchstabe deines Namens.</p>
|
|
<div class="stimmen-avatar-wahl" id="stimmen-avatar-wahl" role="radiogroup" aria-labelledby="stimmen-avatar-titel"></div>
|
|
</div>
|
|
<button type="submit" class="btn btn-primary" style="width:100%;" data-i18n="st_form_absenden">💙 Nachricht einreichen</button>
|
|
</form>
|
|
<p class="stimmen-erfolg" id="stimmen-erfolg" data-i18n="st_form_erfolg">Danke dir! Deine Nachricht wurde eingereicht und wird von Dogi persönlich geprüft. 🩵</p>
|
|
<p class="stimmen-fehler" id="stimmen-fehler"></p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ===== Echte, freigegebene Stimmen -- bleibt komplett unsichtbar, bis
|
|
mindestens eine Nachricht in der Verwaltung freigegeben wurde (kein
|
|
Platzhaltertext mehr). ===== -->
|
|
<section class="section-tight" id="stimmen-echte-root" hidden>
|
|
<div class="container">
|
|
<h2 class="text-center" data-i18n="st_echte_titel">Das sagt die Community</h2>
|
|
<div class="grid grid-3" id="stimmen-echte-grid" style="margin-top:1.6rem;"></div>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
|
|
<div id="site-footer"></div>
|
|
<script src="assets/js/data-stimmen-avatare.js?v=202610011927"></script>
|
|
<script src="assets/js/i18n-stimmen.js?v=202610011927"></script>
|
|
<script src="assets/js/main.js?v=202610011927"></script>
|
|
<script src="assets/js/bild-vorbereiten.js?v=202610011927"></script>
|
|
<script src="assets/js/stimmen.js?v=202610011927"></script>
|
|
</body>
|
|
</html>
|