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>
4.2 KiB
4.2 KiB
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.