mirror of
https://github.com/Vateron-Media/XC_VM.git
synced 2026-10-03 20:02:29 +02:00
TASK-000: Remove legacy core patching system - Delete src/core/Module/CoreCodePatcher.php - Delete src/core/Module/CoreCodePatchableModuleInterface.php TASK-001: Split ModuleInterface into specialized provider interfaces - Add ServiceProviderInterface (boot, getEventSubscribers) - Add RouteProviderInterface (registerRoutes) - Add CommandProviderInterface (registerCommands) - Add NavbarProviderInterface (registerNavbar) - Add StreamMiddlewareProviderInterface - ModuleLoader::bootAll() detects supported providers via instanceof TASK-002: Refactor EventDispatcher - Add ListenerProvider with priority support - Add AbstractEvent base class - Add StoppableEventInterface support - Preserve legacy subscribe/publish API compatibility TASK-003: Extend ServiceContainer - Add ServiceContainer::decorate() - Support priority-based decorator chains - Add protected service registry: - db - settings - config - auth TASK-004: Add core event catalog - ModuleLoadedEvent - ModuleBootedEvent - PackageInstalledEvent - UserAuthenticatedEvent - UserLoggedOutEvent - StreamStartingEvent - StreamStartedEvent - StreamStoppedEvent - SettingsChangedEvent TASK-005: Formalize subsystem boundaries - Add BoundaryInterface - Add MinistraBootstrap implementation - Define exported service contracts TASK-006: Add stream middleware pipeline - Add StreamContext - Add StreamMiddlewareInterface - Add StreamPipeline - Support middleware priority ordering TASK-007: Add module hot reload - Dispatch PackageInstalledEvent after installation - Add ModuleManager::hotReload() - Load and boot newly installed modules without service restart TASK-008: Standardize container contracts - Add container interfaces: - ContainerInterface - ContainerExceptionInterface - NotFoundExceptionInterface - Add NotFoundException implementation - ServiceContainer::get() throws NotFoundException TASK-009: Refactor navbar registration - CoreNavbarProvider implements NavbarProviderInterface - Add registerNavbar() instance method - ModuleLoader uses provider-based registration TASK-010: Add module priority support - Add priority field to module.json - Default value: 0 - Higher priority modules load earlier - Resolve load order by: 1. Priority DESC 2. Module name ASC TASK-011: Add optional dependencies - Add optional_dependencies field to module.json - Missing optional dependencies do not block module loading - Process optional dependencies after required dependencies Tests - Add ServiceContainer tests - Add EventDispatcher tests - Add StreamPipeline tests - Add ModuleLoader priority tests Documentation - Rewrite module architecture documentation - Update examples and extension development guides - Document lifecycle, events, services, middleware, and dependencies