205 Commits

Autor SHA1 Nachricht Datum
2e9b979ed7 Promote develop → main (2026-07-23 09:09 UTC) 2026-07-23 11:09:39 +02:00
claude-dev
0492b11cf4 Testzugang: Freemail nicht mehr blockieren, nur Hinweis anzeigen
Alle plausiblen E-Mail-Adressen werden jetzt akzeptiert. Bei einer
Freemail-Adresse erscheint weiterhin der Hinweis, dass fuer einen
Testzugang ausschliesslich dienstliche Adressen von Behoerden oder
Unternehmen beruecksichtigt werden, aber die Anfrage wird nicht mehr
abgewiesen. Hinweis wird als tf-note-warn (Hinweis) statt tf-note-error
(Fehler) dargestellt, kein aria-invalid mehr. Texte de/en und
Modal-Subline entsprechend als Hinweis formuliert.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 10:51:51 +02:00
claude-dev
457f64ef0d Testzugang-Modal: Feld-Layout, Zulassungstext und State-Reset
- Formularfelder im Modal sauber ausgerichtet: Inputs einer Reihe per
  align-items:end buendig, fragiler min-height-Label-Hack entfernt,
  optional-Hinweise brechen nicht mehr unschoen um.
- Zulassungstext praezisiert: ausschliesslich dienstliche Adressen von
  Behoerden oder Unternehmen (de + en, Modal-Subline + Meldung).
- Datenschutz-Fix: Formular wird beim Oeffnen des Modals zurueckgesetzt
  (Felder, Erfolgsmeldung, Fehler), damit kein Nutzer die Eingaben eines
  vorherigen sieht.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 10:48:39 +02:00
claude-dev
8934b1a920 FAQ: DSGVO-Antwort praezisiert (KI-Analyse EU-Rechenzentrum, AVV, lokale Version)
Alte Aussage "keine Daten an Drittlaender uebermittelt" war mit
Cloud-KI-Nutzung nicht haltbar. Neue Fassung nennt EU-Verarbeitung,
kein Training, AVV nach Art. 28 und die lokale Version als souveraene
Option. JSON-LD und sichtbares HTML konsistent aktualisiert.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 10:32:33 +02:00
AegisSight
acb12e28b4 Formularfelder stehen wieder auf einer Linie
Der Zusatz "optional" stand als eigene Zeile unter dem Feldnamen. Dadurch
wurde das Label dreizeilig und das Feld rutschte gegenueber dem Nachbarn
um bis zu 48 Pixel nach unten, die Reihen wirkten schief. Der Zusatz
steht jetzt in derselben Zeile, und die Labels einer Reihe haben eine
gemeinsame Mindesthoehe, damit die Felder unabhaengig von der Textlaenge
auf einer Linie beginnen. Auf dem Telefon steht jedes Feld ohnehin allein,
dort entfaellt die Mindesthoehe.
2026-07-22 23:06:09 +02:00
AegisSight
d5851d8d99 Behoerde und Funktion optional, Pflichtfelder greifen jetzt wirklich
Behoerde oder Organisation und Funktion oder Dienststelle sind optional,
in beiden Sprachen mit Hinweis am Feld. Pflicht bleiben Name, dienstliche
E-Mail und die Einwilligung.

Dabei aufgefallen, das Formular traegt novalidate, damit die
Browsermeldungen die eigene Pruefung nicht ueberlagern. Die Pflichtfelder
wurden dadurch bisher gar nicht erzwungen, ein leerer Name waere
durchgegangen. Die Pruefung liegt jetzt im Skript, mit Meldung und Fokus
auf dem betroffenen Feld. Der Name steht ausserdem mit in der
Anfrage-Mail, da die Organisation leer bleiben kann.
2026-07-22 23:01:23 +02:00
AegisSight
e04a659fe9 Problem-Punkte bleiben in einer Reihe, Anwendungsfall-Karten bundig
Die drei Punkte im Problem-Abschnitt standen ab 1024 Pixel Fensterbreite
abwaerts in zwei Spalten, die dritte rutschte allein in die naechste
Zeile. Sie bleiben jetzt bis 768 Pixel dreispaltig, mit engerem Abstand.
Auf dem Telefon stehen sie weiter untereinander, dreispaltig waere dort
unlesbar.

Bei den Anwendungsfall-Karten brach nur eine Ueberschrift einzeilig um,
die beiden anderen zweizeilig. Dadurch hatte die erste Karte unten 58
Pixel Luft und die anderen 27. Die Ueberschrift hat jetzt zwei Zeilen
Mindesthoehe, alle Absaetze beginnen auf gleicher Hoehe. Auf dem Telefon
entfaellt die Mindesthoehe, dort steht jede Karte fuer sich.
2026-07-22 22:48:27 +02:00
AegisSight
835479b78c Loesungs-Abschnitt aufgeloest, Anwendungsfaelle wandern unter die Karte
Der eigene Abschnitt mit Ueberschrift und Einleitung entfaellt. Die drei
Anwendungsfaelle stehen jetzt als reine Infokarten unter der Karte im
Bereich Live-Lagebilder, ohne "Mehr erfahren" und ohne Verlinkung.

Die sechs Unterseiten unter /loesungen/ und /en/solutions/ sind
geloescht, ebenso der Menuepunkt Loesungen in beiden Sprachen und die
Eintraege in Sitemap und llms.txt.

Nebenbei behoben, die drei Lagen-Seiten verwiesen im Menue auf den
Anker /#products, den es auf der Startseite nie gab. Sie zeigen jetzt
auf /#demos, wo die Anwendungsfaelle stehen.
2026-07-22 22:42:54 +02:00
AegisSight
55b3b6b247 Unterseite Testzugang entfernt, alles laeuft ueber das Popup
Die Seiten /testzugang/ und /en/trial-access/ sind geloescht. Alle
Einstiege oeffnen jetzt das Anfrage-Popup, also der Knopf oben rechts,
der Knopf im Kontakt-Abschnitt, die FAQ-Antwort zum Zugang und der
Footer-Link. Die Hinweiszeile auf die Unterseite ist aus dem Popup raus.

Der obere Knopf der sechs Loesungsseiten zeigt auf den Kontakt-Abschnitt
der jeweiligen Startseite. Sitemap, llms.txt und die FAQ-Daten fuer
Suchmaschinen enthalten keine Verweise mehr auf die geloeschten Adressen.
Tote Zweige in trial-form.js entfernt, da Thema, Startwunsch und
Nutzerzahl als Felder entfallen sind.
2026-07-22 22:28:26 +02:00
AegisSight
5dccc26d19 Testzugang-Knopf in der Navigation oeffnet jetzt das Popup
Der Knopf oben rechts und der Eintrag im mobilen Menue oeffnen das
Anfrage-Popup, statt auf die Seite zu wechseln. Das href auf
/testzugang/ bleibt als Rueckfallebene stehen, also fuer Oeffnen in
neuem Tab, fuer Suchmaschinen und falls JavaScript fehlt.
2026-07-22 22:23:26 +02:00
AegisSight
1465104d8c Feld fuer die geplante Nutzerzahl entfernt, im Popup und auf beiden Testzugang-Seiten 2026-07-22 22:17:39 +02:00
AegisSight
434ec96e4e Kontakt-Popup wird zum Testzugang-Formular, nur noch ein Knopf
Im Kontakt-Abschnitt steht nur noch "Testzugang anfragen" und oeffnet
das Popup. Darin liegt jetzt das Testzugang-Formular ohne die Frage nach
dem Thema, also Name, Behoerde, Funktion, Telefon, dienstliche E-Mail und
Nutzerzahl. Die Freemail-Sperre und die Erkennung von Behoerdendomains
greifen dort genauso wie auf der Seite.

Wer zuerst eine Frage hat, findet unter dem Knopf einen direkten
Mail-Hinweis. Das alte submitContact in app.js entfaellt, beide Formulare
laufen ueber js/trial-form.js. Die gemeinsamen Formular-Styles liegen
jetzt in css/style.css statt doppelt in den Seiten.
2026-07-22 22:11:32 +02:00
AegisSight
893a3feb3d Testzugang: eigene Anfrageseite DE+EN und Einstiege auf der Startseite
Neue Seite /testzugang/ und Spiegel /en/trial-access/ mit Anfrageformular
fuer einen einwoechigen Testzugang. Pflicht ist eine dienstliche
E-Mail-Adresse, Freemail- und Wegwerf-Anbieter werden abgewiesen,
Behoerden- und Organisationsdomains werden erkannt und in der
Anfrage-Mail gekennzeichnet.

Spamschutz ohne Drittanbieter, also Honeypot-Feld und Zeitfalle statt
Captcha, damit kein externer Dienst eingebunden werden muss. Der Versand
laeuft ueber den bestehenden Endpunkt /api/contact, die Zusatzfelder
stehen strukturiert im Nachrichtentext.

Einstiege auf der Startseite DE+EN, also Knopf in der Navigation, zwei
Knoepfe im Kontakt-Abschnitt, Verlinkung der FAQ-Antwort zum Zugang und
ein Footer-Link. Der Hero-Knopf der sechs Loesungsseiten zeigt jetzt
ebenfalls auf die Testzugang-Seite. Sitemap und llms.txt ergaenzt.
2026-07-22 21:42:55 +02:00
claude-dev
8bffb169e0 SEO: Drei Themen-Unterseiten (Loesungen) + Startseiten-Schaerfung
Sichtbarer Content fuer gewinnbare Keyword-Cluster, breites OSINT-Positioning:

- Neue Loesungsseiten (DE+EN, je eigenes Schema Service+Breadcrumb+FAQPage):
  - OSINT- & Lagebild-Software / OSINT & Situational Awareness Software
  - Desinformationsmonitoring & FIMI / Disinformation Monitoring & FIMI
  - Social-Media- & Krisenmonitoring fuer Behoerden / ... for Government
- Startseite DE+EN: Hero-Tagline um "OSINT-Software" geschaerft,
  Navigationspunkt Loesungen/Solutions + sichtbare Loesungs-Sektion mit
  interner Verlinkung zu den Unterseiten
- sitemap.xml: 6 neue URLs mit hreflang-Paaren
- llms.txt: Loesungen-Sektion ergaenzt
- Content faktenbasiert aus bestehendem Material, keine erfundenen Features

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 22:50:19 +02:00
8988bf6207 Promote develop → main (2026-06-19 20:23 UTC) 2026-06-19 22:23:01 +02:00
claude-dev
dcd65616c5 SEO/GEO: unsichtbare On-Page-Optimierung (Nische-Fokus OSINT)
Keine sichtbaren Seiteninhalte geaendert, nur maschinenlesbare Signale:

- Startseiten DE+EN: Title auf "OSINT-Monitoring Software aus Deutschland"
  geschaerft; Organization-Schema um knowsAbout/keywords/areaServed und
  SoftwareApplication um keywords erweitert (Entitaetssignale fuer KI-Suche)
- Rechtsseiten (Impressum/Datenschutz DE+EN): robots-Meta konsistent auf
  noindex gesetzt (vorher nur googlebot, allgemein index) - passend zur
  dokumentierten Absicht "von Suchmaschinen ausschliessen"
- llms.txt: 6 zitierfaehige Q&A inkl. Abgrenzung zu IT-Monitoring (PRTG/Nagios)
  und 4 Glossar-Entitaeten (Social-Media-Monitoring, Krisenmonitoring, SOCMINT,
  Situational Awareness)
- sitemap.xml: lastmod der Startseiten aktualisiert; noindex-Rechtsseiten
  aus der Sitemap entfernt

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 21:57:48 +02:00
dfb64e6e4f Promote develop → main (2026-05-17 11:09 UTC) 2026-05-17 13:09:21 +02:00
claude-dev
e292735a50 Fix weisser Streifen zwischen FAQ-Section und Footer
Wurzel: cookie-consent.css enthielt aus einer Demo-Page geerbtes
"footer { margin-top: 4rem; background: ... }" mit nacktem
Element-Selector. Das schlug auf den echten Site-Footer durch und
erzeugte einen ~64px Margin oben am Footer, durch den der helle
Body-Background (#F5F7FA) sichtbar wurde. Unter dunklen Sections
fiel das nicht auf, unter der neuen FAQ-Section wurde es sichtbar.

- cookie-consent.css: nackter 'footer { ... }'-Block (margin-top, background, padding, text-align) entfernt. footer nav / nav a Reststyles belassen, da sie unseren echten Footer (kein <nav> drin) nicht treffen.
- index.html / en/index.html: defensives '.footer { margin-top: 0; }' im inline-style-Block ergaenzt fuer den Fall, dass die Demo-Regel zurueckkommt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 13:02:40 +02:00
claude-dev
318b74d640 FAQ: weisser Balken gefixt + Standort aus DSGVO-Antwort raus
- Style-Block aus body in head verschoben (vermeidet Kaskaden-Quirks)
- .section-Klasse aus dem FAQ-section-Element entfernt (kein Konflikt mehr mit globalem .section { padding 88px 0 })
- Defensive Resets: margin:0, display:block auf .faq-section; explizite margin-resets auf h2, intro, details, faq-answer; details:last-of-type margin-bottom:0
- DSGVO-Antwort: 'Standort Langenfeld, NRW' raus, weil das den Eindruck erweckte, dort stuenden die Server (es ist nur der Firmensitz). Aussage bleibt: 'auf Servern in Deutschland'.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 12:52:57 +02:00
claude-dev
65965135ca FAQ-Wording: Quellen, Faktenpruefung, DSGVO, Zugang vereinfacht
- Quellen: 'weltweit' statt 'mehrsprachig in X'; Update-Takt aus FAQ rausgenommen (steht weiterhin im llms.txt-TLDR und in den Lagen-Schemas)
- Faktenpruefung: ohne Fachbegriffe IFCN/EUvsDisinfo, dafuer in Klartext (Uebereinstimmungen/Widersprueche, transparente Bewertung, verlinkte Originalquellen)
- DSGVO: Aussage zu personenbezogenen Profilen entfernt (war redundant)
- Zugang: Satz zur Preiskalkulation entfernt

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 12:24:29 +02:00
claude-dev
22b4d1a769 AEO/GEO: FAQ-Section, Service- und Dataset-Schemas, speakable, Q&A-llms.txt
- 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>
2026-05-17 10:46:48 +02:00
9af0b0404f Promote develop → main (2026-05-10 14:26 UTC) 2026-05-10 16:26:33 +02:00
claude-dev
ccad9dfc20 Doku: SSR Stufe 2 + Tech-Bundle ergaenzt
- sync-lagebild Service-Beschreibung um ssr_patch ergaenzt
- CHANGE_LOG 2026-05-10: SSR Stufe 2, Self-Hosting Leaflet, image-Sitemap, Performance Quick-Wins, Description-Fix
2026-05-10 16:24:24 +02:00
claude-dev
4c1b4b6da4 Tech: Self-Hosting Leaflet + Image-Sitemap
- Leaflet 1.9.4 + Markercluster 1.5.3 von unpkg.com lokal nach assets/vendor/leaflet/
  Spart externen DNS-Lookup, gibt Cache-Kontrolle, kein Third-Party-Call
  Inkl. marker/layers Bilder fuer Default-Marker
- preconnect zu unpkg.com aus 8 Seiten entfernt (nicht mehr noetig)
- sitemap.xml: image-Sitemap erweitert
  Pro URL og-image + Logo, Hauptseite zusaetzlich handshake
  Namespace xmlns:image hinzugefuegt
2026-05-10 16:17:59 +02:00
8c48f839bb Promote develop → main (2026-05-10 14:03 UTC) 2026-05-10 16:03:45 +02:00
claude-dev
51278e59ca Performance Quick-Wins: Logo-SVG, lazy images, preconnect
- 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
2026-05-10 15:36:13 +02:00
claude-dev
82b3f91b33 SEO: 3 Lagen-Descriptions auf <=160 Zeichen gekuerzt
- cyberangriffe DE: 168 -> 158 Zeichen
- iran-conflict EN: 163 -> 152 Zeichen
- cyber-attacks EN: 161 -> 156 Zeichen
2026-05-10 15:30:16 +02:00
cad1e07813 Promote develop → main (2026-05-10 13:24 UTC) 2026-05-10 15:24:48 +02:00
claude-dev
d00bb4ba1d SEO Quick-Wins: Schema.org, Meta-Hygiene, llms.txt, Performance, Aufraeumen
- Title Iran-Konflikt mit Bindestrich (Konsistenz mit OG/Schema)
- Meta-Hygiene auf 12 Seiten: robots index/follow + max-image-preview:large, theme-color #0A1832, author AegisSight UG
- sitemap.xml: lastmod-Tag pro URL (besseres Crawl-Signal)
- Hauptseite (DE+EN): Schema.org WebSite + SoftwareApplication ergaenzt (Sitelinks, Rich Result fuer Software-Produkt)
- Lagen-Seiten (6): Schema.org BreadcrumbList (Home -> Topic)
- llms.txt: Site-Struktur fuer KI-Crawler (mit Hinweis Live-Search-Bots erlaubt, Training-Bots geblockt)
- Performance: Hero-Slides 2-5 preload=metadata -> none (Slide 1 bleibt auto/LCP)
- Aufraeumen: 5 tote CSS-Files, 7 tote JS-Files, robots-launch.txt + sitemap-launch.xml entfernt
2026-05-10 15:17:47 +02:00
f7f375bb32 Promote develop → main (2026-05-10 13:04 UTC) 2026-05-10 15:04:47 +02:00
claude-dev
025ddfcebd SEO Stufe 1: Indexierung freischalten + Lagen-Meta
- noindex/nofollow von 12 indexierbaren Seiten entfernt (Hauptseiten DE/EN, 3 Lagen DE/EN, Legal DE/EN)
- robots.txt scharf geschaltet: Crawling allgemein erlaubt, Live-Search-AI-Bots (OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot) erlaubt, Training-Bots (GPTBot, CCBot, anthropic-ai, Google-Extended, Applebot-Extended, Bytespider, ...) geblockt
- sitemap.xml: Inhalt aus sitemap-launch.xml uebernommen, mit Sitemap-Verweis in robots.txt
- Lagen-Seiten (3 DE + 3 EN): description, canonical, Open Graph, Twitter Card und Schema.org Article ergaenzt
- Lagen-Hero: Topic-Default in <p id="incident-title"> als Crawler-Fallback (JS ueberschreibt mit Datum bei Lade)
- CLAUDE.md CHANGE_LOG ergaenzt
2026-05-10 15:01:25 +02:00
claude-dev
a6481a11c0 Doku: CLAUDE.md auf aktuellen Stand der Hauptseite gebracht
- /vorschau/ entfernt (alte Vorab-Produktseite, durch index.html mit Hero-Slider und Live-Demos ersetzt)
- STRUCTURE: aktive vs. legacy CSS/JS getrennt, videos/, downloads/, insights/, accountforger-video.html ergaenzt
- Lagen: cyberangriffe und deepfakes binden Lagebild-Assets aus iran-konflikt ein
- SERVICES: sync-lagebild und insights ergaenzt
- DEPLOYMENT: Cache-/Auth-Besonderheiten dokumentiert
2026-05-10 14:28:17 +02:00
d41bd9d41d Promote develop → main (2026-05-06 22:49 UTC) 2026-05-07 00:49:37 +02:00
5e93e5b9d1 i18n: Summary-Section auch unter englischem Header erkennen
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>
2026-05-07 00:47:18 +02:00
49fc3a6f64 i18n: app.js erkennt Sprache und laedt EN-Datenfiles
Die Index-Hauptseite hat noch eine Reihe dynamisch gefuellter Texte
(Live-Stats-Bar-Titel, Map-Legende, Default-Kategorie-Labels) und
laedt summary.json fuer die Excerpts. Auf der EN-Variante hat das
bisher zu sichtbarem deutschen Text gefuehrt.

- SITE_LANG wird einmal aus <html lang> abgeleitet
- lageTitles existiert pro Sprache
- defaultLabels (primary/secondary/tertiary/mentioned) pro Sprache
- Legende -> Legend in der Map-Legende
- summary.json -> summary_en.json bei EN, mit Fallback auf summary.json
  wenn EN-Variante nicht existiert (Monitor erzeugt beide bereits)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 23:44:01 +02:00
2840f42059 Staging: Mountpoint-Platzhalter fuer Lagen-Daten
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>
2026-05-06 23:40:43 +02:00
f874d1dee0 i18n: Aufraeumen und Doku-Update (Phase 5)
- 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>
2026-05-06 23:30:24 +02:00
645fb33898 i18n: EN-Lagen-Seiten + zweisprachiges Kontaktformular (Phase 3+4)
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>
2026-05-06 23:28:05 +02:00
03b18e145c Promote develop → main (2026-05-06 21:15 UTC) 2026-05-06 23:15:59 +02:00
8c8130509a i18n: Aufraeumen alter Mehrsprachigkeits-Reste
- 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>
2026-05-06 22:13:55 +02:00
3229c6b1ea i18n: Sprachumschalter DE/EN und englische Seiten unter /en/
- 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>
2026-05-06 22:12:19 +02:00
Claude Code
3905e90467 CLAUDE.md: Auto-Deploy + Promote-UI dokumentiert (TODO -> abgeschlossen)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 21:15:34 +02:00
Claude Code
95ada4dd39 CLAUDE.md: Staging-Umgebung dokumentiert (URL, Workflow, Auth-Service)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 19:56:27 +02:00
Claude Code
0b979c7d85 Texte: Einsatzfall -> Anwendungsfall (CTA + Kontakt-Modal)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 14:59:43 +02:00
Claude Code
0e0744779c Datenschutz und Impressum auf neues Layout migriert
- Wechsel von altem Multi-File-CSS-Setup (main.css/fonts.css/mobile.css) auf
  das neue /css/style.css der Hauptseite. Bebas-Neue-Headlines und
  Glassmorphism-Karten ersetzt durch Inter + flaches Design mit Navy/Gold-Akzent.
- Header (Navbar + Mobile-Menu + Mobile-Overlay) und Footer aus index.html
  uebernommen; Anker-Links zeigen auf die Hauptseite (/#features etc.).
- Inhalt 1:1 erhalten; Klassen normalisiert auf .legal-section/.legal-content.
- Inline-Styles am Quellverweis durch .source-note-Klasse ersetzt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 14:54:57 +02:00
Claude Code
2abf6f798a Passwortschutz von der Hauptseite entfernen
Das clientseitige Login-Gate (#login-gate, SHA256-Cookie-Pruefung)
stammt aus der Vorschau-Phase. Nach Befoerderung der Vorschau zur
Live-Hauptseite ist es nicht mehr erforderlich; der gesamte Block
inkl. CSS, HTML und JS wurde entfernt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 14:47:41 +02:00
Claude Code
19620aaa4b Hauptwebseite durch Vorschau-Iteration ersetzt
- /vorschau/ existiert nicht mehr; deren Inhalte sind jetzt unter /
- index.html, css/style.css, js/app.js und videos/ stammen aus dem ehemaligen
  vorschau/-Verzeichnis und ersetzen die bisherige Hauptseite.
- Alte CSS/JS-Dateien (main.css, main.js etc.) bleiben erhalten - sie werden
  weiterhin von /lagen/, /datenschutz, /impressum genutzt.
- Vorheriger Stand archiviert unter AegisSight/Webseite_alt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 14:24:07 +02:00
Claude Code
bea7c1eb7a Vorschau: Karussell-Excerpt vereinheitlicht + Hero-Slide-Uebergang glaetten
- demo-excerpt mit fester Hoehe (760px Desktop, 640px Mobile) und weicher
  Fade-out-Maske; vereinheitlicht die Kartenhoehe ueber alle Lagen ohne
  harte Abschneidung des Inhalts.
- heroGoTo() haelt die .ended-Klasse waehrend des Fade-outs aktiv und
  raeumt sie erst nach 400ms auf. Verhindert das Aufblitzen des
  pausierten Video-Frames beim Wechsel von der Endcard zur naechsten Slide.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 14:15:38 +02:00
Claude Code
2a9bbb312f Vorschau: Online-Schaltung vorbereitet (SEO, Cookie-Consent, Conversion-Tracking, LAUNCH-CHECKLIST)
Vorbereitungen fuer den Tag-X-Switch zur neuen Hauptseite. Schaltung selbst lauft ueber LAUNCH-CHECKLIST.md.

vorschau/index.html:
- Meta-Description, Canonical, Open Graph, Twitter Card, Schema.org Organization
- Cookie-Consent CSS+JS eingebunden (reused von alter Hauptseite, mit Umami-Anbindung)
- Footer um Cookie-Einstellungen-Link und dynamisches Jahr ergaenzt
- noindex/nofollow bleibt bis Tag X drin (Vorschau weiter passwortgeschuetzt)

vorschau/js/app.js:
- Conversion-Tracking: umami.track("contact_modal_open") und umami.track("contact_form_success")

assets/images/og-image.png (NEU):
- 1200x630 Open Graph Vorschaubild, Logo + Tagline auf Navy

datenschutz.html:
- Section 5 NEU: Kontaktformular und Anfragen (Daten, Speicherdauer, Rechtsgrundlage)
- Section 7 NEU: AegisSight Analytics (Umami) - cookielos, IP-anonymisiert, selbstgehostet
- Sections umnummeriert: Newsletter -> 6, Plugins -> 7, KI-Agenten -> 8

lagen/{iran-konflikt,cyberangriffe,deepfakes}/index.html:
- Cookie-Consent CSS+JS eingebunden
- Footer-Navigation auf neue Hauptseite-Anker umgestellt: /#features, /#demos, /#trust, /#contact
- Cookie-Einstellungen-Link im Footer
- Farbgebung der Lagen unveraendert (User-Wunsch)

NEUE inaktive Dateien fuer Tag X (per LAUNCH-CHECKLIST aktiviert):
- sitemap-launch.xml: Hauptseite + 3 Lagen + Impressum + Datenschutz
- robots-launch.txt: Crawler erlaubt, AI-Crawler/Spam-Bots/Archiv-Bots blockiert
- LAUNCH-CHECKLIST.md: vollstaendige Anleitung fuer den Schaltungs-Tag (Backup, Schritte, Smoke-Tests, Rollback)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 11:30:32 +02:00
Claude Code
5367b91945 Vorschau: Helligkeits-Tonleiter fuer helle Sections + Contact als heller Akzent
- Vier Tonstufen (--tone-1 bis --tone-4) fuer Problem, Workflow, Demos, Contact: Seite atmet beim Scrollen sanft von hell nach kuehler
- Contact in hellem Blau-Grau-Weiss (#ECF2F9) als frischer Akzent vor dem dunklen Trust
- Divider-Uebergaenge per Adjacent-Sibling an die neuen Tonstufen angepasst
- Trust und Contact in Page-Reihenfolge zurueckgetauscht: Contact vor Trust (Trust bleibt visueller Schluss-Anker), Navbar-Reihenfolge bleibt aber Funktionen-Live-Lagebilder-Ueber-uns-Kontakt
- Subpixel-Luecke unter dem Diagonal-Divider Contact->Trust mit margin-top:-1px geschlossen

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 10:02:18 +02:00