- Removed duplicate control files from testdrive-jsui/static/js/controls/ - Removed duplicate control files from markitect/static/js/controls/ - Updated all references to point to capabilities/testdrive-jsui/js/controls/ - Fixed relative paths in test files and templates - Consolidated to single source of truth in capabilities directory - Updated plugin configuration and documentation references This eliminates confusion and ensures all systems use the most recent control implementations from the capabilities directory. 🤖 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
../capabilities/testdrive-jsui/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.