Files
tegwick 8ef356af57 feat: implement plugin infrastructure for rendering engines
Added comprehensive plugin system for independent JavaScript UI development:

**Plugin Infrastructure:**
- Extended existing MarkiTect plugin system with RenderingEnginePlugin base class
- Added RENDERING plugin type to PluginType enum
- Created RenderingConfig for asset management and deployment
- Implemented RenderingEngineManager for plugin discovery and lifecycle

**TestDrive JSUI Plugin:**
- Extracted JavaScript UI components to independent testdrive-jsui plugin
- Created standalone development environment (no Python required)
- Implemented compass-positioned control panels (NW, NE, E, SE)
- Added clean JSON configuration interface for Python↔JavaScript data transfer

**Asset Management:**
- Development mode: serve assets directly from plugin source directory
- Production mode: deploy to _markitect/plugins/[plugin-name]/ structure
- Configurable asset URLs and deployment strategies
- Support for external dependencies (CDN resources)

**Standalone Development:**
- testdrive-jsui/test.html for browser-based development
- Package.json with npm scripts for development server
- Complete separation of JavaScript development from Python environment
- Hot reload and standard web development workflow

**Integration Demo:**
- demo_plugin_integration.py showcasing all plugin capabilities
- Standalone, plugin discovery, production deployment examples
- Asset URL generation for different deployment modes

This enables JavaScript-first development while maintaining clean integration
with the MarkiTect Python ecosystem. Developers can now work on UI components
independently using standard web development tools and workflows.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 06:49:41 +01:00

42 lines
917 B
Python

"""
MarkiTect Plugin System
This package provides the plugin architecture for extending MarkiTect functionality.
Plugins can extend processors, formatters, validators, exporters, and more.
"""
from .manager import PluginManager
from .base import (
BasePlugin,
PluginType,
PluginMetadata,
ProcessorPlugin,
FormatterPlugin,
ValidatorPlugin,
ExporterPlugin,
CommandPlugin
)
from .rendering import (
RenderingEnginePlugin,
RenderingConfig,
RenderingEngineManager
)
from .registry import plugin_registry
from .decorators import register_plugin
__all__ = [
'PluginManager',
'BasePlugin',
'PluginType',
'PluginMetadata',
'ProcessorPlugin',
'FormatterPlugin',
'ValidatorPlugin',
'ExporterPlugin',
'CommandPlugin',
'RenderingEnginePlugin',
'RenderingConfig',
'RenderingEngineManager',
'plugin_registry',
'register_plugin'
]