Commit Graph
82 Commits
Author SHA1 Message Date
Jan-Niclas LoosenandClaude Sonnet 5.5 d36e8286e8 feat: Umschreib-Strategien für Preset-Zuweisung und -Entkopplung (TreeRewrite, AssignRewrite, DetachRewrite)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 16:57:33 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 763d765660 feat: Fundstellen aller Module eines Typs, Standard-Gruppen-Presets in der Fundstellensuche (ModuleUsageQuery)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 16:55:54 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 fafa140546 feat: GroupKeys und PresetAssignment – Preset-Stapel und Gruppen-Presets über eine Engstelle
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 16:45:29 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 6546e23e7f feat: PresetOverrides – lokale Werte finden, beschreiben und entfernen, die Presets überdecken
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 16:43:39 +02:00
Jan-Niclas LoosenandClaude Opus 5.5 d5fd1642b8 fix: PresetComposer liest nur den von der Ability bereinigten Namen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:10:47 +02:00
Jan-Niclas LoosenandClaude Opus 5.5 3d760113ec fix: Standard-Preset löschen – nur ausdrückliche Verweise blockieren, implizite Nutzung im Probelauf
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:10:11 +02:00
Jan-Niclas LoosenandClaude Opus 5.5 75714429be fix: Preset-Änderungen ohne unfiltered_html ablehnen, wenn Divi HTML/CSS anderer Presets entfernen würde
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:09:31 +02:00
Jan-Niclas LoosenandClaude Opus 5.5 048cd9353d fix: DesignLock gegen parallele Bestätigungen; confirm ohne design_rev ist ein Eingabefehler
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:06:52 +02:00
Jan-Niclas LoosenandClaude Opus 5.5 fc8ffeba9e fix: DesignArea mit restore() fürs Zurückschreiben und differences() für bereinigte Werte
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:04:34 +02:00
Jan-Niclas LoosenandClaude Opus 5.5 60c31f9697 fix: Snapshot-Option je Bereich auf 8 MB begrenzen, älteste Einträge fallen heraus
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:03:49 +02:00
Jan-Niclas LoosenandClaude Opus 5.5 fe8a01f878 fix: Sicherheitstest für Redakteure ohne unfiltered_html prüft einen echten Builder-Pfad
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:03:21 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 327f8d2d35 feat: lit/divi-design-snapshots und lit/divi-design-restore (Bereich presets)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 17:52:20 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 2e8f723b01 feat: lit/divi-presets-delete – unbenutzte Presets löschen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 17:50:29 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 25720ad086 fix: lit/divi-presets-set – name und rename schließen sich aus, Namensprüfung vorziehen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 17:48:43 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 b3c3e69a53 feat: lit/divi-presets-set – Presets anlegen und ändern mit Probelauf und Snapshot
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 17:47:16 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 341782a34f feat: lit/divi-preset-get – Preset mit Einstellungen und Fundstellen lesen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 17:44:09 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 cc20100cbc feat: PresetComposer – Preset aus Kurz-/Vollform, Modul und Gruppen-Presets
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 17:42:18 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 bb4d9b3baf feat: Änderungs-Pipeline des Designsystems (Probelauf, design_rev, Snapshot, Rollback) und Bereich presets
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 17:39:58 +02:00
Jan-Niclas LoosenandClaude Haiku 5.5 bfd3840eb1 feat: Fundstellen eines Presets (PresetUsageMatcher, PresetUsageQuery)
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-16 17:38:22 +02:00
Jan-Niclas LoosenandClaude Sonnet 5.5 3fe83e39d3 feat: DesignSystemWriter – Presets über Divis Sync-Ablauf schreiben (Mirror preset-sync)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 17:34:49 +02:00
Jan-Niclas LoosenandClaude Haiku 5.5 6ee8f9258a fix: SnapshotStore verweigert nicht kodierbare Snapshots
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-16 17:33:03 +02:00
Jan-Niclas LoosenandClaude Haiku 5.5 5ba52b98b3 feat: SnapshotStore – Snapshots des Designsystems je Bereich
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-16 17:31:48 +02:00
Jan-Niclas LoosenandClaude Haiku 5.5 388b52ea76 feat: PresetDiff – Unterschied zweier Preset-Bestände für den Probelauf
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-16 17:29:51 +02:00
Jan-Niclas LoosenandClaude Haiku 5.5 578ccba118 feat: PresetScope und PresetBook – Preset-Bestand im Divi-Speicherformat
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-16 17:27:27 +02:00
janniclas.loosenandClaude Opus 5.5 1a215fd7bf refactor: Divi design adapter, logo lookup moves out of media
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 01:31:23 +02:00
janniclas.loosenandClaude Opus 5.5 031f01451b fix: note the library-list scan cap; preset-cap note only with presets (M-11, M-12)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-27 04:19:05 +02:00
janniclas.loosenandClaude Opus 5.5 a3a807051f feat: design-system filters and global module ids in node-get/outline (S19)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
2026-09-27 00:44:58 +02:00
janniclas.loosenandClaude Opus 5.5 203d14a2f9 refactor: one VariableRef per composition, design lookups in DesignSystem (H3)
- DiviComposition::references() builds the one VariableRef with the entry's
  live map (S22/S31) and passes it to AttrWriter; Placeholders only needs the
  design system now, Placeholders::references() is gone (no reach-through).
- DesignSystem::colorIdFor()/variableFor() replace the dead colorId()/variable()
  and carry Placeholders' lookup incl. the S13a ambiguity check (byLabel moved,
  messages unchanged); isColorVariable() decides color vs content for {{var:}}.
- DesignSystem::colorReferenceIds() (VariableRef color names) and
  contentVariableIds() (DynamicContentRules design names) replace the two
  inline computations; same lists, same order.
Tests: fixtures/tests get the VariableRef from ComposeFixture::references() or
build it with the map; DesignSystemTest uses the new lookups (+2 tests).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
2026-09-26 18:07:56 +02:00
janniclas.loosenandClaude Opus 5.5 60290c85a5 test: AssertsToolErrors helper for tool error assertions (T3)
tests/Support/AssertsToolErrors (used by TestCase): assertToolError($result, code)
checks the WP_Error code lit_<code> and the code of the client JSON and returns the
payload; clientError() decodes the payload; errorFields() returns the fields and
asserts they exist. Replaces the private clientError() decoders of
DiviWriteAbilitiesTest/DiviReplaceTextAbilityTest, 216 single-line
assertSame('lit_…', …->get_error_code()) assertions, 24 get_error_data()['fields']
digs and two json_decode(message) reads. ErrorsTest keeps json_decode: it tests
the format itself. Tests 1404 -> 1409 (AssertsToolErrorsTest); no test has fewer
assertions.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-26 17:55:35 +02:00
janniclas.loosenandClaude Opus 5.5 3d96a41366 test: shared Divi fixtures in tests/Support (T1)
- DiviFixtures: markup(), givenPost(), schema(), designSystem(), catalog(),
  dynamicContentRegistry(), maliciousRefs() - moved verbatim out of
  DiviPageLoaderTest, DesignSystemTest, ModuleCatalogTest, DynamicContentMapTest
  and VariableRefTest (its malicious() provider now returns maliciousRefs()).
- ComposeFixture moves to tests/Support.
- DiviWriterFixture: modules(), designReader(), composition(), a recording saver(),
  log() and writer(&$saved, &$failures, unfiltered, loader) for the five tests that
  wired the Divi write stack by hand.
No test cases or assertions changed (1397 / 5834).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-26 17:47:11 +02:00
janniclas.loosenandClaude Opus 5.5 8688a02402 fix: Task 3 review round 1 - strip control chars before the sanitizer (S32a), S34 minors
Control characters now go on the raw value in AttrWriter::cleanNode and
VariableRef::setting; after the sanitizer only rejection remains ('<' + VT/FF
no longer turns into a tag). VALUE_KEY anchored with D, exact column-width
fractions, nested rows in columns, specialty columns refused, fullwidth by
catalog category, preset ambiguity in DesignSystem::modulePresetId().

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
2026-09-26 14:26:18 +02:00
janniclas.loosenandClaude Opus 5.5 a54a337e0b feat: read the Divi design system live – lit/divi-design-system
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
2026-09-26 12:06:15 +02:00