# 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.