1) Das Warn-Emoji "⚠" im platzhalter-text loeste WordPress' wp-emoji aus, das
die grafik von s.w.org nachlud (drittanbieter-request). Emoji aus den texten
entfernt; das warn-dreieck wird jetzt rein per CSS gezeichnet (kein netzwerk).
Hinweis: s.w.org ist der WP-emoji-CDN, NICHT Google.
2) Der platzhalter reservierte die hoehe des eingebetteten elements -> bei
kuerzerem inhalt entstand weissraum darunter. Hoehen-reservierung entfernt
(PHP min-height-style, JS minHeight, CSS min-height:180px) - der content
blocker ist jetzt exakt so hoch wie sein eigener inhalt. Die original-masse
bleiben als data-attribute fuer das iframe nach einwilligung erhalten.
3) Redundante, partielle de_DE-.po/.mo (mit altem emoji) entfernt - deutsche
locales nutzen direkt die deutschen quell-strings.
+ version 1.4.3 (assets cache-busting).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Loest die YouTube/Vimeo-API-Luecke: viele dienste laden ueber <script>
(z. B. youtube.com/iframe_api, www-widgetapi.js, analytics) statt iframes -
oft per JavaScript nachgeladen, daher fuer den scanner unsichtbar.
- Pro dienst aktivierbar ueber das (umbenannte) feld "Zugehoerige Skripte
blockieren (z. B. YouTube-/Vimeo-API)" = das vorhandene loads_script-flag.
Presets (YouTube, Vimeo, Maps) haben es bereits an.
- Server-seitig: passende <script src> werden zu type="text/plain"
(src -> data-cb-src) neutralisiert, laden also nicht.
- Client-seitig: winziger guard ganz frueh im <head> patcht
appendChild/insertBefore/replaceChild und neutralisiert dynamisch
injizierte scripts VOR dem einfuegen -> kein request. Faengt damit auch
die per JS nachgeladene iframe_api ab.
- Einwilligung (per-dienst-consent, z. B. ueber den video-platzhalter)
schaltet die scripts via cbActivateScripts frei und laedt sie nach.
- Neuer shortcode [content_blocker_consent id="…"] als einwilligungs-button
fuer reine skript-dienste ohne sichtbaren platzhalter.
- guard-logik mit DOM-mock getestet (block + reinject), server-regex
isoliert geprueft. i18n DE/EN ergaenzt (127 strings).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- scan & releases/from-url: verbindung wird an die bereits validierte IP
gepinnt (node:http/https lookup-option), statt fetch erneut aufloesen zu
lassen. Schliesst DNS-rebinding/TOCTOU, mit dem ein lizenzierter Kunde
ueber die DNS seiner eigenen Domain interne Dienste/Cloud-Metadaten
erreichen koennte.
- releases/from-url folgt redirects jetzt manuell und validiert jeden hop
(protokoll + private-IP-guard); gitea-token nur an den ausgangs-host.
- pinnedRequest: settle-guard + body-cap loesen das promise auch bei
ueberlangen antworten (kein haengen).
- autodetect process(): kein blank-page mehr bei PCRE-fehler (fallback auf
original-HTML statt (string) null = "").
- cleanup: ungenutztes extract_iframe_src() entfernt; redundantes
&-replace in get_src() entfernt (DOMDocument dekodiert bereits).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- frontend.js erkennt JS-nachgeladene iframes (Slider etc.) per initialem Scan
+ MutationObserver und ersetzt sie durch den Platzhalter.
- Elementor-Video-Widgets: data-settings (youtube_url/vimeo_url) wird gelesen,
zu Embed-URL konvertiert, Widget neutralisiert und durch Platzhalter ersetzt.
- Service-Daten + i18n werden dafuer ans Frontend lokalisiert (cbConfig).
- readme: Erkennung + Grenzen (Elementor-Vorschaubild) dokumentiert.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
UI:
- Ein-/Ausklappen jetzt mit grossem +/- Icon statt kleinem Pfeil.
- "Entfernen" ist ein Papierkorb-Symbol (dashicon).
- Aktiver Tab klar gekennzeichnet (Akzent-Unterstrich + Farbe).
- 20px Abstand zwischen Tabs und Inhalt.
Funktionen:
- Scan erkennt Anbieter, fuer die es eine Vorlage gibt ("Vorlage verfuegbar"),
und "Vorlage uebernehmen" fuellt die komplette Vorlage statt nur Host/Pattern.
- Platzhalter: Checkbox "Diesen Dienst kuenftig immer laden" (Standard AN).
Abgewaehlt -> Inhalt wird nur einmal geladen, keine dauerhafte Einwilligung.
i18n:
- Sprachumschaltung: Deutsch fuer alle de_* Locales, Englisch fuer alle anderen
(plugin_locale-Filter). Vollstaendige englische Uebersetzung (126 Strings,
inkl. Vorlagentexte/Empfaenger) als gdpr-content-blocker-en_US.po/.mo.
- Helper-Skripte (extract/build) in hilfsdaten/.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Eltern-Ordner ist jetzt EIN Git-Repo (statt getrennter Repos).
- root .gitignore haelt Secrets (.env), node_modules, DB und Build-Artefakte raus.
- release.ps1: manueller Release (ZIP bauen + ans Backend laden).
- root README mit Struktur und Release-Ablauf.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>