- index.html (DE+EN): FAQPage mit 7 Q&A, Service-Schema, founder-Person-Stubs mit @id-Referenzen, speakable-Selektoren, sichtbares FAQ-Akkordeon vor Footer, Nav-Eintrag Fragen/FAQ
- lagen/* (DE+EN): Article auf NewsArticle erweitert (deepfakes bleibt Article), plus temporalCoverage, keywords, about, speakable, @id-Refs auf Organization; Dataset-Schema neu mit DataDownload auf current.json
- llms.txt: Umbau auf antwortorientiertes Q&A-Format mit 7 Fragen plus Glossar (OSINT, Lagebild, Faktencheck, IFCN, EUvsDisinfo, Klassifikation)
- sitemap.xml: lastmod auf 2026-05-17
Ziel: bessere Auffindbarkeit und Zitierfaehigkeit in KI-Suche (ChatGPT, Perplexity, Claude, Gemini). 51 Prozent der B2B-Kaeufer recherchieren laut drweb.de-Artikel inzwischen primaer in KI-Chatbots.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Logo-Header: PNG (31.7 KB) -> SVG (6.3 KB) auf 12 Seiten, mit width/height fuer CLS
- loading=lazy auf 25 unter-Fold-Bilder (Feature-/Problem-/Trust-Icons + handshake)
Logo bleibt eager (above-the-fold)
- preconnect zu unpkg.com (CDN fuer Leaflet) im Head von 8 Seiten
Reduziert TLS-Handshake-Verzoegerung beim ersten Leaflet-Asset
Der Monitor uebersetzt im research-Lagebild-Markdown die
Section-Ueberschrift "## Zusammenfassung" zu "## SUMMARY".
extractZusammenfassung und stripZusammenfassung matchten bisher
nur das deutsche Wort, daher zeigte die EN-Variante der
Deepfakes-Recherche eine leere Zusammenfassung.
Beide Funktionen erkennen jetzt 'zusammenfassung' und 'summary'
case-insensitive.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Die /lagen/*/data/-Verzeichnisse sind nicht versioniert (.gitignore),
werden aber im Staging-Container per bind-mount aus dem Live-Pfad
eingeblendet. Bei read_only:true im Container muss das Mountpoint-
Verzeichnis bereits existieren - daher .gitkeep als Platzhalter.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- lagebild.js: tote initLangToggle() und switchContent() entfernt;
initTranslations()-Aufruf aus init() raus (translations.js gibt es
nicht mehr). Kein neues Verhalten, nur Aufraeumen.
- CLAUDE.md aktualisiert: en/situations/-Struktur, Slug-Mapping,
Daten-Freigabe-Konzept, Kontaktformular i18n-Hinweis,
CHANGE_LOG erweitert.
Backend (contact-form.py) wurde live ausgerollt und ist nicht im
Repo (liegt unter /opt/v2-Docker/aegis-website/), Backup unter
contact-form.py.bak.<timestamp>.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Phase 3 - Englische Lagebild-Seiten:
- /en/situations/iran-conflict/, /en/situations/cyber-attacks/,
/en/situations/deepfakes/ erstellt (Mirror der DE-Lagen mit
englischer UI)
- lagebild.js: curLang() liest jetzt direkt <html lang>; neuer
dataBase()-Helper, damit EN-Seiten die JSON-Daten aus dem
DE-Pfad nachladen koennen (window.LAGEBILD_DATA_BASE pro Seite)
- 4 zuvor hardcodierte DE-Strings (emptyDevelopments, emptySummary,
Quelle-Tooltip, Schliessen-Aria) ueber t() und das vorhandene
lang.de/lang.en-Dictionary uebersetzt
- DE-Lagen-Seiten: hreflang-Tags wieder aktiv, Toggle zeigt nun
korrekt auf das EN-Pendant statt /en/
- en/index.html Karussell-Buttons zeigen auf EN-Lagen
- Sitemap mit hreflang-Alternativen fuer alle Lagen ergaenzt
Phase 4 - Kontaktformular zweisprachig (Frontend):
- js/app.js submitContact() liest <html lang>, sendet lang im POST
und zeigt Sende-/Fehler-Texte in der jeweiligen Sprache
- Backend (contact-form.py) wird separat ausgerollt, ist aber
abwaertskompatibel: bei fehlendem lang-Param defaultet es auf de
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- js/translations.js entfernt (war im aktuellen Site-Stand ungenutzt
und passte nicht mehr zur neuen Struktur)
- impressum-en.html und datenschutz-en.html entfernt (durch
/en/legal-notice.html und /en/privacy.html ersetzt)
- data-translate Attribute aus den drei Lagen-Seiten entfernt
- <script src="/js/translations.js"> aus den Lagen-Seiten entfernt
- CLAUDE.md auf neuen Stand gebracht (i18n-Ansatz dokumentiert,
CHANGE_LOG erweitert)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Neuer .lang-switcher Komponente in css/lang-switcher.css, Variante
fuer dunkle Lagebild-Seiten enthalten
- Sprachumschalter im Header und Mobile-Menue aller DE-Seiten
(index, impressum, datenschutz, lagen/*)
- Englische Seiten unter /en/index.html, /en/legal-notice.html und
/en/privacy.html mit kompletter Uebersetzung; rechtliche Texte mit
Hinweis "German version shall prevail"
- hreflang-Tags (de/en/x-default) auf Hauptseite und rechtlichen
Seiten; Lagen-Seiten ohne hreflang bis EN-Versionen existieren
- og:locale + og:locale:alternate gesetzt, Schema.org bleibt
- Sitemap mit xhtml:link Alternates fuer beide Sprachen ergaenzt
- DE-Lagen-Toggle zeigt vorerst auf /en/ (EN-Lagen folgen Phase 3)
- Cookie-Banner liest <html lang> bereits selbststaendig, daher
englisch auf EN-Seiten ohne weitere Aenderung
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- extractZusammenfassung: Header-Zeile aus Inhalt entfernen, damit sie nicht zusaetzlich zur Card-Headline erscheint
- renderSummary: stripZusammenfassung schneidet den Zusammenfassungs-Block raus, damit er exklusiv im Zusammenfassung-Tab gerendert wird
Betrifft research-Typ (Deepfakes). Adhoc-Lagen (Iran, Cyberangriffe) unberuehrt.
Analog Monitor-Aenderung: Pills parsen {Name|URL, Name|URL} direkt und
nutzen die URL aus dem Bullet, statt ueber sources_json-Namen nachzuschlagen.
Damit verweist jeder Pill-Klick eindeutig auf den belegenden Post — keine
Name-Kollisionen mehr (insbesondere bei Telegram-Kanaelen mit mehreren
gleichnamigen sources_json-Eintraegen).
Legacy-Kompat: Items ohne Pipe gehen weiter per lookupByName durch.
Quellen mit nichtlateinischem Namen wie Telegram: persisch-arabisch waren
schwer zuordenbar. Pill-Label bekommt jetzt bei allen Quellen mit URL auf
t.me einen Zusatz Telegram-Link in Klammern. Konsistent an drei Stellen:
Lagebild-Seite renderLatestDevelopmentsHtml und Vorschau renderLatestDevelopments.
Live-Lagen (iran-konflikt, cyberangriffe) bekommen einen neuen ersten Tab
Neueste Entwicklungen mit Bullet-Cards, klickbaren Quellen-Pills und
Zeitstempel. Recherche-Lagen (deepfakes) bekommen an selber Stelle einen
Tab Zusammenfassung, der den Zusammenfassung-Abschnitt aus dem Markdown
extrahiert und mit Citation-Links rendert.
lagebild.js: renderUeberblick, renderLatestDevelopmentsHtml,
extractZusammenfassung ergaenzt. i18n-Keys tabUeberblick/Research.
Lang-Toggle aktualisiert Tab-Label und h2.
Vorschau-Karten zeigen wieder den Lagebild-Text fuer alle Lagen
(renderLatestDevelopments-Calls aus loadLiveData entfernt).
- LANG-Objekt mit de/en Strings für ~40 UI-Elemente
- t() Hilfsfunktion + getLocale() + getHeadline()
- switchContent(): Lädt current_en.json bei Sprachwechsel
- Fallback auf deutsche Version wenn EN nicht verfügbar
- Datumsformatierung sprachabhängig (de-DE / en-GB)
- Artikel-Headlines: Original bei EN, Übersetzung bei DE
- Snapshot-Hinweis bei EN (Historical data in German only)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Cyberangriffe- und Deepfakes-Seiten zeigten \u00dc statt Ü in der Navigation. Ursache: JSON-Encoding wurde auf HTML angewendet. Zusätzlich data-translate-Attribute und Language-Toggle ergänzt.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Lagebild-Karte auf geclusterte Marker umgebaut (primary/secondary als Pulse, rest als CircleMarker). Popups zeigen jetzt Top-Artikel mit Links. Vorschau Hero-Buttons scrollen zum Demo-Karussell statt direkt zu den Lagen.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Neue Seite /lagen/cyberangriffe/ mit 93 Artikeln, 41 Quellen, 28 Locations.
Hero-Slide "Flexibel einsetzbar" verlinkt jetzt auf Cyberangriffe.
Carousel: Platzhalter 2 ersetzt durch Live-Card mit Zusammenfassung.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Neue Seite /lagen/deepfakes/ mit vollstaendiger Recherche zur
rechtlichen Lage von Deepfakes in Deutschland (121 Artikel, 90 Quellen).
Nutzt bestehendes lagebild.css/js aus iran-konflikt.
Vorschau: Dritte Carousel-Card mit Deepfakes-Recherche befuellt,
Hero-Slide Label von KI-Recherche zu KI-gestuetzte Recherche geaendert.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>