diff --git a/src/cthulhu/plugin_system_manager.py b/src/cthulhu/plugin_system_manager.py index 5224d8d..581d725 100644 --- a/src/cthulhu/plugin_system_manager.py +++ b/src/cthulhu/plugin_system_manager.py @@ -232,29 +232,41 @@ class PluginSystemManager: return self._active_plugins def setActivePlugins(self, activePlugins): - """Set active plugins and sync their state.""" logger.info(f"Setting active plugins: {activePlugins}") - + # Make sure we have scanned for plugins first if not self._plugins: logger.info("No plugins found, rescanning...") self.rescanPlugins() - - # Double-check we found plugins after rescanning - if not self._plugins and activePlugins: - logger.warning("No plugins found after rescanning but active plugins requested. Continuing anyway.") - - self._active_plugins = activePlugins - - # Log active vs available plugins + + # Create a clean list of valid active plugins available_plugins = [p.get_module_name() for p in self.plugins] - logger.info(f"Available plugins: {available_plugins}") - logger.info(f"Active plugins: {self._active_plugins}") + valid_active_plugins = [] + + for plugin_name in activePlugins: + # Check for exact match first + if plugin_name in available_plugins: + valid_active_plugins.append(plugin_name) + continue + + # Try case-insensitive match + plugin_name_lower = plugin_name.lower() + matched = False + for available in available_plugins: + if available.lower() == plugin_name_lower: + # Use the correctly cased name from available plugins + valid_active_plugins.append(available) + matched = True + logger.info(f"Case-insensitive match: requested '{plugin_name}', using '{available}'") + break + + if not matched: + logger.warning(f"Plugin '{plugin_name}' not found, skipping") + + # Only use valid plugins + self._active_plugins = valid_active_plugins - # Find missing plugins - missing_plugins = [p for p in self._active_plugins if p not in available_plugins] - if missing_plugins: - logger.warning(f"Active plugins not found: {missing_plugins}") + logger.info(f"Using verified active plugins: {self._active_plugins}") try: self.syncAllPluginsActive()