Commit Graph
100 Commits
Author SHA1 Message Date
DogFatherGitandClaude Opus 5 4173e43c78 Cache-Busting fuer CSS/JS auf allen Seiten (?v=20260820)
Zusammen mit dem no-cache-Header-Fix in server/index.js: Cloudflare (die
Seite laeuft hinter einem orange-cloud-Proxy) liefert fuer .css/.js einen
eigenen festen Standard-Cache (Browser Cache TTL 4 Std) aus, UNABHAENGIG
vom Origin-Cache-Control -- der no-cache-Header allein reichte deshalb
nicht (per curl bestaetigt: main.css zeigte weiterhin max-age=14400 direkt
nach dem Deploy). Robuste, von Cloudflare-Zoneneinstellungen unabhaengige
Loesung: jede lokale CSS/JS-Referenz auf allen 34 Seiten bekommt einen
Versions-Query-String (?v=20260820) -- fuer Browser/CDN ist das eine neue
URL, alte gecachte Kopien werden dadurch nie mehr faelschlich weiterverwendet.

WICHTIG fuer kuenftige Aenderungen an main.css/main.js: das Datum in ?v=
muss bei der naechsten inhaltlichen Aenderung an einer dieser Dateien
wieder hochgezaehlt werden, sonst greift der Cache-Bust nicht erneut.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 19:26:11 +02:00
DogFatherGitandClaude Opus 5 6dad6a5af5 Fix: Deploys blieben bei Besuchern bis zu 4 Std im Browser-Cache haengen
Nutzer-Report: sah den Nav-Fix und die neue installierbare Verwaltungsseite
trotz erfolgreichem Deploy nicht. Ursache: Express schickt standardmaessig
KEIN Cache-Control mit -- da die Seite hinter Cloudflare (orange-cloud)
liegt, sprang Cloudflare dafuer mit seinem eigenen Standardwert ein
(Browser Cache TTL 4 Std, per curl bestaetigt: max-age=14400). Ein frischer
Deploy war dadurch bis zu 4 Std lang im eigenen Browser-Cache jedes/jeder
Besuchers unsichtbar. Cloudflare respektiert ein vom Origin gesetztes
Cache-Control -- jetzt explizit "no-cache" gesetzt (erzwingt Revalidierung
per ETag bei jedem Laden, kein Performance-Verlust durch schnelle
304-Antworten bei unveraendertem Inhalt).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 19:23:42 +02:00
DogFatherGitandClaude Opus 5 2c5e04e433 Fix: manifest-verwaltung.json wurde von der Zugangsschranke blockiert
Die site-weite Zugangsschranke (server/gate.js) laesst bislang nur den
exakten Pfad /manifest.json unauthentifiziert durch (fuer die
PWA-Installierbarkeit der Haupt-Website noetig) -- das neue
manifest-verwaltung.json fiel dadurch nicht unter die Ausnahme und wurde
zur Login-Seite umgeleitet statt als JSON ausgeliefert zu werden. Neuen
Pfad zur Ausnahmeliste hinzugefuegt.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 16:43:23 +02:00
DogFatherGitandClaude Opus 5 aecf6db509 Verwaltungsseite als eigene, separat installierbare App
Nutzer-Wunsch 20.08.2026: "ich will die Verwaltungsseite auch herunter
laden koennen, so dass ich die originale website und die verwaltungsseite
2 mal getrennt installieren kann, auf dem pc und handy."

- Eigenes manifest-verwaltung.json (eigene "id"/"scope" nur fuer
  verwaltung.html, eigener Name "DogiCrew-Verwaltung", eigenes
  Icon-Set) statt des site-weiten manifest.json (scope "/") -- macht sie
  zu einer technisch eigenstaendigen App-Identitaet, installierbar
  parallel zur Haupt-Website, auf Desktop und Handy.
- Neue Icons: bestehendes Husky-Logo mit Violett/Gold-Verlauf statt
  Babyblau (passend zum "Jewelen-Tresor"-Look der Verwaltungsseite),
  damit beide installierten Apps auch optisch klar unterscheidbar sind.
- Kein zweiter Service Worker noetig -- /sw.js laeuft bereits site-weit
  auf Scope "/" und deckt verwaltung.html automatisch mit ab.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 16:42:20 +02:00
DogFatherGitandClaude Opus 5 94182cc6ab Fix: Desktop-Nav lief ab ~1500px Fensterbreite ueber den Rand hinaus
Nutzer-Report per Screenshot: "DogiCrew"-Knopf/"BALD"-Badge rechts
abgeschnitten. Ursache: die Hamburger-Schwelle (1480px) und der
Nav-Bar-Breiten-Deckel (1440px) wurden schon zweimal knapp nachgezogen,
reichten aber nicht mehr, seit die Nav um den "DogiCrew"-Knopf + "BALD"-
Badge gewachsen ist (braucht jetzt real ~1491px). Ergebnis: bei JEDER
Fensterbreite ab ca. 1500px (nicht nur in einer schmalen Uebergangszone)
lief die Nav dauerhaft ~50px ueber den Rand.

Diesmal mit echtem Sicherheitsabstand statt wieder nur knapp behoben:
Schwelle 1480px -> 1650px, Deckel 1440px -> 1560px. Per Playwright ueber
den kompletten Bereich 1024-2560px nachgeprueft, keine Ueberlaeufe mehr.
Header ist site-weit eine gemeinsame Vorlage (main.js/main.css), Fix gilt
damit automatisch fuer alle Seiten.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 16:38:46 +02:00
DogFatherGitandClaude Opus 5 bda3198c76 Neue Funktion: Supporter-Abstimmungen (Verwaltung + DogiCrew-Bereich)
Naechste "Ausbaustufe" aus Dogfather_VanVan_Supporter_Abo.odt Abschnitt 20
(siehe Supporter-Abo-System.md), auf Nutzerwunsch "perfektioniere meine
Verwaltungsseite": Dogi/VanVan koennen in verwaltung.html eine Frage mit
2-6 Antwortoptionen auf Deutsch erstellen, automatische Uebersetzung beim
Speichern (gleiches Muster wie "Event des Jahres"). Jede aktive DogiCrew-
Person sieht die Abstimmung in ihrem Supporter-Bereich, stimmt genau einmal
ab (UNIQUE-Constraint in der DB, nicht nur Anwendungslogik), sieht danach
die Live-Ergebnisse. Admin-Seite zeigt Ergebnisbalken live, kann schliessen/
wiedereroeffnen/loeschen.

- Neue Migration 0005_supporter_polls.sql (supporter_polls,
  supporter_poll_votes), neue Berechtigung POLLS_MANAGE.
- server-internal/routes/polls.js: 30 End-to-End-Tests gegen eine
  Fake-DB bestanden (better-sqlite3 laesst sich lokal nicht kompilieren).
- verwaltung.html: neue "Abstimmungen"-Kiste im bestehenden
  vw-overview-box-Stil (violett/pink Ergebnisbalken).
- supporter.html: neue "Aktuelle Abstimmung"-Karte im bestehenden
  Gold-Look, Optionen -> Stimme -> Ergebnisbalken, alle 5 Sprachen.

Backend-Teil (server-internal/, cloudflare-worker/migrations/) noch ohne
Deploy-Zugriff -- Dogi muss ihn manuell auf dogiintern ausrollen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 16:07:51 +02:00
DogFatherGitandClaude Opus 5 189b72ec73 Vorschau-Umschalter (Theatermasken-Symbol) vor dem oeffentlichen Start deaktiviert
Nutzer-Wunsch 20.08.2026, vor morgigem oeffentlichem Start: "die leute
sollen das ja nicht selbst auswaehlen koennen". Der Schalter erkannte
Dogi/VanVan bisher nur ueber das rein client-seitig lesbare dogi_role-
Cookie (bewusst NICHT das echte HttpOnly-Sicherheits-Cookie) -- technisch
liesse sich dieses Cookie per Browser-Konsole selbst setzen. Echte Daten
waeren dadurch nie einsehbar (nur eigene Beispieldaten-Vorschau), aber
"soll weg fuer die Oeffentlichkeit" heisst hier bewusst ganz weg, nicht
nur sicherer.

Nur der Aufruf beim Seitenaufbau ist auskommentiert, renderVorschauSchalter()
selbst bleibt unangetastet fuer ein spaeteres internes Testen.

Per Playwright verifiziert: Widget erscheint weder bei normalem Besuch
noch mit manuell gesetztem dogi_role-Cookie.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 15:16:01 +02:00
DogFatherGitandClaude Opus 5 f86b96a22f "Event des Jahres" jetzt in der Verwaltung pflegbar (Bild, Text, Link)
Nutzer-Wunsch 20.08.2026: "will ich in der admin seite das selbst
gestalten können, mit bild und text und am besten auch einen link." Auf
Rueckfrage entschieden: Titel/Text nur auf Deutsch eingeben, die anderen
4 Sprachen werden beim Speichern automatisch uebersetzt (MyMemory, 0€,
kein API-Key) -- bewusste Ausnahme von der sonst geltenden "immer echte
Uebersetzung"-Regel, klar dokumentiert und im Admin-UI selbst als Hinweis
sichtbar. de-CH bekommt denselben deutschen Text (Dialekt ist keine von
Uebersetzungs-APIs unterstuetzte Zielsprache).

Backend (server-internal):
- routes/events.js: getEventsPublic (oeffentlich, keine Session),
  saveEvent + uploadEventImage (beide hinter neuer EVENTS_MANAGE-
  Berechtigung, Owner immer erlaubt). Speichert in der bereits
  bestehenden app_settings-Tabelle (2 feste Slots) statt einer neuen
  Tabelle -- es gibt nie mehr als genau 2 Events.
- lib/translate.js: MyMemory-Anbindung mit "fail closed auf Deutsch"
  pro Sprache, falls der Dienst mal nicht antwortet.
- Bild-Upload per multer, zufaelliger Dateiname (crypto.randomUUID,
  verhindert Path-Traversal ueber den Originalnamen komplett), 5 MB
  Limit, nur jpeg/png/webp, Ablage unter /var/lib/dogfather-internal/
  uploads/events (NICHT im Git-Ordner -- uebersteht Deploys), oeffentlich
  ausgeliefert unter /uploads.
- Neue Berechtigung EVENTS_MANAGE im Katalog (Gruppe "Startseite").

Frontend:
- index.html: laedt /events-of-year beim Aufruf, ueberschreibt pro Slot
  Datum/Titel/Text/Bild/Link NUR wenn dort tatsaechlich etwas gespeichert
  ist -- bleibt der Abruf aus oder ist ein Slot leer, bleibt der bisherige
  fest eingebaute Standardinhalt (dieselben zwei echten Events) stehen.
  Kein Blocker, kein sichtbarer Fehler bei Ausfall.
- verwaltung.html: neue Sektion "🏆 Event des Jahres" (nur mit
  EVENTS_MANAGE sichtbar), 2 Karten mit Bild-Upload+Vorschau, Datum,
  Titel, Text, Link, eigenem Speichern-Knopf pro Event.

Ausfuehrlich getestet, weil server-internal wegen fehlender Visual-
Studio-Build-Tools auf dieser Windows-Maschine nicht lokal mit echtem
better-sqlite3 laufen kann: routes/events.js komplett isoliert gegen eine
Fake-DB getestet (11 Szenarien: oeffentlicher Abruf, fehlende Session,
Session ohne Recht, Owner, Rolle MIT EVENTS_MANAGE, alle Validierungen,
Bild-Upload inkl. falscher Dateityp, Abruf des hochgeladenen Bilds).
index.html per Playwright mit echtem Netzwerk-Mocking gegen zwei
Szenarien getestet (API nicht erreichbar -> Standardinhalt bleibt; API
liefert echte Daten -> nur der befuellte Slot wird ueberschrieben, der
leere bleibt Standard). Dabei einen echten CSS-Bug gefunden und behoben
(display:block auf .jahres-event-bild überschrieb die [hidden]-Regel des
Browsers, leeres Bild waere immer sichtbar gewesen). verwaltung.html per
Playwright mit gemocktem Login+API end-to-end getestet: Formular wird
korrekt vorbefuellt, Bild-Upload + Speichern senden die richtigen Daten.

WICHTIG: server-internal laeuft unter einem eigenen Systembenutzer
(dogiintern), auf den ich (claudian) bewusst KEINEN Zugriff habe -- diese
Aenderung kann ich anders als sonst nicht selbst bis auf den Server
bringen. Dogi muss den Deploy-Schritt fuer server-internal selbst
ausfuehren (git pull + npm install + Neustart des dogiintern-Dienstes).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 15:09:54 +02:00
DogFatherGitandClaude Opus 5 3f3ba835a9 Patricks Zitat ergaenzt
Nutzer-Wunsch 20.08.2026: "Wege entstehen dadurch, dass man sie geht."
(alle 5 Sprachen). Ersetzt "Zitat folgt" auf der Scout-Karte.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 14:28:11 +02:00
DogFatherGitandClaude Opus 5 f8f3e65603 Streamer-gesucht-Seite: neues Hero-Bild (Spicy Media, rot)
Nutzer-Wunsch 20.08.2026: bg-bewerben-creator.jpg + -mobile.jpg (bisher
unscharfes Selfie mit pinker Sonnenbrille) ersetzt durch das vom Nutzer
gelieferte Motiv (Spicy-Media-Look, rot, Silhouette + Logo). Alte Version
lokal gesichert (*.jpg.bak-20-08-2026, nicht eingecheckt).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 14:22:01 +02:00
DogFatherGitandClaude Opus 5 f6cbaec132 Zeitreise: Karte "Das Manager-Team wächst" entfernt
Nutzer-Wunsch 20.08.2026. Karte (Juli 2026) samt zugehoeriger i18n-Keys
(zr_ev8_date/_h3/_p, alle 5 Sprachen) entfernt. 16 -> 15 Karten.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 13:16:32 +02:00
DogFatherGitandClaude Opus 5 5c5accd12c Neues Links-Hero-Bild + echtes Community-Foto statt Platzhalter
Nutzer-Wunsch 20.08.2026:
- links.html: neues, vom Nutzer geliefertes "aus dem Universum"-Motiv
  (Weltraum-Szene mit TikTok/Instagram/Snapchat/Discord/Merch-Icons um ein
  "LINKS"-Portal) ersetzt bg-links.jpg + -mobile.jpg. Alte Version lokal
  gesichert (*.jpg.bak-20-08-2026, nicht eingecheckt).
- community.html, Abschnitt "Mehr als Follower": echtes Team-Foto
  (Diene, Ghost, VanVan, Dogi bei einem gemeinsamen Treffen, "TEAM DOGI")
  ersetzt den "Foto folgt"-Platzhalter. Gleiches Muster wie vanvan.html
  (.collage-photo, aspect-ratio:3/4 statt der alten 4/3-Platzhalterbox,
  da das echte Foto Hochformat ist). Jetzt ungenutzte i18n-Keys
  com_bild_platzhalter/com_foto_folgt entfernt.

Per Playwright verifiziert: beide Seiten laden fehlerfrei, keine
fehlgeschlagenen Requests, keine Konsolenfehler.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 12:54:53 +02:00
DogFatherGitandClaude Opus 5 071f3d0382 Startseite: neue "Event des Jahres"-Kachel unter den 3 Welt-Kacheln
Nutzer-Wunsch 20.08.2026: volle Breite wie die 3 Welt-Kacheln zusammen,
zeigt immer genau zwei Events. Erste Belegung mit zwei bereits auf
zeitreise.html dokumentierten echten Events (28-Stunden-Stream 7. März
2026, Creator Cup 27. Juli - 2. August 2026) statt Platzhaltertext --
Texte sind gekuerzte, inhaltlich unveraenderte Fassungen der bestehenden
Zeitreise-Beschreibungen, beide Karten verlinken auf zeitreise.html. Alle
5 Sprachen gepflegt. Gleiche Karten-/Tag-Optik wie die Welt-Kacheln, damit
es wie ein natuerlicher vierter Baustein wirkt statt wie ein fremdes
Element.

Per Playwright verifiziert: exakt gleiche Breite wie .hero-grid (1180px),
2 Karten, kein horizontales Scrollen auf Mobil, keine Konsolenfehler.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 12:51:17 +02:00
DogFatherGitandClaude Opus 5 9adebd9bc4 KRITISCH: Server-Quellcode + kompletter Git-Verlauf waren oeffentlich abrufbar
Sicherheits-Audit vor dem geplanten oeffentlichen Start morgen (21.08.2026,
Nutzer-Anfrage: "duerfen die leute keinen zugriff auf veraenderungen haben").
SITE_DIR ist der GESAMTE Repo-Ordner (join(__dirname, "..")), express.static
lieferte daher nicht nur die Website aus, sondern auch:
- server/ (inkl. gate.js, das komplette Sicherheitskonzept im Klartext)
- server-internal/ (Admin-/Supporter-Backend-Quellcode)
- cloudflare-worker/ (altes Backend)
- .git/ (VOLLSTAENDIGE Commit-Historie, rekonstruierbar per Git-Dump)
- CLAUDE.md, DEPLOY.md, wrangler.toml, netlify.toml, gate-worker.js,
  gate.html.bak-07-08-2026 (Alt-Backup-Datei einer frueheren Session)

Live nachgewiesen (mit gueltigem Zugangscode -- morgen faellt die Schranke
fuer ALLE weg): /server/gate.js und /.git/config lieferten HTTP 200.
Ursache: serve-static blockt per Default nur Dateien, deren EIGENER Name
mit einem Punkt beginnt (server/.env -> zufaellig schon 404), aber NICHT
rekursiv -- .git/config wird trotzdem ausgeliefert, weil "config" selbst
nicht mit einem Punkt beginnt, nur der Ordner davor.

Fix: eigene Sperr-Middleware VOR express.static, unabhaengig von
gateMiddleware (bleibt also auch nach dem Entfernen der Zugangsschranke
wirksam). Blockt ganze Ordner (server/, server-internal/,
cloudflare-worker/) + versteckte Ordner/Dateien rekursiv (jedes
Pfadsegment, das mit "." beginnt, ausser .well-known) + eine feste Liste
an Alt-Dateien + jedes *.bak-Muster, damit auch kuenftige Backup-Reste
automatisch mitgeschuetzt sind.

Lokal mit echtem Express-Server verifiziert (gateMiddleware absichtlich
deaktiviert, um exakt den morgigen "oeffentlich"-Zustand zu simulieren):
alle vorher gefundenen Luecken jetzt 404, alle echten Seiten/Assets
(index.html, main.css, main.js, manifest.json, robots.txt, favicon)
weiterhin 200.

Getrennt prooft: server-internal/ (eigener Dienst unter
postfach.dogfather-universe.com, Port 4200) hat sein EIGENES,
unabhaengiges Session-System -- jede /admin/*-Route ist einzeln per
requireTeamSession-Middleware abgesichert (in index.js durchgezaehlt,
keine Ausnahme gefunden), live mit einer unauthentifizierten Anfrage
gegen /admin/users/list bestaetigt (401). Dieser Dienst war nie vom
Website-Gate abhaengig und ist von diesem Fund nicht betroffen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 12:47:36 +02:00
DogFatherGitandClaude Opus 5 1d28d8db2b Kooperation-Seite: Hero-Bild nochmal ausgetauscht (verfeinerte Version)
Nutzer-Wunsch 20.08.2026 (zweite Runde): neues, verfeinertes Motiv (DogFather-
Logo oben, Filipe sitzend mit HasiDog + Husky, "INTERESSE AN EINER
KOOPERATION? JETZT KONTAKT AUFNEHMEN") ersetzt die Version vom selben Tag.
Theme bleibt dogfather/babyblau (passt weiterhin). Alte Version lokal
gesichert (*.jpg.bak-20-08-2026-v2, nicht eingecheckt).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 12:26:59 +02:00
DogFatherGitandClaude Opus 5 7a69f896bc Dienes Profiltext: Alter durch Geburtsmonat ersetzt
Nutzer-Wunsch 20.08.2026: "Ich bin 37 Jahre alt" -> "Ich bin im August 1988
geboren" (und analog in allen 5 Sprachen), Rest des Satzes (verheiratet,
Mutter von zwei Kindern) unveraendert. Betrifft nur bioHtml.de/de-CH/en/
fr/pt in data-modis.js, keine anderen Vorkommen von "37" im Text.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 12:06:48 +02:00
DogFatherGitandClaude Opus 5 bfcf35aafa Kooperation-Seite: neues Hero-Bild + Theme Rot -> Blau
Nutzer-Wunsch 20.08.2026: Hintergrundbild von bewerben-kooperation.html
(bg-bewerben.jpg + -mobile.jpg, beide bisher identisch zum alten roten
Spicy-Media-Motiv "WERDE TEIL VON SPICY MEDIA") ersetzt durch das vom
Nutzer geschickte neue Motiv (HasiDog/DogFather/Husky, "EINE KOOPERATION
WOLLEN? DANN HIER MELDEN", bereits babyblau statt rot). Passend dazu
data-theme von "spicymedia" (Rot/Orange) auf "dogfather" (Babyblau/Lila)
umgestellt -- keine hartkodierten Rot-Werte im HTML, daher genuegt die
Theme-Umstellung fuer Knopf-/Link-/Eyebrow-Farben komplett.

Bild aus PNG-Quelle konvertiert (quality=90, optimize+progressive), Seiten-
verhaeltnis/Aufloesung unveraendert uebernommen (kein Hochskalieren). Alte
Bilder lokal gesichert (*.jpg.bak-20-08-2026, nicht eingecheckt).

Per Playwright verifiziert: data-theme=dogfather, --accent=#8fd9ea, keine
fehlgeschlagenen Requests, keine Konsolenfehler, Formular/Footer sehen im
echten (nicht-fullPage-)Screenshot nach dem Scrollen korrekt dunkel aus --
ein zunaechst gefundener "weisser Kasten" war ein reines Playwright-
fullPage-Screenshot-Artefakt (position:fixed-Hintergrund kachelt beim
kuenstlich verlaengerten Full-Page-Screenshot nicht mit), kein echter Bug,
per echtem gescrolltem Viewport-Screenshot gegengeprueft und ausgeschlossen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 12:04:05 +02:00
DogFatherGitandClaude Opus 5 02f9509042 Zeitreise-Finale-Punkt-Bug + Preis aus dem Abonnieren-Hero-Bild entfernt
1) Nutzer-Report 20.08.2026 ("wieso dieser Punkt da in der Mitte"):
.zeit-node (der leuchtende Zeitleisten-Punkt) ist bei normalen Karten
position:absolute; left:50%; top:50% relativ zu .zeit-ast -- korrekt, weil
die Karte dort nur die halbe Breite einnimmt. Die Finale-Karte
(.zeit-final) wird aber auf fast volle Breite gestreckt und zentriert,
der Knoten landete dadurch mitten im Zitat-Text. Die Verbindungslinie
(::before) wurde dafuer schon frueher ausgeblendet, der Knoten selbst
wurde dabei uebersehen -- jetzt nachgezogen (display:none fuer
.zeit-final .zeit-node).

2) Nutzer-Wunsch 20.08.2026: der Preis "FÜR 4,99 € MONATLICH" stand fest
ins Hero-Bild von abonnieren.html eingebrannt (bg-abonnieren.jpg +
-mobile.jpg, beide Dateien waren identisch) -- per CSS/Text nicht
erreichbar, siehe bereits dokumentierter Fund vom selben Tag. Per Pillow
sauber herausretuschiert (Clone-Stamp aus einem textfreien Bereich
derselben Schaltflaeche, exakt auf die Zeilenhoehe inkl. Ü-Umlautpunkte
skaliert, Nahtstellen weich gezeichnet, mit numpy-Helligkeitsanalyse
zeilenweise gegengeprueft bis keine Text-Reste mehr uebrig waren) --
"ABONNIEREN" bleibt als eigenstaendiger Button stehen, keine sichtbare
Lücke/Leerstelle. Qualitaet/Dateigroesse an das Original angepasst
(quality=90, optimize+progressive, exakt vergleichbare Groesse). Original
lokal gesichert (bg-abonnieren.jpg.bak-20-08-2026, nicht eingecheckt).

Beide Fixes per Playwright verifiziert: Knoten-Punkt display:none bei der
Finale-Karte, Hero-Bild laedt fehlerfrei ohne fehlgeschlagene Requests,
keine Konsolenfehler.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 11:49:26 +02:00
DogFatherGitandClaude Opus 5 7e369c72ae Zeitreise: echte Daten fuer "Team Dogi entsteht" + "geht online"
Nutzer-Wunsch 20.08.2026:
- "Team Dogi entsteht": "Datum folgt" -> "Anfang 2025" (neuer Key
  zr_ev2_date, alle 5 Sprachen). Bleibt an ihrer Stelle -- liegt weiterhin
  chronologisch vor "Ostern 2025".
- "DOGFATHER UNIVERSE geht online": "2026 - Datum folgt" -> "21. August
  2026, 21 Uhr" (morgen, live). Bleibt ebenfalls an ihrer Stelle.

Per Playwright komplette Reihenfolge erneut gegengeprueft: weiterhin
chronologisch korrekt, keine Konsolenfehler.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 11:36:47 +02:00
DogFatherGitandClaude Opus 5 895f04c524 Zeitreise: echtes Datum fuer "Start als Content Creator" (24.10.2023)
Nutzer-Wunsch 20.08.2026. Neuer i18n-Key zr_ev1_date (alle 5 Sprachen),
Karte bleibt weiterhin an erster Stelle, da 2023 das fruehste Datum der
gesamten Zeitleiste ist. Per Playwright die komplette Reihenfolge erneut
durchgezaehlt: weiterhin korrekt, keine Konsolenfehler.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 11:33:55 +02:00
DogFatherGitandClaude Opus 5 f750fe9dfd Zeitreise: echte Daten fuer Buch + Spotify, chronologisch einsortiert
Nutzer-Wunsch 20.08.2026: "Das Buch HasiDog & Casper" (November 2025) und
"HasiDog startet auf Spotify" (1. Januar 2026) hatten bisher "Datum folgt"
und lagen dadurch weit hinten in der Zeitleiste, obwohl beide zeitlich vor
dem 28-Stunden-Stream (7. März 2026) liegen. Neue i18n-Keys zr_ev13_date/
zr_ev14_date (alle 5 Sprachen) ergaenzt, beide Karten an die chronologisch
richtige Stelle verschoben: Ostern 2025 -> November 2025 (Buch) ->
1. Januar 2026 (Spotify) -> 7. März 2026 (28-Stunden-Stream) -> ...

"Kooperation mit VanVan Teddys" bleibt bewusst unveraendert bei "Datum
folgt", da dafuer noch kein Datum genannt wurde.

Per Playwright die komplette Reihenfolge alle 16 Karten durchgezaehlt und
gegengeprueft: chronologisch korrekt, keine Konsolenfehler.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 11:26:19 +02:00
DogFatherGitandClaude Opus 5 9cb4e177ee Zeitreise: 4 Ereignisse entfernt + einladender "wächst noch"-Hinweis
Nutzer-Wunsch 20.08.2026: vier Zeitleisten-Karten sollten komplett weg
("Ein neues Kapitel beginnt" / Mai 2026, "Die ersten betreuten Creator",
"Weitere Scouts und Manager kommen hinzu", "Das erste Community-Treffen") --
entfernt aus zeitreise.html samt der zugehoerigen, jetzt ungenutzten
i18n-Keys (zr_ev5_*, zr_ev16_*, zr_ev17_*, zr_ev18_*). 20 -> 16 Karten.

Zusaetzlich: gleich am Seitenanfang soll auffallen, dass diese Zeitreise
noch nicht fertig ist. Bewusst NICHT die alte .todo-note-Optik reaktiviert
(die war fuer Entwickler gedacht und wurde am 31.07.2026 sitewide bewusst
unsichtbar gemacht) -- stattdessen ein neuer, fuer Besucher gestalteter
Hinweis (.zeit-baustelle), der zum Wachstums-Baum-Thema der Seite passt
(🌱 "Der Anfang" oben, 🌳 "...wächst weiter" unten): "Diese Zeitreise
wächst noch", babyblauer Glow-Rahmen, leicht wiegendes Setzlings-Icon.
Alle 5 Sprachen gepflegt.

Per Playwright verifiziert: alle 4 Karten wirklich weg (Text-Suche),
16 statt 20 .zeit-ast-Elemente, Hinweisbox sichtbar mit korrektem Text,
keine Konsolenfehler.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 11:23:38 +02:00
DogFatherGitandClaude Opus 5 c4fa132244 DogiCrew-Sperre: auch die Registrierungsfelder selbst nicht mehr eintippbar
Nutzer-Feedback 20.08.2026 (direkte Nachpruefung): "ich kann immer nur was
rein tippen, soll garnicht möglich sein bitte" -- der Registrieren-Knopf
war gesperrt, aber Name/TikTok/E-Mail-Feld ließen sich weiterhin normal
beschreiben. Jetzt disabled, exakt wie das E-Mail-Feld im Login-Panel
(voriger Commit). Per Playwright verifiziert: echter Tippversuch in allen
drei Feldern hinterlässt keinen Wert mehr.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 11:10:26 +02:00
DogFatherGitandClaude Opus 5 d98133faba DogiCrew-Sperre vervollstaendigt: Login-Einstieg, E-Mail-Feld, Preis
Nutzer-Feedback 20.08.2026 (Nachpruefung des vorherigen Commits): der
Registrieren-Knopf war gesperrt, aber drei Luecken blieben offen --

1. "Schon Supporter? Hier einloggen" fuehrte zu einem VOLL FUNKTIONSFAEHIGEN
   Login-Code-Anfordern-Knopf. E-Mail-Feld jetzt disabled (nicht eintippbar,
   wie gewuenscht) und btn-login-request auf denselben .btn-gold-locked-Stil
   wie der Registrieren-Knopf umgestellt (natives disabled-Attribut).
2. Dritte, bislang uebersehene Luecke: "Mit Google anmelden" waere ein
   weiterer Weg gewesen, trotz gesperrter Knoepfe ein echtes Konto anzulegen,
   falls GOOGLE_CLIENT_ID serverseitig konfiguriert ist. initGoogleConsent()
   wird jetzt nicht mehr aufgerufen, solange die Registrierung gesperrt ist --
   ein Kommentar markiert genau die Stelle zum spaeteren Reaktivieren.
3. Der Preis (4,99 €) durfte laut Nutzer noch nicht sichtbar sein -- war aber
   an zwei Stellen zu sehen: der grossen Preis-Zahl in der Box (jetzt
   "Coming soon…" im selben Gold-Schimmer-Stil wie der gesperrte Knopf) und
   im Fliesstext (ab_text2, alle 5 Sprachen: "Für 4,99 € im Monat" ->
   "Mit deinem/dim/your/ta/sua monatlichen Beitrag", nur die erste Teilphrase
   geaendert, Rest jeder Uebersetzung unangetastet).

Betrifft ausschliesslich den oeffentlichen Anmelde-Einstieg -- bereits
eingeloggte Supporter (Dogi/VanVan als Test-Accounts) sind ueber ihren
gespeicherten Token/supporter.html unveraendert erreichbar.

Bekannter, NICHT in diesem Commit geloester Rest: der grosse Hero-Banner
oben auf der Seite (assets/img/bg-abonnieren(-mobile).jpg) zeigt den Preis
ebenfalls fest ins Bild eingebrannt ("ABONNIEREN FÜR 4,99 € MONATLICH") --
das ist Bildmaterial, keine Text-/CSS-Aenderung, braucht Ruecksprache mit
Dogi bevor daran gearbeitet wird.

Vor dem Commit per Playwright verifiziert: Preis-Box zeigt nur noch
"Coming soon…", Login-E-Mail-Feld nimmt keine Eingabe an, Klick auf den
gesperrten Login-Knopf loest keinen /supporter/login-request-Aufruf aus,
Google-Bereich bleibt hidden, keine Konsolenfehler.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 11:07:24 +02:00
DogFatherGitandClaude Opus 5 5cd473e71a DogiCrew-Registrierung: "Coming Soon"-Sperre + Bald-Badge im Nav-Knopf
Nutzer-Wunsch 20.08.2026: DogiCrew ist "das geilste Bonus" -- der Registrieren-
Knopf soll noch nicht bedienbar sein (Dogis PayPal-Business-Zugangsdaten fehlen
noch, siehe DogFather Website - Offene Punkte.md), aber Besucher sollen ueber
den Nav-Knopf trotzdem ganz normal auf die Seite kommen und die Vorschau sehen
duerfen -- "soll alles bleiben" ausser dem einen Knopf.

- Nav-Knopf (DogiCrew/Abo aktivieren, main.js renderAboButton): neues kleines
  Schimmer-Badge "Bald" direkt in der Pille (main.css .nav-cta-soon, reine
  Wiederverwendung von .btn-silver-text/-spark in kleinerem Massstab). Nur auf
  den drei Zielen, die zur (noch gesperrten) Registrierung fuehren -- NICHT auf
  supporter.html, das ist der echte, bereits funktionierende Bereich fuer
  Dogi/VanVan als Test-Supporter.
- abonnieren.html: Registrieren-Knopf ersetzt durch neue .btn-gold-locked-
  Komponente -- eigener Gold/Schloss-Stil (nicht das schon anderswo auf dieser
  Seite vergebene .btn-silver), natives disabled-Attribut (kein JS noetig,
  disabled-Buttons feuern keine Click-Events -- der bestehende Listener bleibt
  unveraendert und inert). Formularfelder bleiben normal ausfuellbar (Teaser),
  nur der Absende-Knopf ist gesperrt.

Bug waehrend der Umsetzung gefunden UND behoben, nicht nur uebersehen: die
rotierende Conic-Gradient-Randmaske von .btn-silver/.btn-legendary (copy-paste
als erster Versuch) verzieht sich auf diesem sehr langgestreckten 100%-Breite-
Knopf zu einer krummen Schlaufe -- exakt die dokumentierte Lektion in
Projektregeln.md Punkt 14 (03.08.2026, TikTok-Button-Bug), die beim ersten
Entwurf übersehen wurde. Per Playwright-Screenshots über mehrere Animations-
Frames nachgewiesen (nicht nur vermutet) und auch am bereits LIVE laufenden
.btn-silver auf dieser Seite reproduziert, um auszuschliessen, dass es an der
neuen Komponente statt an der Technik selbst liegt. Fix: derselbe sichere
Zwei-Layer-Background-Trick wie bei .abo-google-frame (gleiche Datei) --
Bewegung nur ueber background-position, bleibt geometrieunabhaengig exakt an
der Kontur. Nach dem Fix erneut ueber mehrere Frames verifiziert, sauber.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 10:51:34 +02:00
DogFatherGitandClaude Opus 5 0223fcf9cd Mobil-Menü: schwebende Eck-Knöpfe blockierten Sprachschalter + Bewerben-Button
Nutzer-Report 20.08.2026: "auf dem Handy... passt nicht immer alles". Per echter
Mobil-Emulation (iPhone 15 Pro + Pixel 8, Playwright) nachgestellt statt geraten:
Die schwebenden Eck-Knöpfe (Musik-Widget unten rechts, Vorschau-Umschalter fuer
Dogi/VanVan unten links) sind absichtlich immer sichtbar (position:fixed, direkte
<body>-Kinder). Beim aufgeklappten Mobil-Hamburger-Menü lagen sie dadurch sichtbar
UEBER den untersten Menuepunkten (Sprachschalter "DE" + "Bewerben"-Knopf) und
verdeckten sie -- auf Screenshots klar zu sehen, betrifft jede der ueber 30 Seiten,
da das Menü ueberall gleich ist. Genau die Art Bug, die im Browser (Adressleiste
noch da, man kann drumrum navigieren) kaum auffaellt, aber in der installierten
Vollbild-App voll durchschlaegt.

Fix: :has()-Selektor blendet beide Widgets aus, solange .nav-links.open ist --
kein gemeinsamer Elternknoten mit dem Menue vorhanden, daher CSS statt weiterer
main.js-Logik. Nach dem Fix per Regressionstest ueber 6 Seiten x 2 Geraete erneut
verifiziert: Widgets erscheinen normal wieder, sobald das Menue schliesst, keine
neuen Konsolenfehler, kein horizontales Scrollen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-20 10:28:22 +02:00
DogFatherGit 44086b0407 Manager-Seite: TikTok-Button zur Spicy-Media-Agentur ergänzt
Bei der Spicy-Media-Agentur-Sektion auf manager.html einen TikTok-Button
(gleicher .btn-tiktok-Stil wie bei Dogi/den Modis) hinzugefügt, der direkt
zum Agentur-Profil @spicymediaagentur verlinkt, damit Besucher von dort
sofort weiterklicken können.
2026-08-20 10:13:15 +02:00
DogFatherGitandClaude Opus 5 50371d5404 Zugangs-Sperre traf ALLE Besucher gleichzeitig statt nur den Verursacher
Nutzer-Report 19.08.2026: "ich komme auf der .com nicht rein" -- der RICHTIGE Zugangscode
wurde mit "Falscher Zugangscode" abgewiesen.

Ursache: gateClientKey() nutzte req.ip. Das ist hier NICHT die IP des Besuchers, sondern
die des Cloudflare-Knotens (Kette Besucher -> Cloudflare -> Caddy -> Express; bei
trust proxy: 1 bleibt genau Cloudflare uebrig). Damit teilten sich alle Besucher EINEN
Fehlversuchs-Zaehler -- fuenf Vertipper von irgendwem sperrten die Seite fuer jeden,
15 Minuten lang.

Live nachgewiesen, nicht vermutet: derselbe richtige Code wurde ueber
dogfather-universe.com abgelehnt und im selben Moment ueber www.dogfather-universe.com
akzeptiert -- zwei Namen, zwei Cloudflare-Knoten, zwei getrennte Zaehler.

Fix 1 -- echte Besucher-IP aus CF-Connecting-IP. Dieser Header war am 05.08.2026 bewusst
verworfen worden, weil er faelschbar war, solange der Server auch direkt unter seiner IP
erreichbar war. Diese Voraussetzung gilt nicht mehr: die Firewall laesst 80/443 nur noch
aus den Cloudflare-Netzen zu. Vor der Umstellung von aussen gegengeprueft -- Direktzugriff
auf beide Ports kommt gar nicht mehr zustande, der Header kann also nur von Cloudflare
stammen. Abhaengigkeit im Code vermerkt: wird der Direktzugriff je wieder geoeffnet, muss
diese Stelle zurueckgebaut werden. Ungueltige Header-Werte fallen sauber auf req.ip zurueck.

Fix 2 -- ehrliche Meldung bei Sperre (429 statt 401), mit Restzeit in Minuten. Die bisher
absichtlich identische Meldung sollte Angreifern nichts verraten, hat aber in der Praxis
den Besitzer der Seite selbst ratlos gemacht: richtiger Code, Anzeige "Falscher
Zugangscode", keine Chance zu erkennen dass nur eine Wartezeit laeuft. Die Sperre bleibt
in voller Laenge bestehen, der Code wird dadurch nicht leichter erratbar.

Fix 3 -- abgelaufene Eintraege werden aufgeraeumt. Pro echter Besucher-IP kann die Map
sonst unbegrenzt wachsen (vorher gab es nur eine Handvoll Cloudflare-Knoten).

Regressionstest ergaenzt (server/test-gate.mjs, 12 Pruefungen). Gegen den ALTEN Code
laufen gezielt 5 davon auf Fehler -- darunter "Dogi kommt trotz fremder Sperre rein" --,
gegen den neuen alle gruen. Der Test faengt also wirklich diesen Bug.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-19 20:21:46 +02:00
DogFatherGitandClaude Opus 5 80dbfc9367 Handy-App reparieren: Zugangsseite war nicht installierbar + Knopf ohne Rueckmeldung
Nutzer-Report 19.08.2026: "komm auf dem Handy nicht rein, hab es installiert und
klappt nicht" / "er nimmt meinen Code nicht an".

Hauptursache war ein veralteter Zugangscode (nur Doku, kein Code) -- beim Nachpruefen
kamen aber drei echte Fehler auf der Zugangsseite zutage, alle nur auf dem Handy spuerbar:

1. gate.html war NICHT installierbar. Ohne gueltige Sitzung leitet gate.js jeden Aufruf
   hierher um -- es ist also der Bildschirm, von dem aus man die App installiert. Genau
   dort fehlten Manifest-Verweis und Service-Worker-Registrierung, die Chrome fuer eine
   echte App verlangt (index.html hatte beides laengst, gate.html laedt main.js bewusst
   nicht). Wer vor dem ersten Login installierte, bekam nur eine leere Verknuepfung.
   Exakt derselbe Fehler wie am 07.08.2026 in VanVans Shop, hier nie aufgefallen.

2. Der "Oeffnen"-Knopf gab keinerlei Rueckmeldung und die Anfrage hatte kein Zeitlimit.
   Bleibt im Mobilfunknetz eine Antwort aus, haengt fetch() unbegrenzt -- es sieht aus,
   als sei der Tap nicht angekommen. Jetzt: Knopf sperrt sich sofort und zeigt "Wird
   geprueft...", Abbruch nach 10s mit klarer Meldung (AbortController), Doppel-Tap
   ignoriert. Letzteres ist hier besonders wichtig, weil server/gate.js nach 5
   Fehlversuchen die IP fuer 15 Minuten sperrt -- Doppel-Taps zaehlten bisher mit.

3. apple-touch-icon fehlte im GESAMTEN Projekt. iOS ignoriert das Manifest fuer das
   Startbildschirm-Symbol und liest nur dieses Tag -- auf dem iPhone gab es deshalb einen
   unscharfen Seiten-Screenshot statt des Logos. Neu erzeugt (180x180, vollflaechig ohne
   Alpha: iOS faerbt Transparenz schwarz, und icon-512.png hat nachgemessen transparente
   Ecken). Zentral ueber main.js in alle 34 Seiten eingehaengt statt 34x kopiert;
   gate.html hat es statisch, da ohne main.js.

Zusaetzlich maskable-Icons ergaenzt: Android beschneidet das Startsymbol auf einen Kreis.
Per Simulation der Sicherheitszone nachgemessen -- das bisherige Icon haette 19,87% des
Logos verloren (Husky-Ohren + Schriftzug). Die neuen Varianten (60%/59% Fuellgrad) liegen
bei exakt 0 abgeschnittenen Pixeln, Fuellgrad dafuer schrittweise eingemessen statt geraten.

Markenfarbe #8FD9EA aus dem vorhandenen Icon ausgelesen, keine neue Farbe erfunden.
Validiert: node --check, Manifest-JSON, Tag-Balance, alle 8 Pflicht-Zutaten vorhanden.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-19 20:13:10 +02:00
DogFatherGit fed6a1f7c7 Impressum auf Luxemburg-Recht korrigiert + Zugangsseite auf 2 Kacheln umgebaut
- kontakt.html: Anbieterkennzeichnung zitierte faelschlich deutsches Recht
  (§5 TMG) trotz Sitz in Luxemburg. Jetzt korrekt Art. 5 der loi modifiee
  du 14 aout 2000 relative au commerce electronique. Telefonnummer ergaenzt
  (in Luxemburg fuer die Anbieterkennzeichnung ueblich, in Deutschland nicht
  zwingend noetig - dort galt bislang keine). Veraltete "§55 Abs.2 RStV"-Zeile
  entfernt: gilt inhaltlich wie rechtlich nicht (deutsches Landesmedienrecht,
  Sitzlandprinzip, zudem kein journalistisch-redaktionelles Angebot). EU-OS-
  Streitschlichtungslink + VSBG-Erklaerung ergaenzt (fehlten bisher, bei
  bezahltem Supporter-Abo EU-weit vorgeschrieben).
- gate.html: gemeinsame Zugangs-Box fuer Dogi/VanVan durch 2 getrennte
  Kacheln ersetzt (gleiches Muster wie bereits in verwaltung.html), nur die
  Kacheln selbst neu - Hintergrund/Logo/Buehne unveraendert. Beide Formulare
  rufen weiterhin denselben /gate-auth-Endpunkt auf, Rollen-Erkennung bleibt
  serverseitig ueber die Zugangscodes (server/gate.js unveraendert).
2026-08-07 12:53:54 +02:00
DogFatherGit d6489f787a Sicherheits- und Stabilitaetskorrekturen nach vollstaendiger Pruefung
- Login-Sperre war umgehbar: clientKey() vertraute dem Header CF-Connecting-IP.
  Bei Cloudflare war das sicher (CF ueberschreibt ihn), auf dem eigenen Server nicht:
  der Ursprungsserver ist auch direkt unter seiner IP erreichbar, dort konnte der
  Header frei gesetzt und die 5-Versuche-Sperre komplett ausgehebelt werden
  (nachgewiesen). Jetzt req.ip hinter trust proxy.
- Absturzsicherheit: Express 4 faengt Fehler aus async-Handlern nicht ab, eine
  einzige fehlerhafte Anfrage konnte den ganzen Dienst beenden. wrap() um alle
  Handler, zentraler Fehler-Handler, unhandledRejection/uncaughtException-Netz.
- Sicherheits-Header (X-Content-Type-Options, X-Frame-Options, Referrer-Policy,
  Permissions-Policy, HSTS) wurden bisher nur ueber die Datei _headers gesetzt,
  die auf dem eigenen Server wirkungslos ist. Jetzt im Express-Server.
- x-powered-by abgeschaltet.
- Datenschutzerklaerung/AGB: nannten Cloudflare als Hoster und eine Cloudflare-D1-
  Datenbank. Jetzt korrekt netcup (Rechenzentrum Nuernberg) als Hoster, Cloudflare
  als vorgeschaltetes CDN mit Drittlandhinweis.
2026-08-05 22:33:31 +02:00
DogFatherGit 61729d4f12 Zugangs-Sperre: Code wird nach dem Schliessen des Browsers wieder gefragt
Sitzungs-Cookie ohne maxAge/expires statt 90-Tage-Cookie; zusaetzlich
Notbremse von 12 Stunden im signierten Token, falls ein Browser sehr
lange offen bleibt.
2026-08-05 20:00:15 +02:00
DogFatherGit 59343b459c Frontend auf den neuen eigenen Postfach-Server umgestellt
API_BASE_URL/API_BASE zeigen jetzt auf https://postfach.dogfather-universe.com
(eigener Server-internal-Dienst) statt auf den Cloudflare Worker
dogfather-universe-postfach.dogfather1608.workers.dev.
2026-08-05 19:15:25 +02:00
DogFatherGit e87aca3019 Postfach/Team-Verwaltung/Supporter-Abo als Node.js/Express-Server portiert
Vollständiger 1:1-Port des cloudflare-worker/ (dogfather-universe-postfach)
auf server-internal/: Bewerbungs-Postfach mit Rollen/Rechten, Team-
Zugangsverwaltung (verschlüsselte Owner-only-Codes), DogiCrew-Supporter-Abo
(PayPal Subscriptions, Google-Login, Resend-E-Mail, 30-Monats-Prämienzyklus)
und automatische TikTok-Live-Erkennung. D1 -> better-sqlite3, Cloudflare-
Cron -> node-cron. Läuft ohne gesetzte Secrets weiter (PayPal/Google/Resend/
Ticketanizer/Discord bleiben "nicht konfiguriert" statt kaputt), bis die
echten Zugangsdaten eingetragen werden.
2026-08-05 18:57:19 +02:00
DogFatherGit e331965bf1 Alle ausstehenden Aenderungen (Bilder, Texte) fuer den Server-Umzug uebernommen 2026-08-05 18:05:53 +02:00
DogFatherGit 9af0698056 Node.js/Express-Server als Ersatz fuer den Cloudflare gate-worker.js 2026-08-05 17:29:58 +02:00
DogFatherGit 84bf6e2a68 Fix: Kategorie-Menü schloss sich beim Runterfahren zur Auswahl (Hover-Lücke)
Der margin-top:12px, den ich für den Verbindungs-Pfeil ergänzt hatte,
erzeugte eine echte Lücke zwischen Knopf und Menü. Bewegte man die Maus
gerade runter, um einen Menüpunkt auszuwählen, verließ der Zeiger kurz
.nav-group (die Lücke gehört layoutmäßig zu keinem der beiden), das
Hover-abhängige Menü klappte sofort zu — Klicken wurde unmöglich. Fix:
Box sitzt wieder bündig an top:100% (keine Lücke), der Pfeil pokt jetzt
direkt in die Knopf-Kante statt in einen Leerraum.
2026-08-03 03:46:11 +02:00
DogFatherGit 648a28ec11 bewerben.html: Mitten-Emblem zum "Reaktorkern" umgebaut
Vorher: flacher zweifarbiger Kreis (hart 48/52 geteilt Blau/Rot) mit
Blitz-Emoji. Jetzt: dunkle Kern-Mitte mit separat rotierendem Farbring
dahinter (::before, conic-gradient Blau→Lila→Rot) — der Ring dreht sich,
der Blitz bleibt aufrecht stehen statt mitzudrehen. Größer (60px statt
42px), stärkerer Textschatten am Blitz, kräftigerer Puls-Glow. Zwei
kollidierende alte CSS-Regeln für denselben Selektor zu einer sauberen
zusammengeführt.
2026-08-03 03:41:47 +02:00
DogFatherGit 50ba908317 Fix: Kategorie-Dropdown war NIE wirklich zentriert (echter Bug, nicht nur Wahrnehmung)
Root Cause: die geteilte @keyframes sprach-dropdown-in setzt "transform"
als GANZES pro Frame (nur translateY+scale) — das überschrieb nach jedem
Öffnen komplett das zentrierende translateX(-50%) der Basis-Regel, die
Box sprang dadurch sichtbar ~halbe Boxbreite nach rechts. Fix: eigene
@keyframes nav-dropdown-in NUR für .nav-dropdown, die translateX(-50%)
in jedem Frame mitführt. Der rechtsbündige Sprachschalter (kein
translateX nötig) behält bewusst die alte, geteilte Animation. Im
mobilen Hamburger-Menü (<1480px, volle Breite) wird die Animation ganz
deaktiviert, damit translateX(-50%) dort nicht die Vollbreiten-Box
verschiebt.
2026-08-03 03:21:31 +02:00
DogFatherGit 5c049ce2d7 bewerben.html: Bewerbungs-Karten komplett neu inszeniert ("ultra von ultra"), Farben unverändert
Neue Klasse .card-duel: rotierender Farbring exakt am Kartenrand,
driftender Aurora-Glow im Hintergrund, leuchtende Icon-Badges statt
schlichter Rahmen-Tags, dramatischer Hover-Lift mit Farbexplosion.
Trennwand + Blitz-Emblem in der Mitte zum pulsierenden "Energiekern"
mit Doppelring und fließendem Lichtstrom aufgewertet. Seitenlabels
bekommen einen leuchtenden Unterstrich. Alle Effekte nutzen bewusst
dieselben --accent/--accent-2-Variablen, die pro Karte schon gesetzt
waren (Community weiterhin babyblau/lila, Agentur weiterhin rot/orange
vom Spicy-Media-Theme) — Farbwelt bleibt exakt erhalten, nur die Machart
ist komplett neu.
2026-08-03 03:16:06 +02:00
DogFatherGit ea8fe6c6ab Kategorie-Dropdown: Verbindungs-Pfeil (Caret) ergänzt, damit die Box unmissverständlich der Kategorie oben zugeordnet wirkt
Die Zentrierung war rechnerisch schon exakt (Dropdown-Mitte = Button-
Mitte), aber weil die Box (5 Menüpunkte) breiter ist als ein einzelner
Kategorie-Knopf, ragt sie optisch in Nachbar-Kategorien hinein und wirkt
dadurch "nicht zugeordnet". Jetzt zeigt ein kleiner Pfeil mittig unter
dem Knopf eindeutig auf die zugehörige Kategorie (Standard-Dropdown-UX-
Pattern). Im mobilen Hamburger-Menü (<1480px, dort volle Breite/statisch
positioniert) wird der Pfeil ausgeblendet, da dort nicht sinnvoll.
2026-08-03 03:10:53 +02:00
DogFatherGit 20f9b516fe .btn-holo verkleinert (war zu riesig), Look/Effekte bleiben komplett erhalten
Padding/Schrift/Sparkles/Ring-Dicke proportional reduziert (~35% kleiner),
alle Animationen (Farbverlauf, Glare, Sparkle-Twinkle, pulsierender Halo)
unverändert.
2026-08-03 02:48:43 +02:00
DogFatherGit a28cfbf08a .btn-holo deutlich aufgewertet: größer, kräftiger, mit Medaillen-Ring und pulsierendem Halo-Glow
Auf Wunsch ("richtig geiles, mega schönes, das Beste vom Besten") spürbar
verstärkt: größere Maße (Padding/Schrift), Versalien-Schrift, dickerer
heller Rand, zusätzlicher dunkler+heller Doppelring per box-shadow (wie
ein Rarity-Rahmen), permanent pulsierender Farbglow (nicht mehr nur bei
Hover), schnellerer/kräftigerer Glare-Sweep, größere und auffälligere
Sparkles, deutlicherer Hover-Pop (Scale + Farbglow-Ausbruch).
2026-08-03 02:43:49 +02:00
DogFatherGit 1ab188dcb7 hasidog.html: "Erschaffer"-Button nutzt jetzt den neuen .btn-holo-Stil statt .btn-legendary 2026-08-03 02:36:20 +02:00
DogFatherGit d23f04ad2a Neuer "Mega"-Button-Stil auf Vorrat: .btn-holo (Holo-Foil-Effekt)
Zweite Variante auf demselben Qualitätsniveau wie .btn-legendary, aber
mechanisch komplett anders (auf Wunsch von Dogi: "verschiedene, aber auf
dem Niveau"). Statt dunklem Hintergrund + hellem Rand/Chrome-Text ist hier
die GESAMTE Pille eine wandernde Holo-Foil-Fläche im Marken-Farbverlauf
(Babyblau → Lila → Pink → Gold), mit diagonalem Glare-Sweep wie echtes
Folienlicht, feinem Foliekorn (SVG-Turbulence) und dunkler geprägter
Schrift obendrauf. Noch nirgends im Einsatz — fertig zur Verwendung mit
.btn-holo/.btn-holo-text/.btn-holo-spark, Beispiel-Markup im CSS-Kommentar.
2026-08-03 02:30:05 +02:00
DogFatherGit 653dbda302 hasidog.html: zwei Buttons ersetzt durch einen "Erschaffer"-Button zu streamer.html
Vorher "Zur Casper-Seite" + "Zur Community" (2 Buttons) in der "Wer ist
HasiDog?"-Sektion. Jetzt nur noch EIN Button "Erschaffer", der zur
Streamer-Seite (streamer.html) führt — im "mega" .btn-legendary-Stil
(Babyblau/Silber, Chrome-Textglanz, Sparkles, Halo-Glow), gleiche Optik
wie der neue Casperlino-Button. Alte i18n-Keys hd_btn_casper/
hd_btn_community entfernt (waren nur hier verwendet), neuer Key
hd_btn_erschaffer in allen 5 Sprachen ergänzt.
2026-08-03 02:18:26 +02:00
DogFatherGit f3e465736c streamer.html: neuer "Casperlino"-Button unter dem Casper-Text, verlinkt zu casper.html
Neue CSS-Klasse .btn-legendary: eigener, besonders edler Button-Stil in
Babyblau + Silber (Chrome-Textglanz, rotierender Rand, Sparkles,
pulsierender Halo-Glow) — gleiche Machart wie .btn-silver, aber in der
Marken-Akzentfarbe und größer/kräftiger für einen "legendären" Auftritt.
Neuer i18n-Key str_casperlino_btn (Name bleibt in allen 5 Sprachen gleich).
2026-08-03 02:08:36 +02:00
DogFatherGit 33019cdbc3 Herkunfts-Fakt korrigiert: in Luxemburg geboren, portugiesische Wurzeln (nicht gebürtiger Portugiese)
Betraf df_wer_1 (dogfather.html) und str_intro1 (streamer.html): stand
vorher fälschlich "gebürtiger Portugiese, lebt seit Februar 2026 in
Luxemburg" — korrekt ist: in Luxemburg geboren und aufgewachsen, mit
portugiesischen Wurzeln und Temperament. Alle 5 Sprachen korrigiert
(de, de-CH, en, fr, pt), inkl. der statischen HTML-Fallback-Texte.
2026-08-03 01:57:21 +02:00
DogFatherGit c940538b1d PWA-Installierbarkeit: Seite kann jetzt als App installiert werden (Desktop-Icon)
Recherche (developer.chrome.com, Lighthouse-Doku, Stand 2026): Chrome/Edge
zeigen "App installieren" bei gültigem Web App Manifest (name, icons inkl.
512x512, start_url, display:standalone) UND einem registrierten Service
Worker mit fetch()-Handler — reines Manifest reicht für den zuverlässigen
Install-Prompt nicht mehr aus.

- Neues manifest.json (Name, Theme-/Hintergrundfarbe passend zum dunklen
  Design, Icons 192x192 + 512x512 aus dem bestehenden Husky-Favicon erzeugt)
- Neuer sw.js: minimaler Service Worker, primär für die Installierbarkeit,
  cached nebenbei die wichtigsten Shell-Dateien (Network-first mit
  Cache-Fallback, kein Offline-Vollausbau)
- main.js: registriert den Service Worker nur bei http(s) (nie bei
  file://, damit die Seite laut Projektregel weiterhin per Doppelklick
  ohne Server funktioniert — stiller Fallback statt Konsolenfehler)
- Alle 28 HTML-Seiten: <link rel="manifest"> + <meta name="theme-color">
  im <head> ergänzt (identischer Ankerpunkt nach dem Favicon-Link geprüft
  und automatisiert eingefügt)

Installation für Dogi: Seite in Chrome/Edge öffnen → Symbol rechts in der
Adressleiste ("App installieren") oder Menü ⋮ → "DogFather Universe
installieren" → landet als eigenes Fenster + Icon auf Desktop/Startmenü.
2026-08-03 01:50:56 +02:00
DogFatherGit c4be588f05 Scout-Manager-Button: von manager.html entfernt, auf streamer.html vergrößert
- manager.html: Button war dort redundant (Seite selbst ist die Manager-
  Seite) — komplett entfernt, unbenutzten i18n-Key mgr_scoutmanager_btn
  in i18n-manager.js mit aufgeräumt.
- streamer.html: Button bleibt, aber auf Wunsch NUR dort größer (Padding/
  Schriftgröße per Inline-Style, da .btn-spicy-mini eine geteilte Klasse
  ist und andere zukünftige Verwendungen nicht beeinflusst werden sollen).
2026-08-03 01:06:38 +02:00
DogFatherGit 0d4dcb8ec3 streamer.html: "Scout-Manager"-Button auch im Spicy-Media-Block ergänzt (wie auf manager.html)
Gleiche Stelle, gleiche Optik (.btn-spicy-mini, Link zu team-scouts.html)
wie auf manager.html. Neuer i18n-Key str_scoutmanager_btn in allen 5
Sprachen ergänzt (eigenes Wörterbuch, da streamer.html i18n-streamer.js
statt i18n-manager.js nutzt).
2026-08-03 01:03:23 +02:00
DogFatherGit 7210a00763 Audit-Runde 1: i18n-Lücke auf profil.html gefixt, liegengebliebene Änderungen aufgeräumt
- profil.html: h1-Platzhalter "Profil" flackerte vor JS-Ladevorgang ungeuebersetzt
  auf (Portugiesisch waere "Perfil" gewesen) -> neuer Key pr_loading in
  i18n-profil.js mit allen 5 Sprachen, data-i18n-Attribut ergänzt.
- Manager-Seite: bereits vorbereiteten, vollständig übersetzten "Scout-Manager"-
  Button (Link zu team-scouts.html) und die dazugehörige Marina-Kartenänderung
  in data-modis.js commitet -- lagen unverändert und konsistent im Arbeitsverzeichnis,
  aber nie eingecheckt.
- _check.jpg entfernt: unreferenzierter Screenshot-Rest aus einer alten
  Verifikations-Session, wurde bisher unnötig mitdeployed (Regel: keine
  Debug-/Test-Dateien im Website-Root).
2026-08-03 00:54:37 +02:00
DogFatherGit d73eb82e70 Marina: neuer Zusatz-Button "Zur Manager-Seite" auf ihrer Team-Modi-Karte + neues kleines Avatarfoto
- team-modis.html: Kartenraster generiert jetzt optional einen zweiten
  Button pro Person (m.extraCta in data-modis.js), aktuell nur bei Marina
  gesetzt (führt zu manager.html). Card-Markup dafür von <a> auf <div> mit
  innerem display:contents-Link umgestellt, damit kein Link im Link
  verschachtelt wird (ungültiges HTML). Alle anderen Karten unverändert.
- Neue CSS-Klasse .btn-spicy-mini: kompakter Polarlicht-Button in den
  Spicy-Media-Markenfarben (Rot/Orange), gleicher Mechanismus wie
  .btn-tiktok/.btn-silver.
- assets/img/avatar-marina.jpg (das KLEINE Foto, z.B. Pyramide-Karte)
  durch neues Foto ersetzt und quadratisch zugeschnitten. Das große Foto
  (card-marina.jpg) bleibt unverändert, wie gewünscht.
2026-08-03 00:11:21 +02:00
DogFatherGit 47da9bce95 Marinas Profiltext ersetzt durch ihre ausführliche, persönliche Vorstellung (bioHtml)
Ersetzt den bisher sehr kurzen bio-Text auf ihrer Profilseite durch die
vollständige Selbstvorstellung (Name, Rolle im Team, Hobbys, Stärken,
persönliche Note, Foto-Hinweis, Signatur), gleiches Muster wie bei
Bananenstift (bioHtml, breiter Lesebereich auf profil.html). Alle 5
Sprachen (de, de-CH als echter Dialekt, en, fr, pt) vollständig übersetzt.
2026-08-03 00:05:45 +02:00
DogFatherGit 087fd79cb9 streamer.html: Spicy-Media-Agency-Block zusätzlich eingebunden (wie auf manager.html)
Auf Wunsch (02.08.2026): derselbe Block (Logo rechts, Text links, rote
Rahmenoptik) wie auf manager.html jetzt auch auf streamer.html — zwischen
der Signatur "– euer DogFather" und der "Mehr entdecken"-Sektion, in
gleicher Größe/Optik. Eigene i18n-Keys (str_spicy_h2/p1/p2) ergänzt, da
streamer.html ein eigenes Wörterbuch (i18n-streamer.js) nutzt.
2026-08-02 23:56:20 +02:00
DogFatherGit 05443409dc manager.html: Spicy-Media-Logo auf die rechte Seite verschoben (Text jetzt links) 2026-08-02 23:07:35 +02:00
DogFatherGit cf5c97b6f0 manager.html: Spicy Media Agency wieder als eigene 2-Spalten-Sektion, im selben Stil wie "Das bin ich als Manager"
Auf Wunsch (02.08.2026): sollte aussehen wie die Sektion "Das bin ich als
Manager" weiter oben (Foto/Logo groß links, Text rechts als eigene grid-2-
Sektion) statt als kleines Float-Bild im Fließtext eingeschmolzen zu sein.
Signatur ("Euer Dogi") bleibt am Ende des Bio-Textes, direkt danach folgt
die neue eigenständige Spicy-Media-Sektion.
2026-08-02 22:45:35 +02:00
DogFatherGit 09f21981b2 manager.html: Spicy-Media-Logo im Fließtext größer + mit echter Foto-Rahmenoptik (Polarlicht-Glow)
Vorher schlichtes freischwebendes Bild ohne Rahmen. Jetzt dieselbe
.collage-photo-Optik (roter Rahmen/Glow, passend zur Marke) wie bei den
anderen Fotos der Seite (z.B. DogFather-Portrait), Größe von 180px auf
260px erhöht, läuft weiterhin nur rechts im Fließtext mit.
2026-08-02 22:40:32 +02:00
DogFatherGit 641944c5be manager.html: Reihenfolge in mgr_team_lead geändert zu "Als Scout, Creator oder Manager" 2026-08-02 22:38:06 +02:00
DogFatherGit 63bf8a4858 manager.html: Spicy-Media-Agency-Block in den Fließtext eingeschmolzen, Logo läuft nur rechts mit
Vorher eigene 2-Spalten-Sektion (Logo links, Text rechts) ganz unten auf
der Seite, losgelöst vom übrigen Bio-Text. Jetzt Teil des durchgehenden
Manager-Fließtexts direkt darüber: Logo als rechtsbündiges Float-Bild,
Text (Überschrift + 2 Absätze) läuft natürlich drumherum, danach clear:both
vor der Signatur. Eigenständige Sektion entfernt, i18n-Keys unverändert
wiederverwendet.
2026-08-02 22:28:58 +02:00
DogFatherGit 458c442b46 manager.html: Überschrift über der 3er-Kiste geändert zu "Willst du dazugehören?" + Untertitel
"Das Team dahinter" ersetzt durch "Willst du dazugehören?" mit neuem Lead-
Satz "Als Creator, Scout oder Manager — bewirb dich direkt." darunter,
passt besser zur Bewerbungs-Ausrichtung der Kiste (Scouts/Creator/Bewerbung).
Neuer i18n-Key mgr_team_lead in allen 5 Sprachen ergänzt.
2026-08-02 22:24:31 +02:00
DogFatherGit 53e33719e8 manager.html: Bewerbungs-Hinweise zu einer 3er-Kiste zusammengefasst (Scouts | Creator | Bewerbung)
Vorher waren Bewerbungs-Touchpoints auf der Seite verstreut: Scouts/Creator-
Kartenraster (2 Kisten) UND direkt darunter eine separate "Willst du
dazugehören?"-CTA-Sektion mit eigenem Button — wirkte redundant/zu viel.
Jetzt eine einzige, klare 3er-Kiste (grid-3): Scouts, Creator, Bewerbung.
Die separate CTA-Sektion entfällt dadurch komplett. Alte i18n-Keys
(mgr_cta_h2/mgr_cta_lead/mgr_cta_btn) entfernt, neue (mgr_bewerbung_h3/
mgr_bewerbung_p) in allen 5 Sprachen ergänzt.
2026-08-02 22:22:18 +02:00
DogFatherGit a3c4167bdb Fix: horizontales Wegwisch-Scrollen auf schmalen Bildschirmen (Handy) behoben
Tagescheck-Fund: overflow-x:hidden war nur auf <body> gesetzt, das
tatsächliche Scroll-Element im Standards-Modus ist aber <html>. Dadurch
ließ sich die Seite auf Handy-Breiten (320-414px, z.B. iPhone SE/12/13/14)
ca. 50px horizontal wegwischen und zeigte Leerraum hinter den absichtlich
überbreiten Deko-Elementen (Nebel-Partikel, Aurora-Hintergrund auf der
Startseite). Betraf vermutlich schon länger alle Seiten, nicht nur die
heutigen Änderungen. Fix: overflow-x:hidden zusätzlich auf <html>.
2026-08-02 21:02:06 +02:00
DogFatherGit fa7c644917 VanVan-Seite: Text gezielt wieder etwas verkleinert (site-weite Vergrößerung wirkte hier zu groß), restliche Seiten unverändert 2026-08-02 20:50:52 +02:00
DogFatherGit 9725cdf3cf Fließtext deutlicher vergrößert (vorheriger Schritt war zu subtil, kaum wahrnehmbar) 2026-08-02 20:37:17 +02:00
DogFatherGit 77d3d6736a Präsentationsfotos site-weit aufgewertet: Rahmenfarbe jetzt auch als Rimlight-Bloom im Bild selbst, Vignette + Filmkorn + kräftigerer Look
Der animierte Polarlicht-Rahmen (.collage-photo) war schon "mega", aber der
Bildinhalt selbst wirkte bei einfachen Portraitfotos flach im Vergleich zu
aufwendig gestalteten Postern wie dem DogFather-Manager-Artwork. Jetzt
bekommt JEDES Foto in .collage-photo (betrifft automatisch alle Seiten:
DogFather, HasiDog, Casper, VanVan, Team-Profile via profil.html, Startseiten-
Collage, Streamer-Seite etc.) zusätzlich:
- zwei Farbschein-Blooms in der jeweiligen Rahmenfarbe (--frame), oben-links
  und unten-rechts, wie ein Studio-Rimlight
- eine sanfte Vignette unten für Tiefe/Fokus aufs Gesicht
- feines Filmkorn (SVG-Turbulence) für einen "produzierten" Look
- kräftigere Sättigung/Kontrast auf dem Foto selbst
2026-08-02 20:33:13 +02:00
DogFatherGit ab8a994225 Fließtext site-weit nochmal minimal vergrößert (p/.lead/.quote/h2/h3) 2026-08-02 20:28:48 +02:00
DogFatherGit 160704acab Fließtext-Schriftgröße site-weit vergrößert (nicht mehr nur auf vanvan.html)
- Basis-Regeln für p/.lead/.quote/h2/h3 in main.css angehoben (vorher
  Standard-Browsergröße bzw. kleine clamp-Werte), betrifft jetzt alle
  Seiten automatisch statt nur einzelne Seiten mit Extra-<style>-Block
- vanvan.html: lokalen, jetzt redundanten <style>-Override entfernt
  (Werte sind identisch mit den neuen globalen main.css-Regeln)
- Kleingedrucktes (Footer, Badges, Formular-Fehlermeldungen etc.) bleibt
  unverändert, da diese über spezifischere eigene font-size-Regeln verfügen
2026-08-02 20:19:13 +02:00
DogFatherGit 01940dffc5 VanVans Rollenbezeichnung um "Unternehmerin" ergänzt (team-modis.html, vanvan.html-Hero, Profil), alle 5 Sprachen 2026-08-02 20:07:49 +02:00
DogFatherGit ea36976dbd Funnys Rollenbezeichnung geändert: "Mama der Community" -> "Große Schwester der Community" 2026-08-02 20:02:41 +02:00
DogFatherGit 677bae1bf2 VanVan-Hauptfoto ins Hochformat geändert (3:4 statt 1:1) 2026-08-02 19:54:25 +02:00
DogFatherGit 1f9537e5c9 VanVan-Seite: Fotos getauscht (echtes Foto <-> Team-Dogi-Grafik), Silber-Button aufgewertet und Buttons vergrößert
- Hauptfoto oben ("Wer ich bin") zeigt jetzt das echte VanVan-Foto
  (vorher: illustrierte Team-Dogi-Grafik), diese wandert dafür in den
  "Was Team Dogi für mich bedeutet"-Bereich
- .btn-silver ("Coming soon") komplett neu gestaltet: Chrome-Metallic-
  Textverlauf, rotierender Metallrand-Schimmer, funkelnde Sparkle-Akzente,
  pulsierender Halo-Glow statt reiner Farbkopie von .btn-tiktok
- .btn-tiktok und .btn-silver vergrößert (Padding/Schrift), wirkt sich
  automatisch auf alle TikTok-Buttons site-weit aus
2026-08-02 19:52:11 +02:00
DogFatherGit c98667cb99 vanvan.html: größeres Foto, größerer Text, neuer "Coming soon"-Button
- Foto in der "Wer ich bin"-Sektion vergrößert (Grid-Spalten von 1:1 auf
  1.25:1 zugunsten des Fotos).
- Fließtext/Lead/Zitate/Überschriften auf der ganzen Seite spürbar
  größer (eigener <style>-Block, nur für diese Seite).
- Neuer .btn-silver-Button-Stil (gleicher Polarlicht-Mechanismus wie
  .btn-tiktok, nur in Silber) direkt unter dem TikTok-Button, Text
  "Coming soon…" für VanVans zweiten, noch nicht gestarteten Kanal.
2026-08-02 19:36:13 +02:00
DogFatherGit cabfebb8e5 Kategorie-Menüs öffnen jetzt bei Hover (Maus), nicht erst beim Klick
Auf echten Maus-Geräten (hover:hover + pointer:fine) klappt das
Untermenü schon beim Drüberfahren auf. Klick-Verhalten bleibt für
Touch/Tablet UND für Tastatur-/Klick-Nutzer weiterhin bestehen — beide
Wege funktionieren parallel.
2026-08-02 18:57:30 +02:00
DogFatherGit d41ad02ed8 Kategorie-Knöpfe (Start/DogFather/HasiDog/Manager/Medien/Links) sehen nicht mehr wie Buttons aus
Der Polarlicht-Schein war bisher permanent sichtbar (22% Deckkraft),
dadurch wirkten alle Kategorien wie ausgefüllte Pillen-Buttons statt wie
normale Nav-Links. Jetzt 0% im Ruhezustand (reiner Textlink-Look) und
nur bei Hover/offenem Dropdown ein dezenter Farbschein als Hinweis.
2026-08-02 18:49:59 +02:00
DogFatherGit a814d7c702 Kategorie-Untermenü: keine Button-Optik mehr, nur schlichte Menüzeilen
Die aufgeklappten Einträge (z.B. "Die Person", "Streamer", "Casper" im
DogFather-Menü) hatten Pillen-Hintergrund + linken Farbbalken bei Hover
— sah zu sehr nach eigenen Buttons aus. Jetzt schlichte Textzeilen, nur
Farbwechsel bei Hover. Die Kategorie-Knöpfe selbst (DogFather/HasiDog/
Manager/...) bleiben unverändert Pillen. Sprachschalter-Dropdown
(eigene, spezifischere Regeln) ebenfalls unverändert.
2026-08-02 18:41:14 +02:00
DogFatherGit 4d18ce70ec Michi komplett aus der Website entfernt (nicht mehr Teil des Teams)
Auf Wunsch: Michi gehört nicht mehr dazu. Entfernt:
- Kompletter Personeneintrag aus data-modis.js (team-modis.html +
  profil.html?p=michi zeigen sie dadurch automatisch nicht mehr an).
- Erwähnung in der Team-Hierarchie-Doku, im "von VanVan bis Michi"-
  Lead-Text (jetzt "...bis Marina", alle 5 Sprachen) und in Meta-
  Beschreibungen/OG-Tags/Twitter-Tags auf team-modis.html.
- Ungenutzte Bilddateien avatar-michi.jpg + card-michi.jpg gelöscht.
2026-08-02 18:20:08 +02:00
DogFatherGit d7300a817d profil.html: Aufzählungslisten in bioHtml sahen unbeabsichtigt fett aus
Ursache: <li> hatte keine eigene Textfarbe und erbte die helle
Standardfarbe, während <p> bewusst gedimmtes --text-muted nutzt — der
Kontrast wirkte wie Fettschrift, obwohl es nur ein Farbunterschied war
(betraf z.B. Bananenstifts "Dabei helfe ich unter anderem bei:"-Liste).
Jetzt gleiche Farbe wie Fließtext, plus echte Aufzählungspunkte (Accent-
Farbe) und sauberer Absatz-Abstand.
2026-08-02 17:28:59 +02:00
DogFatherGit 88ea8f216c Header-Logo: "DogFather"-Schriftzug wieder ergänzt
Nutzer-Feedback: der Name fehlte im engeren Zuschnitt komplett. Jetzt
Husky-Kopf UND "DOGFATHER"-Schriftzug zusammen, weiterhin eng auf die
riesigen weißen Ränder des Originals zugeschnitten (nicht die volle
1024x1024-Leinwand wie ganz am Anfang), damit beides in der kleinen
Header-Badge sichtbar bleibt.
2026-08-02 17:00:21 +02:00
DogFatherGit 947cf1cea2 Header-Logo: eng auf den Husky-Kopf zugeschnitten, viel besser sichtbar
Das Original hatte riesige weiße Ränder rundherum und den "DOGFATHER"-
Schriftzug drunter — bei der kleinen Header-Badge-Größe (42x42px) blieb
vom Husky kaum mehr als ein winziger Fleck übrig. Jetzt eng auf den
Kopf zugeschnitten (Schriftzug entfernt, war bei der Größe eh nicht
lesbar) und auf ein quadratisches Format gepolstert, damit object-fit:
cover die Ohren nicht anschneidet.
2026-08-02 16:57:03 +02:00
DogFatherGit 35f8e00873 Logo/Markenname im Header ganz leicht vergrößert
Brand-Schrift 1.24rem -> 1.32rem, Logo 38px -> 42px, Untertitel .66rem -> .7rem.
2026-08-02 16:41:22 +02:00
DogFatherGit 9d3efeae70 Kategorie-Dropdowns aufgehübscht (waren schlichte graue Kästen)
Gleicher gläserner Dropdown-Stil wie beim Sprachschalter, aber im
Farbton der jeweiligen Kategorie statt neutral: dunkle Karte mit
farbigem Schein (--brand-1/--brand-2, jetzt am .nav-group statt am
Button gesetzt, damit Button-Aurora UND Dropdown denselben Farbklang
teilen), Einträge mit farbigem linkem Rand + leichtem Rutsch-Effekt bei
Hover statt der vorherigen einfachen grauen Hervorhebung.
2026-08-02 16:39:26 +02:00
DogFatherGit 05e3528430 Nav-Bar: Abstand zwischen Kategorien wieder verkleinert (wirkte zu extrem)
Seit die Kategorien eigene farbige Polarlicht-Pillen haben, trennt die
Farbfläche schon optisch selbst — der vorherige große Gap (2.4rem)
wirkte dadurch übertrieben. Auf .7rem reduziert für einen kompakteren,
saubereren Look.
2026-08-02 16:37:12 +02:00
DogFatherGit cf66790a50 Nav: "Links"-Kategorie fehlte der Polarlicht-Farbschimmer
Beim letzten Umbau vergessen — jetzt mit Babyblau/Gold ergänzt, damit
wirklich jede Kategorie in der Leiste ihren eigenen dezenten Farbschein
hat, nicht nur DogFather/HasiDog/Manager/Medien/Start.
2026-08-02 16:34:13 +02:00
DogFatherGit 71e4c19c3a hasidog.html: Überschrift "Was ist HasiDog?" zu "Wer ist HasiDog?"
In allen 5 Sprachen angepasst (de/de-CH/en/fr/pt).
2026-08-02 16:32:40 +02:00
DogFatherGit 32e63d8ad7 Fix: Nav-Bar überlief bei ~1400px (durch vorherige Änderung verursacht)
Der Wechsel auf justify-content:flex-start + größere Gaps + horizontales
Button-Padding hat die nötige Content-Breite über den 1180px-Container-
Deckel getrieben (bei 1400px Viewport 1523px vs. 1180px verfügbar).
Behoben: eigener, breiterer .nav-bar-Container (1180px -> 1400px, nur
für den Header, .container für den restlichen Seiteninhalt bleibt
unverändert bei 1180px), fester statt viewport-wachsender Bewerben-Gap,
Button-Padding von .8rem auf .55rem reduziert, Hamburger-Schwelle auf
1480px angehoben. Vor dem Commit bei mehreren Breiten numerisch
(scrollWidth vs. clientWidth) UND per Screenshot verifiziert.
2026-08-02 16:30:03 +02:00
DogFatherGit eba4a13345 Nav-Bar: Menü näher ans Logo (statt rechts an die Kante gepresst) + Polarlicht-Kategorien
- .nav-bar: justify-content von space-between auf flex-start + eigenen
  Gap gewechselt — Menü rückt näher ans Logo, übriger Platz bleibt rechts
  statt als große Lücke zwischen Logo und "Start" zu klaffen.
- .nav-links Abstand nochmal erhöht (2.1rem -> 2.4rem), da "Start"/
  "Manager" laut Rückmeldung immer noch zu eng wirkten.
- Jede Nav-Kategorie (DogFather/HasiDog/Manager/Medien/Start) bekommt
  jetzt einen dezenten, augenschonenden Polarlicht-Schimmer in den
  ECHTEN Farben ihrer jeweiligen Welt (aus theme-dogfather/-hasidog/
  -spicymedia.css) — ruhig im Normalzustand, etwas kräftiger bei Hover/
  offenem Dropdown. "Links" bleibt bewusst neutral (keine eigene Welt).
2026-08-02 16:27:38 +02:00
DogFatherGit a0ccf38902 Nav-Bar: mehr Abstand zwischen den Menüpunkten (Start/Manager wirkten zu eng)
.nav-links gap von 1.6rem auf 2.1rem erhöht. Hamburger-Schwelle
entsprechend von 1260px auf 1320px nachgezogen, damit bei mittleren
Laptop-Breiten weiterhin alles sauber passt statt zu überlaufen.
2026-08-02 16:10:26 +02:00
DogFatherGit ad9848a1d4 Fix: Nav-Bar überlief bei mittleren Laptop-Breiten (~900-1250px)
Beim Tagescheck-Selbstaudit gefunden: nach der Header-Vergrößerung vom
letzten Deploy (Logo/Schrift/Sprachschalter/Bewerben-Button größer)
passte die Desktop-Nav bei Viewport-Breiten zwischen ~900 und ~1250px
nicht mehr in eine Zeile — Sprachschalter und Bewerben-Button
verschwanden sichtbar rechts aus der Leiste, ohne dass der mobile
Hamburger-Umbruch (bisher erst ab 880px) schon gegriffen hätte.
Hamburger-Schwelle auf 1260px angehoben, damit die enge Zone komplett
vom mobilen Menü statt der zu schmalen Desktop-Zeile abgedeckt wird.
2026-08-02 16:04:53 +02:00
DogFatherGit 3298581a4f links.html: alle Plattform-Karten größer + echte Markenfarben
- .card-tiktok zu generischem .card-brand-System umgebaut (--brand-1/2/3
  Custom Properties statt Duplikat pro Plattform).
- Instagram (lila/pink/orange-Verlauf), Snapchat (Gelb), Discord
  (Blurple #5865F2), Merchandise/Shop (Gold/Amber) und Bewerben (Site-
  Akzentfarben) bekommen jetzt denselben Polarlicht-Farbstil wie TikTok
  vorher schon — auf Wunsch, "so wie die von TikTok".
- Karten größer: mehr Padding, größere Icons (eigenes .icon-badge-Element
  statt Emoji inline im Text), größere Schrift, breiteres Grid (800px →
  1040px).
2026-08-02 15:33:26 +02:00
DogFatherGit 83c7310533 CLAUDE.md: Arbeitsanweisungen/Qualitäts-Checkliste für dieses Projekt
Auf Wunsch von Dogi dauerhaft festgehalten: Perfektionsanspruch, i18n-
Pflicht für jeden Text (inkl. JS-gerenderte Strings), Validierungs- und
Verifikations-Workflow vor/nach jedem Deploy, Chrome-Test-Sicherheits-
regel, Nachaudit-Pflicht nach größeren Batches. Spiegelt die
ausführlichere Fassung im Vault (DogFather Website.md).
2026-08-02 14:47:17 +02:00
DogFatherGit 4c5f994d5a Fix: "Bewerben"-Button (Header) - Herz-Emoji umgebrochen in zweite Zeile
Nach der Größenanpassung passte der Text "Bewerben 🩵" nicht mehr immer
in eine Zeile und das Emoji rutschte darunter. white-space:nowrap +
inline-flex ergänzt, damit Text und Emoji immer in einer Zeile bleiben.
2026-08-02 14:40:24 +02:00
DogFatherGit 12324f312f Startseite + Header: Schrift/Elemente moderat vergrößert
Hero-Bereich (Überschrift, Lead-Text, Live-Status-Box, Buttons, die drei
Welten-Karten) sowie Header (Logo, Markenname, Bewerben-Button, Sprach-
schalter) auf Wunsch spürbar, aber nicht übertrieben vergrößert — wirkte
auf großen Bildschirmen zu klein.
2026-08-02 14:07:59 +02:00
DogFatherGit 7d365e3c48 Alle TikTok-Buttons/-Karten site-weit im neuen TikTok-Farbschema
Der neue .btn-tiktok-Stil (Cyan #25F4EE + Pink/Rot #FE2C55 Polarlicht,
bisher nur auf vanvan.html/dogfather.html) wird jetzt konsequent überall
angewendet, wo es einen echten TikTok-Link gibt:
- profil.html: TikTok-Social-Link (Diene/Miss/Ghost) nutzt .btn-tiktok
  statt generischem .btn-outline, andere Plattformen unverändert.
- streamplan.html: "Zur Dogi TikTok-Seite"-Button jetzt .btn-tiktok.
- links.html: neue .card-tiktok-Variante wendet denselben Polarlicht-
  Mechanismus auf die TikTok-Karte im Karten-Grid an (Kartenform bleibt
  erhalten, damit das Grid nicht durcheinanderkommt), alle anderen
  Plattform-Karten (Instagram/Snapchat/Discord/Shop/Bewerben) bleiben
  im normalen Karten-Stil.
Bewusst NUR TikTok — keine andere Plattform bekommt diese Farben.
2026-08-02 13:38:16 +02:00
DogFatherGit 8048d03fad Neuer TikTok-Button-Stil (Polarlicht-Pille mit echten TikTok-Farben)
Auf vanvan.html und dogfather.html ersetzt ein neuer .btn-tiktok-Button
(gleicher Polarlicht-/Schimmer-Mechanismus wie der "Bewerben"-Button im
Header, aber mit TikTok-Markenfarben Cyan #25F4EE + Pink/Rot #FE2C55
statt der allgemeinen Regenbogen-Aurora) den bisherigen reinen Text-
Handle-Mention. Bewusst NUR für echte TikTok-Links verwendet — keine
anderen Buttons/Links bekommen diese Farben.
2026-08-02 13:32:37 +02:00
DogFatherGit 2daf08d0d5 dogfather.html: PT-Überschrift "Quem é o Filipe?" korrigiert
Portugiesischer Artikel "o" ergänzt (natürlicheres brasilianisches/
europäisches Portugiesisch), wie vom Nutzer gewünscht.
2026-08-02 13:10:29 +02:00
DogFatherGit b0871a8a02 Fix: "Foto folgt"-Platzhalter (Bild-Fehler-Fallback) i18n-fähig gemacht
Gefunden bei systematischem Re-Check aller Seiten: der Platzhaltertext
für fehlgeschlagene Bilder auf index.html (Foto-Collage) und profil.html
war hart kodiert Deutsch. Jetzt über window.dogiUebersetzen() gelöst.
2026-08-02 13:05:59 +02:00
DogFatherGit 4cda20a785 bewerben.html: 🌶️-Emoji bei "Spicy Media" ergänzt, Lead-Text angepasst
"Agentur — Spicy Media" bekommt das Chili-Emoji, Lead-Satz jetzt "Vier
Bewerbungen, drei ganz unterschiedliche Rollen..." (in allen 5 Sprachen).
2026-08-02 11:33:39 +02:00
DogFatherGit b4ff66615f creator.html: Rendering ebenfalls auf dogiFeld() umgestellt (Zukunftssicherheit)
CREATORS ist aktuell noch leer, aber role/quote werden jetzt konsistent
mit team-scouts.html/team-modis.html über dogiFeld() aufgelöst, damit
künftige Creator-Profile automatisch mehrsprachig funktionieren, sobald
sie in data-creator.js ergänzt werden.
2026-08-02 11:31:51 +02:00
DogFatherGit 2eb9fc6897 Team-Personendaten (role/bio/bioHtml/intro/quote) jetzt mehrsprachig
Bisher waren role/bio/bioHtml/intro/quote in data-scouts.js und
data-modis.js reine deutsche Strings — dadurch blieben z.B. Zitate
("Ein Mann, ein Wort.") und Kurzrollen auch bei gewählter Fremdsprache
Deutsch (siehe Screenshot-Hinweis: team-scouts.html in EN zeigte noch
deutsches Zitat).

- main.js: neuer window.dogiFeld()-Helper löst mehrsprachige Feld-Objekte
  { de, "de-CH", en, fr, pt } auf (rückwärtskompatibel zu reinen Strings).
- data-scouts.js: role (Patrick, Bananenstift) + bio (Patrick) + intro/
  bioHtml/quote (Bananenstift) vollständig in allen 5 Sprachen.
- data-modis.js: role (alle 7) + bio (VanVan/Funny/Marina/Michi) +
  bioHtml (Diene/Miss/Ghost) + rankLabel (Ghost) vollständig in allen
  5 Sprachen. Lange bioHtml-Texte von unabhängigen Übersetzer-Agenten
  erstellt, idiomatisch statt wörtlich.
- team-scouts.html, team-modis.html, index.html (Team-Vorschau),
  profil.html: Rendering nutzt jetzt durchgängig dogiFeld() und rendert
  bei Sprachwechsel (dogi-sprache-geaendert) neu — team-modis.html und
  die Team-Vorschau auf index.html haben vorher GAR NICHT auf Sprach-
  wechsel reagiert, das ist jetzt behoben. "Stufe"/"Profil ansehen" auf
  team-modis.html liefen bisher hart kodiert Deutsch, jetzt über
  i18n-team-modis.js.
2026-08-02 11:29:47 +02:00