Jan-Niclas Loosen and Claude Opus 5.5
c85131603b
feat(compat): Profile, Gates und Pods über den Kompatibilitätskern
...
Neu: Tier, Profile, Compatibility, CapabilityLocked, CapabilityGate, CompatibilityComponent, ProvidesCompatibility, DiviProfile sowie PodsFeature, PodsCompatibility und PodsIntegration. Das CapabilityGate sperrt gesperrte und unbekannte Fähigkeits-IDs (übernimmt die Sperre unbekannter IDs vom DiviFeatureGate) und delegiert nur Divi ausdrücklich. Pods-Schema, -Lesen, -Schreiben und -Feldrechte laufen über usable(PodsFeature::…); Schreiben verlangt FieldRead und FieldWrite, damit ein Rollback keine Werte verliert. lit-site-status meldet Pods über die CompatibilityComponent.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-06 12:26:54 +01:00
Jan-Niclas Loosen and Claude Opus 5.5
b511ef6348
refactor(compat): Prüfbausteine nach src/Compatibility, Matrix und ManifestCheck generisch
...
Requirement, Call, ConstantRequirement, Mirror, Problem, FeatureStatus, CompatibilityMatrix, Manifest, ManifestCheck sowie Fingerprints und LineDiff liegen jetzt im divi-freien Kern. Neu: GlobalRequirement, CompatibilityMatrix::fromProblems(), ManifestCheck-Option signatures, DiviManifestCheck::create() und DiviAreas. Divi-Verhalten unverändert.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-06 12:03:30 +01:00
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
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
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
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
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
Jan-Niclas Loosen and Claude Sonnet 5.5
942e4220ed
fix: RemoteFileFetcher::fetch() prüft die URL selbst; Doppelprüfung im Schriften-Upload entfällt
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 18:26:35 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
0a76f3c196
fix: lit/divi-fonts-upload reicht DiviLocked aus dem Installer durch statt write_failed
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 18:09:26 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
7e7568ea62
feat: Theme-Optionen und Schriften-Upload in der Divi-Integration; je ein geteilter Adapter; Restore von theme_options
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 18:08:39 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
35e92fcb6c
feat: lit/divi-fonts-upload – eigene Schriften von URLs hochladen (Probelauf mit SHA-256, confirm, Rücknahme bei Teilerfolg)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 18:04:55 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
ad76d5ae66
feat: FontInstaller – Schrift-Upload über FontsUtility::font_add im Prozess (Manifest, Mirror font-install, Signatur-Referenzen)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 18:03:48 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
775d611cfa
feat: FontSignature (Magic Bytes) und FontNameRules (Namensregeln eigener Schriften)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 18:02:29 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
172a703903
refactor: RemoteFileFetcher aus MediaImporter herausgelöst (URL-Prüfung, Weiterleitungen, Download)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 18:00:41 +02:00
Jan-Niclas Loosen and Claude Sonnet 5.5
bba5a618ed
feat: lit/divi-design-restore stellt theme_options wieder her; Hinweis auf Etappe 4d entfällt
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 17:58:47 +02:00