withPaths([$pathProvider->getSourcePath()->toString()]) ->withScanType(ScanType::FULL); $options = new DiscoveryOptions( paths: [$pathProvider->getSourcePath()->toString()], scanType: ScanType::FULL, useCache: false // Explicitly disable cache ); echo "Starting discovery without cache...\n"; $registry = $discoveryService->discoverWithOptions($options); echo "\nDiscovery completed.\n"; echo "Total files processed: " . $registry->getFileCount() . "\n"; $components = $registry->attributes()->get('App\Framework\View\Attributes\ComponentName'); echo "Total ComponentName attributes found: " . count($components) . "\n\n"; $found = []; foreach ($components as $c) { $attr = $c->createAttributeInstance(); if ($attr) { $found[] = [ 'class' => $c->className->toString(), 'tag' => $attr->tag ]; } } echo "All ComponentName attributes:\n"; foreach ($found as $item) { echo " - {$item['class']} -> {$item['tag']}\n"; } echo "\nSearch/Popover components:\n"; $searchPopover = array_filter($found, function($item) { return str_contains($item['class'], 'Search') || str_contains($item['class'], 'Popover'); }); if (empty($searchPopover)) { echo " ❌ NOT FOUND\n"; } else { foreach ($searchPopover as $item) { echo " ✓ {$item['class']} -> {$item['tag']}\n"; } } echo "\n";