Commit Graph
100 Commits
Author SHA1 Message Date
Jan-Niclas LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude Opus 5.5 9beb55e228 refactor(compat): Capability-Interface, DiviFeature implementiert es
Grundlage der generischen Kompatibilitätsschicht für Fremd-Plugins mit inoffiziellen Schnittstellen (Plan docs/superpowers/plans/2026-11-06-kompatibilitaetsschicht.md).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 12:03:30 +01:00
Jan-Niclas LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude Sonnet 5.5 29e73caefb chore(release): Version 1.1.0
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-05 16:36:16 +01:00
Jan-Niclas LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude Sonnet 5.5 62292a4846 chore(release): Version 1.0.4, kürzere Beschreibung in der Plugin-Liste
Beschreibung auf zwei kurze Sätze gekürzt; Gedankenstriche in den Kommentaren des Updaters entfernt.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 15:06:48 +01:00
Jan-Niclas LoosenandClaude Sonnet 5.5 cede8e89fb chore(release): Version 1.0.3, ausführlichere Beschreibung in der Plugin-Liste
Beschreibung nennt Funktionsumfang, Einstellungsort und Update-Quelle; Plugin URI ergänzt den Link
"Plugin-Website besuchen" in der Plugin-Liste.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 14:59:05 +01:00
Jan-Niclas LoosenandClaude 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 LoosenandClaude Sonnet 5.5 8fe4eb63c8 chore(release): Version 1.0.1
1.0.0 wurde ohne ZIP-Datei veröffentlicht; 1.0.1 ist das erste vollständig ausgelieferte Release,
Inhalt unverändert.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 14:13:34 +01:00
Jan-Niclas Loosen 216a7fb370 Update release check 2026-11-04 14:07:09 +01:00
Jan-Niclas Loosen 3337a63c5d Prepare auto updates 2026-11-04 13:51:01 +01:00
Jan-Niclas LoosenandClaude Sonnet 5.5 a066d47bfd docs(spec): Kann-Kriterium Divi-Bibliothek löschen und umbenennen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 16:02:05 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 e2dbf45162 docs(4e-review M-3): Audit-Status führt M1 nach dem Update-Fix als behoben; Folgearbeit aus dem Gesamtreview
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 00:41:53 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 8ff3b165b6 docs(4e-review M-2): Guide nennt L3 (Kopien und globale Instanzen ohne Schleifen-Art-Prüfung) als offene Grenze
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 00:41:39 +02:00
Jan-Niclas LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude Sonnet 5.5 b91c356a28 chore: Version 0.7.0 (Etappe 4); Spec und Notizen nachgeführt
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 00:31:24 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 1fdcb2e075 docs: Security-Audit Etappe 4 mit Status nach der Fix-Welle
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 00:28:43 +02:00
Jan-Niclas LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude Sonnet 5.5 9c1d5fad22 docs(audit M1, L2): Guide zur Schleifen-Kette für Feld-Optionen, queryType-Normalisierung und Update-/Move-Warnung
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 23:55:32 +02:00
Jan-Niclas LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude Sonnet 5.5 f5790def97 docs: Plan Etappe 4e – Schleifen-Inhalte, Guides, Audit, Version (Tasks 1–10)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 20:38:33 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 6203dbb62b docs: Gerüst Plan Etappe 4e – Schleifen-Inhalte, Guides, Audit, Version (Rulings, Schnittstellenvertrag)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 20:12:17 +02:00
Jan-Niclas LoosenandClaude 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 LoosenandClaude Sonnet 5.5 f2aeb59d02 docs/feat: Spec 8.1/8.2 präzisiert; DSGVO-Hinweis in der Beschreibung von lit/divi-fonts-upload
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 18:28:36 +02:00
Jan-Niclas LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude Sonnet 5.5 bfede30d33 docs: Notizen und Spec für Etappe 4d (Recherche, Formate-Nachtrag, Rulings W1–W14, offene Kleinpunkte)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 18:20:17 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 cb41f9e877 test: Smoke prüft Bereichs- und Schlüssel-Ablehnung auf Grund und Feld
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 18:17:41 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 4300205f17 test: Smoke für Theme-Optionen und Schriften-Upload gegen Divi 5.15.1
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 18:15:18 +02:00
Jan-Niclas LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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 LoosenandClaude 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
Jan-Niclas LoosenandClaude Sonnet 5.5 2e3b740260 feat: ThemeOptionsRestorePlanner – Snapshot theme_options ersetzt die Whitelist, nennt zurückgesetzte Optionen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 17:58:04 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 449ec5c33f feat: lit/divi-variables-set prüft Schrift-Variablen gegen Divis Schriftliste (mit Vorschlägen)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 17:56:58 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 dab4a9ba2e fix: gespeichertes false (Divi-Standardschrift) gilt in Theme-Optionen get/update als nicht gesetzt
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 17:55:21 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 879ca752e7 feat: lit/divi-theme-options-update ändert Theme-Optionen über DesignChange (Prüfung, Divi-Sanitizer, Schriftvorschläge)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 17:51:50 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 122548db12 feat: lit/divi-theme-options-get liest Wert, wirksamen Wert, Standard und Bereich je Theme-Option
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 17:51:18 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 1bc8ce65b7 feat: ThemeOptionsArea – Bereich theme_options ersetzt die Whitelist, prüft das Zurücklesen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 17:51:09 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 05ff2d90f3 feat: FontSuggest – ähnliche Schriftnamen für unbekannte Schriften (W5)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 17:48:30 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 8740e9b8dc feat: ThemeOptionDiff – Diff und Zusammenfassung der Theme-Optionen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 17:48:16 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 d9c4bc3751 feat: ThemeOptionBook – unveränderlicher Bestand der Theme-Optionen mit rev() (W6)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 17:47:59 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 a9edd850c1 feat: ThemeOptionSpec – die 20 Theme-Optionen mit Prüfung, Normalisierung und Vererbung (W2–W4)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 17:47:35 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 a90cd7f5bd feat: Fähigkeiten theme-option-read/-write und font-upload; ThemeOptionsAdapter und FontCatalog (Manifest, Nachbau customizer-typography, Signatur-Referenzen) und DesignRights::themeOptions()/fonts()
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 17:44:57 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 8379c55c89 docs: Plan Etappe 4d – Theme-Optionen und Schriften (Tasks 1–11)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 17:38:24 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 d1a0e77f28 docs: Gerüst Plan Etappe 4d – Theme-Optionen und Schriften (Rulings, Schnittstellenvertrag)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 17:15:36 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 2307027eae style: phpcs (ItemKeys, VariableValue, Docblock)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 14:42:13 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 c6daae131d fix: Variablenwerte für Links/Bilder lehnen //host, /\host und Steuerzeichen ab
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 14:41:06 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 5064409f9a refactor: Detach – toter Zweig, benannte Argumente; VariableDetachRewrite-Docblock nennt leftover()
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 14:40:50 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 7608be6558 refactor: ColorRestorePlanner baut den Diff einmal aus ColorDiff; die Zusammenfassung zählt Entfernungen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 14:40:36 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 d092c05311 fix: VariableArea::verify vergleicht auch den Namen; Docstring beschreibt, was verify und differences wirklich fangen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 14:40:13 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 25252c92f2 docs: Spec 4c – Item-Form nur mit id, Archivieren statt Löschen, affected vs. warnings (V8)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 14:39:51 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 e2e28cd1b4 test: Farben/Variablen-Smoke stellt et_divi und die Variablen-Option byte-genau wieder her und scheitert bei fehlgeschlagener Wiederherstellung
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 14:39:42 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 02ed5bdbd3 fix: lit/divi-colors-set und lit/divi-variables-set lehnen unbekannte Item-Felder ab (delete, Tippfehler)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 14:38:00 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 bb2377991d test: Smoke für Farben und Variablen gegen Divi 5.15.1; docs: Formate-Nachtrag 4c, Variablen nur archivieren (Spec §7.2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 14:31:58 +02:00