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>
TestDrive JSUI Plugin
Independent JavaScript UI plugin for Markitect markdown editing. Designed for standalone development and testing of JavaScript components without requiring the full Python Markitect environment.
Features
- Independent Development: Work on UI components without Python setup
- Clean Architecture: JSON-based configuration interface
- Modular Components: Compass-positioned control panels
- Real-time Editing: Click any section to edit inline
- Asset Management: Proper separation of JS/CSS/image assets
Directory Structure
testdrive-jsui/
├── static/
│ ├── js/ # JavaScript components
│ │ ├── core/ # Core systems (debug, sections)
│ │ ├── components/ # UI components (panels, controls)
│ │ └── controls/ # Control panels (contents, status, edit, debug)
│ └── css/ # Stylesheets
├── images/ # Icons and images
├── templates/ # HTML templates
├── test-documents/ # Sample markdown files
└── package.json # Node.js configuration
Development Setup
Standalone Development (No Python Required)
-
Start Development Server:
cd testdrive-jsui npm run dev # or use Python's built-in server: python -m http.server 8080 -
Open Test Document: Navigate to
http://localhost:8080/test.htmlto see the UI in action. -
Edit JavaScript:
- Modify files in
static/js/ - Refresh browser to see changes
- Use browser DevTools for debugging
- Modify files in
Integration with Markitect
The plugin integrates with Markitect through the rendering engine system:
# Use with Markitect (when integrated)
markitect md-render --engine testdrive-jsui --mode edit document.md
JavaScript Architecture
Core Components
main.js: Application entry point and initializationconfig-loader.js: Configuration interface (Python ↔ JavaScript)section-manager.js: Document section managementdom-renderer.js: DOM manipulation and rendering
Control Panels (Compass Positioning)
- Northwest: Contents/Navigation control
- Northeast: Edit actions control
- East: Status display control
- Southeast: Debug information control
Configuration Interface
All Python data passes through a clean JSON interface:
<script id="markitect-config" type="application/json">
{
"markdownContent": "# Document content...",
"mode": "edit",
"theme": "github",
...
}
</script>
Testing
Manual Testing
- Load
test.htmlin browser - Verify all controls load and position correctly
- Test editing functionality
- Check browser console for errors
Automated Testing (Future)
- Unit tests for JavaScript components
- Integration tests for HTML rendering
- Browser automation tests
Asset Management
Development Mode
- Assets served directly from
static/directory - Hot reloading with development server
- No build process required
Production Mode
- Assets copied to
_markitect/plugins/testdrive-jsui/ - Integrated with Markitect deployment
- Configurable asset URLs
Configuration
The plugin supports various configuration options:
{
"pluginName": "testdrive-jsui",
"assetBaseUrl": "_markitect",
"developmentMode": true,
"pluginAssetDir": "_markitect/plugins/testdrive-jsui"
}
Extending the Plugin
Adding New Controls
- Create new control in
static/js/controls/ - Extend
ControlBaseclass - Register in
main.jsinitialization - Add compass position (nw, ne, e, se, s, sw, w, nw)
Adding New Themes
- Create CSS file in
static/css/themes/ - Update theme selection logic
- Test with different markdown content
Adding New Assets
- Add files to appropriate
static/subdirectory - Update
get_required_assets()in plugin class - Reference in templates or JavaScript
Integration Points
The plugin interfaces with Markitect through:
- Plugin Registry: Auto-discovery of rendering engines
- Asset Management: Deployment and URL generation
- Configuration: JSON-based data transfer
- Templates: HTML template system
License
MIT License - see LICENSE file for details.