feat: structure and content fingerprints, lit/library-find-similar

Fingerprint::structure()/content() (E11) and lit/library-find-similar
(indirect, group Divi-Bibliothek): at most 200 posts per call (cursor),
editable entries only (own posts without edit_others_posts), contents
primed in chunks of 50, stops at 200 matches or 5000 compared nodes with
a note; library entries and Theme Builder layouts are never scanned.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-27 21:13:33 +02:00
co-authored by Claude Opus 5.5
parent 6be2e65432
commit f82964f617
7 changed files with 758 additions and 5 deletions
@@ -60,7 +60,7 @@ final class DiviIntegrationTest extends TestCase
self::assertSame('Divi-Bibliothek', $library->label());
self::assertFalse($library->isAvailable(), 'no Divi classes in unit tests');
self::assertSame(
['lit/library-list', 'lit/library-save', 'lit/library-insert'],
['lit/library-list', 'lit/library-save', 'lit/library-insert', 'lit/library-find-similar'],
array_map(static fn (Ability $ability): string => $ability->name(), $library->abilities())
);
foreach ($library->abilities() as $ability) {