Copy enhanced ControlBase and control files to deployment source directory. This resolves the deployment cache issue where md-render --edit was using old control files instead of the new enhanced ControlBase architecture. Now all controls properly use the enhanced ControlBase with 5 behaviors: - Icon-only collapsed state - Expand/drag functionality - Bottom-left resize handle - Collapse button returns to original position - Header toggle for content visibility The enhanced control system is now fully deployed and functional.
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.