Jan-Niclas Loosen and Claude Opus 5.5
691231f776
fix(security): unbekannte Requirement-ID sperrt das Divi-Tool
...
Deklariert ein Tool über DeclaresRequirements eine ID, die keine Divi-Fähigkeit ist, wird der Aufruf mit divi_incompatible (423) gesperrt, statt ungesperrt zu laufen.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-06 11:30:05 +01:00
Jan-Niclas Loosen and Claude Opus 5.5
234fd1edac
fix(security): Pods-Meta nur lesbar, wenn Pods aktiv, aber nicht nutzbar
...
Ist Pods aktiv, seine API aber nicht nutzbar, melden gesampelte und registrierte Meta-Schlüssel READONLY statt schreibbar. Sonst würden Pods-Felder (auch über Pods' register_meta-Integration) an Pods vorbei geschrieben.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-06 11:30:05 +01:00
Jan-Niclas Loosen and Claude Opus 5.5
8f3a4e76eb
fix(security): Pods-Feldrechte fail-closed
...
Fehlt pods_has_permissions() oder pods_permission(), gilt kein Pods-Feld mehr als unbeschränkt, sondern als nicht erlaubt (HIDDEN/READONLY).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-06 11:30:05 +01:00
Jan-Niclas Loosen and Claude Sonnet 5.5
ac333a164c
feat(css): globales CSS bearbeiten (lit/divi-custom-css-get und -update)
...
WordPress „Zusätzliches CSS“ (in Divi „Eigenes CSS“) über die Design-Pipeline: Probelauf mit Zeilen-Diff,
design_rev, Bestätigung, Snapshot, Rollback und Wiederherstellen (Bereich custom_css). Der Guard lehnt </style,
<script, expression(, javascript: und neue @import ab und warnt bei fremden Hosts; nur Neues zählt, Bestehendes
blockiert keine Änderung. Erfordert edit_css und die Divi-Rolle Theme-Anpassung.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-05 16:36:16 +01:00
Jan-Niclas Loosen and Claude Sonnet 5.5
96fa58188b
feat(admin): Einstellungsseite überarbeitet, auch für das Handy
...
Verbindung: Probleme vor der Anleitung. Tools: Suche, Filter, Alle ein-/ausklappen, Zurücksetzen je Gruppe.
Divi-Reiter in Klartext mit Statussymbolen. Rollenhinweise, Hilfe-Tab, Reiter als Raster und Karten auf dem Handy,
Kontrast, Tippflächen, einheitliche Du-Anrede. Bestätigungen über data-lit-mcp-confirm statt Inline-onclick.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-05 16:36:16 +01:00
Jan-Niclas Loosen and Claude Sonnet 5.5
165e61d7fe
fix(security): headingLevel prüfen, überschreibende Tools kennzeichnen, Meta-Tools auf lit/ beschränken
...
- Divi-Vollformat: headingLevel nur h1 bis h6 (ValueCleaner, StoredNodeGuard, ShortformWriter);
sonst ließ sich für Konten ohne unfiltered_html ein Skript-Element erzeugen.
- content-update, divi-update und wp-settings-update sind destructive, damit MCP-Clients nachfragen.
- mcp-adapter/execute-ability und get-ability-info nehmen auf dem OAuth-Server nur lit/-Abilities an.
- release-publish.sh übergibt den Gitea-Token per Konfigurationsdatei statt als curl-Argument.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-05 16:36:16 +01:00
Jan-Niclas Loosen and Claude Sonnet 5.5
194fd9e183
fix(updater): Repository-Pfad auf Loosen-IT/WP-LIT-MCP umstellen, Version 1.0.6
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-05 14:10:55 +01:00
Jan-Niclas Loosen and Claude Sonnet 5.5
9f7c2d9aba
feat(updater): Update-Prüfung nach Installation oder Versionswechsel neu auslösen, Version 1.0.5
...
Eine Installation löscht das gespeicherte Update-Ergebnis; eine Prüfung, die läuft, solange das Plugin
nicht geladen ist, speichert eines ohne das Plugin, und der Schalter für automatische Updates fehlt bis
zu eine Stunde. RecheckOnInstall vergisst das Ergebnis beim ersten admin_init mit der neuen Version
(Priorität 5, vor _maybe_update_plugins des Core), der es dann mit registriertem GiteaUpdater neu aufbaut.
Die Option lit_mcp_installed_version räumt der Uninstaller auf.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-04 15:36:30 +01:00
Jan-Niclas Loosen and Claude Sonnet 5.5
c8648d5263
fix(updater): Paket-Adresse aus Tag und Dateiname bauen, Version 1.0.2
...
Gitea meldet browser_download_url hinter dem TLS-Proxy mit http://, der Updater lehnte die Adresse ab
und fand kein Update. Die Adresse wird jetzt aus dem geprüften Tag und dem Dateinamen gebaut; release-check.sh
prüft genauso.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-11-04 14:50:43 +01:00
Jan-Niclas Loosen
b2759fba73
Prepare release engine
2026-11-04 14:46:54 +01:00
Jan-Niclas Loosen
3337a63c5d
Prepare auto updates
2026-11-04 13:51:01 +01:00
Jan-Niclas Loosen and Claude Sonnet 5.5
410e773d28
fix(4e-review clean-code): eine sanitize_key-Nachbildung (LoopScope::sanitizeKey) statt dreier; Docblock zur strengeren LoopContext::enabled()
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-20 00:41:33 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
71ffbdbf59
fix(4e-review M-1): Schleifen-Warnung nennt die ganze Kette (Terme > Beiträge); loopWhere mit frühen Returns
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-20 00:40:05 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
8be2f5e558
fix(4e-review M1): Update unterscheidet Composer und Zweitdurchlauf nach der ganzen Schleifen-Kette (LoopScope::key)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-20 00:38:33 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
99c7aab238
fix(audit L5): unter der Sperre Divis Laufzeit-Caches verwerfen (Options-Cache-Gruppe, GlobalData-/GlobalPreset-Static, et_theme_options) vor raw() und design_rev
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-20 00:26:40 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
6e84138979
fix(audit L1): queryType null fällt wie bei Divi (isset) auf post_types zurück; Skalare lesen wie sanitize_key
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-20 00:20:09 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
f754772beb
fix(audit L5): Uninstaller entfernt auch die alten Sperren-Namen lit_mcp_lock_colors und lit_mcp_lock_theme_options
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-20 00:15:36 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
3a89b15b59
fix(audit M1): Update-/Move-Warnung nur für Inhalte, die vorher zur Schleifen-Kette passten (kein Alarm für ACF-Optionen); Tests für Update und Kettenwarnung beim Move
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-20 00:14:57 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
bb5487082e
fix(audit L4): Restore prüft die Fundstellen aller Diff-Zeilen (auch aktivierte und wieder angelegte IDs, Standard-Preset-Wechsel)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-20 00:13:44 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
c4ee195392
fix(audit L5): Sperre verwirft den Options-Cache (alloptions), damit Inventar und design_rev unter der Sperre den gespeicherten Stand lesen
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-20 00:13:08 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
71c2e03c9b
fix(audit L1): Schleifen-Rechteprüfung auf dem bereinigten Wert (sanitize_text_field-Umgehung) und mit sanitize_key-Lesart von enable/queryType
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-20 00:11:11 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
bd80ab1394
fix(audit L4): Restore-Planer für Farben, Variablen und Presets berechnen die Fundstellen (affected, P8a blocked_ids) für geänderte, entfernte und deaktivierte Einträge
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-20 00:03:28 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
4a8a889f93
fix(audit L1): Schleifen in module.advanced.loop brauchen list_users (Benutzer) bzw. read_private_posts (any, attachment, leere subTypes), auch beim Kopieren
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-20 00:00:59 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
20e02164a5
fix(audit L8, DNS-Rebinding): RemoteFileFetcher nur mit cURL und mit CURLOPT_RESOLVE auf die geprüfte Adresse (Host und Weiterleitungsziele)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 23:55:09 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
06b798ab37
fix(audit L7): Bild-Variablen lassen ' ( ) ; { } \ nicht mehr zu (kein Ausbruch aus url(...) in der :root-Regel)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 23:53:14 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
1b3ef552e7
fix(audit L5): et_theme_options unter der gemeinsamen Sperre aus et_divi neu laden, bevor Farben oder Theme-Optionen schreiben
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 23:52:38 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
b59a0c045f
fix(audit L6, L5): DesignLock atomar (INSERT IGNORE, Token, Übernahme per UPDATE, Release nur mit eigenem Token); Farben und Theme-Optionen teilen eine Sperre
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 23:52:38 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
522fc8ff4d
fix(audit M1, L2): Meta-Schlüssel-Optionen gegen alle Schleifen der Vorfahrenkette prüfen; queryType wie sanitize_key normalisieren, terms/users als Term-/Benutzer-Schleife
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 23:47:58 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
52208764f0
docs: Guides korrigiert (not_found, Snapshot-Gesamtgrenze, Schleifen-Warnungen) und LoopGuideTest enger an den Code gebunden
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 23:26:40 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
fc35cbe9dd
docs: Guides für Farben, Variablen, Theme-Optionen, Schriften, Snapshots und Schleifen-Inhalte
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 23:21:09 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
cfc46e1c5e
test: divi-loop-smoke – Schleifen-Inhalte, Kontext, dynamic-sources, Move-Warnung und Rendern gegen echtes Divi (Task 6)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 23:19:37 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
02e7c3e8ec
feat: lit/divi-dynamic-sources mit post_id + node – Schleife des Knotens und passende loop_*-Quellen (X6)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 21:05:49 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
5b52e18a31
fix: Insert entscheidet fail closed auf den komponierten Blöcken statt auf Client-Text; Update warnt bei Wechsel der Schleifen-Art unter unveränderten Kindern (X3)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 20:58:48 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
dadc1f3ec4
test: lit-content-create hat keinen Schleifen-Kontext – loop_* mit der Schleifen-Meldung abgelehnt (X3)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 20:53:34 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
ed6fe12ada
feat: lit-divi-move warnt, wenn Schleifen-Inhalte ihre Schleife verlassen oder in eine andere Art kommen (X3, A11)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 20:52:53 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
8888d246a9
feat: lit-divi-update prüft jede Änderung im Schleifen-Kontext ihres Knotens – ein Composer je Kontext, neue loop-Attribute zählen (X3, S31)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 20:52:14 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
249bc7b932
feat: lit-divi-insert prüft Schleifen-Inhalte im Kontext des Ziels; neue Schleife plus Inhalt in einem Aufruf fail closed (X3)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 20:51:42 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
2f484b77ae
feat: DiviComposition::inLoop() – VariableRef und Placeholders mit Schleifen-Kontext; S31 je Kontext (X3)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 20:50:24 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
6da2c0090f
feat: Kurzform {{loop:<option>}} in Placeholders – Tabelle LOOP, before/after aus den Loop-Feldern der Komposition (X4)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 20:48:51 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
5ee846e63d
docs/test: S36-Hinweise abgelöst (X5); loopFields() in VariableRef gepinnt
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 20:45:01 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
f8912c255d
feat: DynamicContentRules/VariableRef mit LoopScope – loop_* nur in passender Schleife (X2, X5)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 20:44:26 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
3d12043b4f
feat: DynamicContentMap::loopFields() – loop_*-Optionen nach Art (X2); echte Loop-Optionen in DiviFixtures
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 20:43:10 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
617ad2888d
feat: LoopContext – Schleifen-Kontext aus dem Blockbaum, innerste gewinnt (X1)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 20:40:02 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
39dfb0f490
feat: LoopScope – Schleifen-Art aus queryType und Optionsname (X1/X2)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 20:39:29 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
7678d228e7
test: Smoke prüft conflict, sha256/Bytes, Schriftdatei und body_font; Lint-Zeilenlängen
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 18:30:13 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
15cffedb9f
refactor: FontNameRules::check() ohne toten Reserviert-Zweig; Kollision bleibt taken()/409
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 18:28:23 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
bfe6623fe8
refactor: DesignRights::themeOptions() ohne ungenutzten DesignSystemWriter
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 18:27:52 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
0a24753b4d
fix: Schriftname wird vor der Katalogprüfung getrimmt (Theme-Optionen)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 18:27:16 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
2b45f1bdd3
fix: FontInstaller prüft Divis Schriftenliste vor font_add; leere Installation ist ein sauberer Rollback
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 18:27:02 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
901179de62
fix: ThemeOptionSpec lehnt Zahlen mit Zeilenumbruch am Ende ab (D-Modifier)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 18:26:35 +02:00