# DOGFATHER UNIVERSE — Arbeitsanweisungen
Lies zuerst die ausführliche Projekt-Doku im Vault: `DogFather Website.md` und
`DogFather Website - Offene Punkte.md` (falls von dort aus zugreifbar). Dieses File ist die
kompakte, technische Checkliste für direkte Arbeit in diesem Ordner.
## Perfektions-Anspruch (ausdrücklicher Wunsch, 02.08.2026)
Nicht nur das explizit Genannte umsetzen, sondern mitdenken und proaktiv vervollständigen —
auch das, was der Nutzer vergisst zu erwähnen, aber offensichtlich zur Aufgabe gehört.
Kontinuierlich verbessern, nicht nur einmalig abhaken. Bei jedem "Tagescheck" auch die eigene
zuletzt geleistete Arbeit fachlich re-auditieren, nicht nur Uptime prüfen.
## Vor jeder neuen Aufgabe kurz durchgehen
1. **i18n ist Pflicht bei jedem sichtbaren Text**: alle 5 Sprachen sofort mitliefern — de,
de-CH (ECHTER Schweizerdeutscher Dialekt, nicht nur ß→ss), en, fr, pt. Gilt auch für Texte,
die nur per JS gesetzt werden (`window.dogiUebersetzen()` / `window.dogiFeld()` in
`assets/js/main.js` nutzen), nicht nur `data-i18n`-Attribute.
- **Bekannter Bug-Klassiker**: `
` in Karten-Grids ohne `data-i18n` (nur `
` darunter
übersetzt) → gemischtsprachige Anzeige. Vor Abschluss IMMER:
`grep -noP ']*>[^<]*' .html | grep -v data-i18n` — jeden Treffer
bewusst freigeben (Eigenname/dynamisch `${...}`) oder fixen.
2. **Validieren vor jedem Deploy**: `node --check` je geänderter `.js`, plus Key/Sprachen-Check:
```bash
node -e "
const fs=require('fs');
const html=fs.readFileSync('.html','utf8');
const keysInHtml=[...new Set([...html.matchAll(/data-i18n=\"([^\"]+)\"/g)].map(m=>m[1]))];
global.window = {};
eval(fs.readFileSync('assets/js/i18n-.js','utf8'));
const dict = window.I18N_PAGE;
let missingLang=[];
for(const k of keysInHtml){ for(const lang of ['de','de-CH','en','fr','pt']){ if(!dict[k] || !dict[k][lang]) missingLang.push(k+':'+lang); } }
console.log('Keys HTML:', keysInHtml.length, 'Keys dict:', Object.keys(dict).length, 'Fehlende Sprachen:', missingLang);
"
```
Muss `Fehlende Sprachen: []` zeigen. Bei HTML-Edits zusätzlich Tag-Balance prüfen (öffnende
== schließende `div`/`section`/`a`/`p`/`h1-h3`).
3. **Nach jedem Deploy live verifizieren** (nicht nur der "Success"-Meldung von `wrangler`
glauben): headless Chrome via CDP starten, Sprache umschalten, tatsächlichen Text auslesen.
4. **Chrome-Testprozesse NIE mit `taskkill /F /IM chrome.exe`** — killt alle echten Chrome-
Fenster des Nutzers. Immer nur per exakter PID oder `--user-data-dir`-Profilname gezielt
beenden (z.B. `Get-CimInstance Win32_Process -Filter "Name='chrome.exe'" | Where-Object {
$_.CommandLine -match '' } | Stop-Process`).
5. Wenn der Nutzer "Screen"/"screen" sagt, ist immer "Screenshot" gemeint.
6. Nach Verifikation aufräumen: temporäre Dateien/Chrome-Profile entfernen.
7. Nach größeren Batches (viele Seiten parallel via Subagenten): eigenständigen Nachaudit-Sweep
über das GESAMTE Projekt fahren, nicht nur die zuletzt bearbeiteten Dateien — Fehler stecken
erfahrungsgemäß auch in älteren, scheinbar fertigen Seiten (Muster/Konvention entstand erst
später).
8. Commit-Nachrichten immer auf Deutsch, präzise, mit Begründung ("warum", nicht nur "was").
## Projekt-Fakten (Kurzfassung)
- Statisches HTML/CSS/Vanilla-JS, kein Build-Tool, kein Bundler.
- Deploy: `npx wrangler deploy` aus diesem Ordner (Cloudflare Workers Static Assets).
- i18n-Engine in `assets/js/main.js`: `I18N_CORE` (sitewide), `window.I18N_PAGE` (pro Seite aus
`assets/js/i18n-.js`), `t()`/`window.dogiUebersetzen()`/`window.dogiFeld()`.
- Personendaten (Scouts/Modis/Creator) in `assets/js/data-*.js` — role/bio/bioHtml/intro/quote
sind mehrsprachige Objekte `{ de, "de-CH", en, fr, pt }`, aufgelöst über `window.dogiFeld()`.
- Nur Persona-Namen öffentlich (Dogfather/Dogi) — keine echten bürgerlichen Daten ohne
ausdrückliche Freigabe.
- Fotos/Bilder nur nach expliziter Freigabe verwenden, nicht eigenständig in privaten Ordnern
suchen.