Added --interactive/-i flag to schema-refine command that allows users to
review and approve each refinement individually:
- Displays each detected issue with details
- Shows current and suggested values
- Prompts for confirmation (y/N/q)
- Applies only approved fixes
- Shows summary at completion
This gives users fine-grained control over which refinements to apply.
Example usage:
markitect schema-refine schema.json --interactive
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implemented two new CLI commands for schema analysis and refinement:
1. schema-analyze: Analyzes schemas for rigidity issues
- Detects exact counts that should be ranges
- Identifies missing classification system
- Flags deprecated extensions
- Calculates rigidity score (0-100)
- Provides detailed or summary reports
2. schema-refine: Automatically refines rigid schemas
- Converts exact counts to flexible ranges
- Rounds overly specific numbers
- Widens narrow integer constraints
- Supports dry-run mode
- Can save to new file or overwrite in place
Key improvements:
- Created SchemaAnalyzer class with issue detection
- Created SchemaRefiner class with automatic fixes
- Improved schema navigation to handle nested properties
- Tested on example schemas (reduced rigidity from 60/100 to 24/100)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Comprehensively document the new classification system and content control
features added in Phase 1.
## Documentation Updates
### New Content Added
**1. Updated MarkiTect Extensions Section**
- Replaced deprecated x-markitect-required/recommended-sections
- Documented x-markitect-sections with five classification levels
- Documented x-markitect-content-control for content validation
**2. Added Section Classification System (150+ lines)**
- Detailed explanation of all five classification levels:
- required: Missing = ERROR
- recommended: Missing = WARNING
- optional: No validation impact
- discouraged: Present = WARNING
- improper: Present = ERROR
- Validation behavior for each classification
- JSON examples for each level
**3. Added Content Control Documentation**
- Pattern validation (required/discouraged/forbidden)
- Content quality metrics (word count, readability targets)
- Content instructions for authors
- Complete examples with explanations
**4. Updated Schema Design Best Practices**
- Replaced old extension examples with new classification system
- Added guidance on choosing appropriate classifications
- Examples showing required, recommended, optional, discouraged, improper
**5. Added Classification System Example**
- Complete working schema demonstrating all features
- Validation scenarios showing different outcomes
- Integration of sections and content-control extensions
## Changes Summary
**Lines Added**: ~200 lines of new documentation
**Sections Updated**: 4 major sections
**Examples Added**: 8 new code examples
**Key Topics Covered**:
- Five-level classification system (required → improper)
- Content pattern validation
- Quality metrics and readability targets
- Content instructions for document authors
- Validation behavior for each classification
- Complete working examples
## Validation
✅ Manual validates against improved markdown-manpage-schema.json
✅ All new features documented with examples
✅ Backward compatibility maintained
✅ Self-documenting: manual uses the features it documents
The manual now comprehensively documents the Phase 1 enhanced schema
system while itself validating against a schema using those features.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add comprehensive example showcasing schema validation with self-documenting
manpage system:
- markdown-manpage-schema.json: Reusable schema for Unix manpage structure
- markdown-schema-validation.1.md: Complete manual about schema validation
- README.md: Usage guide, integration examples, and best practices
- SCHEMA_EVOLUTION_WORKPLAN.md: Roadmap for enhanced schema system
The manual validates against its own schema, demonstrating dogfooding
principle. Workplan outlines 5-phase evolution from rigid structural
validation to flexible content control with blueprints.
Key features demonstrated:
- Schema-driven documentation structure
- Self-validating documentation
- Reusable validation patterns
- Classification system design (required/recommended/optional/discouraged/improper)
This sets foundation for Phase 1 implementation: enhanced schema format
with section classification and content control.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Document plan to extract the implicit 'capability-capability' from issue-facade
into a separate reusable-capability repository.
Issue-facade currently provides two capabilities:
1. issue-tracking (explicit) - Issue management across platforms
2. capability-capability (implicit) - Patterns for creating/managing capabilities
The capability-capability includes:
- Feedback pattern and tooling
- Detachment facility
- Integration scripts
- CAPABILITY-*.yaml specification format
- ReusableCapabilitiesArchitecture.md
- Directory conventions (_family/implementation, visible/hidden)
Extraction plan divided into 4 phases:
Phase 1: Specification & Planning
- Create CAPABILITY-capability.yaml to declare the implicit capability
- Define boundaries between families
- Document API surface
- Identify files to extract
- Plan extraction strategy
Phase 2: Repository Creation
- Create reusable-capability repo
- Extract all capability-capability files
- Create canonical CAPABILITY-capability.yaml
Phase 3: Integration & Testing
- Integrate reusable-capability into issue-facade
- Test functionality still works
- Update documentation
Phase 4: Dogfooding & Validation
- Use in another capability
- Validate and refine based on real usage
Also documented completed tasks from today's architecture refactoring.
Current step: Phase 1, Task 1 - Create CAPABILITY-capability.yaml
Re-integrate issue-facade capability using the new ReusableCapabilitiesArchitecture
pattern with family-based directory organization.
New Structure:
- _issue-tracking/issue-facade/ (family-based organization)
- Uses underscore prefix to signal integrated capability
- Implements ReusableCapabilitiesArchitecture v0.1
Capability Features (from refactored version 35daa51):
- CAPABILITY-issue-tracking.yaml (explicit family declaration)
- feedback/ directory (visible user interface)
- .capability/detach script (clean removal facility)
- ReusableCapabilitiesArchitecture.md (complete specification)
This integration follows the principle that capabilities are conceptual
units organized by family, enabling multiple implementations of the same
capability family to coexist.
Architecture: _<family>/<implementation>/ pattern
Example: _issue-tracking/issue-facade/
See _issue-tracking/issue-facade/ReusableCapabilitiesArchitecture.md for details.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Detach issue-facade from capabilities/ directory in preparation for
re-integration using new ReusableCapabilitiesArchitecture pattern.
Changes:
- Remove capabilities/issue-facade submodule
- Add detachment manifest with re-integration metadata
Next: Re-integrate as _issue-tracking/issue-facade/ (family-based organization)
Detachment manifest: capabilities/DETACHED-issue-facade.yaml
Original commit: 35daa514e59788250847cd706c43ea78f24c5c1d
Corrected the location of Gitea integration tests. They belong in the
issue-facade capability, not release-management, as they test issue
tracking functionality (issues, milestones, labels), not package
publishing.
Changes:
- Deleted: capabilities/release-management/tests/test_gitea_integration.py
- Added to submodule: capabilities/issue-facade/tests/test_gitea_integration.py
- Updated submodule reference for issue-facade
Capability Separation Clarified:
- **issue-facade**: Issue tracking backends (Gitea, GitHub, GitLab, JIRA, etc.)
- Provides unified CLI for issue management across different systems
- Contains Gitea backend: issue_tracker/backends/gitea/backend.py
- **release-management**: Package building, versioning, registry publishing
- Handles version management with setuptools-scm
- Publishes packages to registries (Gitea package registry, PyPI, etc.)
Test Organization:
- issue-facade now has 55 tests total:
- 20 tests in test_gitea_backend.py (passing - current backend)
- 35 tests in test_gitea_integration.py (skipped - needs architecture update)
Main markitect test suite: 1,158 passed, 3 skipped (unchanged)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Moved 35 Gitea API integration tests from main markitect test suite to the
release-management capability where the Gitea functionality now resides.
Changes:
- Moved: tests/test_l6_integration_gitea_api.py
-> capabilities/release-management/tests/test_gitea_integration.py
- Updated documentation to clarify these tests are for future functionality
- Tests remain skipped as Gitea issue/milestone/label management is not yet
implemented in the capability (only package registry operations exist)
The tests serve as specification for future features:
- Issue management (create, update, close)
- Milestone tracking
- Label operations
Test Results:
- Main markitect: 1,158 passed, 3 skipped (down from 38 skipped)
- Capability: 35 tests available, all skipped (future functionality)
This separation improves test organization by keeping tests with the code
they're intended to test, even if that functionality isn't implemented yet.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Fixed pytest warnings where context manager functions were incorrectly
identified as test functions because their names started with 'test_'.
Changes:
- Renamed test_workspace() to workspace_context() in test_utils.py
- Updated import in test_issue_145_production_error_handler.py
- Updated usage in temp_workspace fixture
This eliminates 2 warnings:
PytestReturnNotNoneWarning: Test functions should return None,
but test_workspace returned <class 'contextlib._GeneratorContextManager'>
Test Results:
- Before: 1,160 passed, 0 failed, 38 skipped, 2 warnings
- After: 1,158 passed, 0 failed, 38 skipped, 0 warnings
Note: Test count decreased by 2 because the misnamed functions are no
longer being collected as tests (which is correct behavior).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit fixes two related bugs and removes obsolete tests from the old architecture.
Bug Fixes:
1. CSS Injection Bug: --css option now properly reads and injects custom CSS files
- Added {css_content} placeholder to document.html template
- Implemented CSS file reading logic in both view and edit modes
- Custom CSS is now correctly embedded in generated HTML
2. Theme Application Bug: ChatGPT and Substack themes now render correctly
- Theme CSS generation was working but wasn't being injected
- Fixed by adding CSS placeholder replacement logic
- All theme tests now passing
Test Suite Cleanup (46 obsolete tests removed):
- test_clean_architecture.py (5 tests) - tested old embedded JS approach
- test_issue_132_basic_rendering.py (5 tests) - tested old HTML generation
- test_issue_132_template_system.py (8 tests) - tested old template system
- test_issue_133_cli_integration.py (10 tests) - tested old edit mode
- test_issue_144_edit_mode_regression.py (11 tests) - tested old JS bugs
- test_js_sanity.py (7 tests) - tested old JS validation
These tests were validating the old architecture before the testdrive-jsui v1.0.0 migration.
The new architecture uses standalone JavaScript library, making these tests obsolete.
Test Results:
- Before: 1,256 tests, 1,166 passed, 52 failed (92.8% pass rate)
- After: 1,210 tests, 1,160 passed, 0 failed (100% pass rate)
Modified Files:
- markitect/templates/document.html: Added {css_content} placeholder
- markitect/clean_document_manager.py: Added CSS file reading and injection logic
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add Design Pattern Documentation:
- Add CopyFirstMigration.md - Documents the copy-first migration principle
used in the TestDrive-JSUI capability migration
- Add DontRepeatYourself.md - Documents the DRY principle
- Add DesignPrincipleSchema.json - JSON schema for design pattern documentation
Update Submodule:
- Update testdrive-jsui submodule pointer to include Phase 4 documentation
(migration completion with legacy file cleanup)
Context:
These design pattern examples document the principles applied during the
successful TestDrive-JSUI migration, which serves as a reference implementation
of the copy-first migration pattern.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Updated testdrive-jsui submodule to include:
- Complete TestDriveJSUI JavaScript library (js/testdrive-jsui.js)
- Full editor example (examples/full-editor.html)
- Updated documentation with JavaScript-first architecture
- Complete API reference and event system
This establishes testdrive-jsui as a standalone JavaScript library
with optional Python adapter for integration.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed empty legacy directories:
- markitect/static/js/ (empty after migration)
- testdrive-jsui/ (orphaned placeholder)
Updated testdrive-jsui submodule with cleanup:
- Removed legacy wrapper and updated all tests
- Archived migration docs and prototypes
- All tests passing (68 JS + 3 Python)
The repository is now clean with no migration artifacts or empty
directories remaining.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Created detailed documentation for capabilities concept and integration:
- CAPABILITIES_ARCHITECTURE.md: Full guide on separation of concerns
- CAPABILITIES_QUICK_REFERENCE.md: Quick reference for common tasks
- Updated docs/README.md to reference new documentation
Ensures future sessions respect capability boundaries and use separate
Claude instances for capability development.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added testdrive-jsui as a file-based dependency, following the same pattern as other capability submodules.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Set up testdrive-jsui as a git submodule pointing to separate repository.
This enables independent development and versioning of the testdrive-jsui capability.
The submodule will need manual synchronization of recent refactoring changes:
- Consolidated asset structure (js/, static/)
- Plugin self-declaration methods
- Updated README with standalone usage docs
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
## Major Changes
- Moved all testdrive-jsui assets from root to capabilities/testdrive-jsui/
- Consolidated directory structure: js/, static/css/, static/images/, static/templates/
- Implemented plugin self-declaration (get_plugin_source_dir, get_asset_paths)
- Removed hardcoded plugin discovery from rendering.py
- Updated all asset paths to be relative to capability root
## Architecture Improvements
- Single source of truth for all testdrive-jsui assets
- Plugin declares its own location (no hardcoded paths)
- Generic plugin discovery using hasattr check
- Clean separation: all JS in .js files, no code mixing
- Standalone capability ready for independent use
## Files Changed
- markitect/plugins/testdrive_jsui.py: Added self-declaration methods
- markitect/plugins/rendering.py: Removed hardcoded discovery
- capabilities/testdrive-jsui/README.md: Added standalone usage documentation
- Moved 17 asset files to consolidated structure
- Deleted obsolete /testdrive-jsui/ root directory
## Testing
- All 17 assets verified and working
- Tested via CLI: markitect md-render --engine testdrive-jsui
- Full document rendering successful
Prepares testdrive-jsui to become a git submodule with proper dependency management.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
## Major Changes
- Fixed contents panel scrollbar behavior to only span content area when reaching max-height
- Eliminated duplicate control files across testdrive-jsui/static/ and markitect/static/
- Consolidated all control files to single source of truth in capabilities/testdrive-jsui/js/controls/
- Refactored contents control to use proper base class architecture
## Technical Details
- Moved overflow-y: auto from control-content-container to control-content-body
- Updated all HTML templates and plugin references to use capabilities/ paths
- Enhanced resize handle positioning (moved from -4px to 1px/2px from right edge)
- Improved CSS flex layout with proper min-height: 0 constraints
## Files Affected
- 10 duplicate control files removed
- 8+ reference files updated with new paths
- CHANGELOG.md updated with all changes
This eliminates confusion about which files to edit and ensures the UI
behaves correctly when panels reach viewport height limits.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- Streamlined ContentsControl to use base class generateContent pattern
- Removed duplicate methods and unified content generation approach
- Added overflow: visible to fix content visibility issues
- Fixed resize handle positioning (moved from -4px to 1px/2px from right edge)
- Improved search functionality to properly rebuild content
- Enhanced refresh button detection to prevent conflicts
- Removed unused getDocumentStats method and duplicate code blocks
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix version information display with actual Markitect version
- Implement auto-resize functionality with double-click on resize dot
- Add viewport repositioning to keep panels visible during auto-resize
- Reduce title bar height by 25% for more compact appearance
- Remove duplicate content titles below titlebars across all panels
- Optimize scrollbar positioning to right border with proper spacing
- Reposition resize dot to optimal corner location (bottom: 0px, right: -4px)
- Set default panel height to 1/3 of window height
- Fix Debug panel title formatting consistency
- Remove duplicate initialization warnings
- Clean up panel layout with proper margin management (10px bottom margin)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Base class architecture improvements:
- Centralize all panel layout, styling, and behavior in ControlBase
- Implement consistent generateContent() pattern for subclasses
- Add proper flexbox layout with fixed header and scrollable content
- Standardize title styling, positioning, and scroll behavior
Panel layout fixes:
- Fix content positioning to appear inside panels instead of floating above
- Implement proper height management (expands with content up to browser height)
- Add correct scroll boundaries with only content area scrolling
- Position resize handle outside scroll area to avoid scrollbar interference
Visual improvements:
- Fix rounded border appearance with proper overflow handling
- Ensure header respects panel corner radius
- Add proper content margins and padding
- Improve resize handle positioning and visibility
Architecture standardization:
- All panels now follow same base class pattern
- Individual panels only provide configuration and content generation
- Eliminate duplicate styling and layout code across controls
- Consistent behavior across all panel types
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Panel UI improvements:
- Replace heading elements (h1-h6) with styled divs to avoid navigation interference
- Change ContentsControl position from northwest to west for better accessibility
Panel collapse/expand enhancements:
- Fix panel dragging to prevent unexpected positioning jumps
- Keep panel width and upper-left position when collapsing to header-only mode
- Complete height reduction when collapsed (no minimal size maintained)
- Toggle resize handle visibility based on panel state
Resize handle improvements:
- Change resize symbol from arrow to clean dot (●) in bottom-right corner
- Remove background circle, show transparent dot only
- Fix resize direction to properly follow mouse movement from bottom-right
- Set dynamic minimum size constraints (header height + padding)
- Allow arbitrary panel sizing with proper bounds checking
- Reset panel size to defaults when closed/collapsed
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Remove deprecated DocumentControls from TestDrive JSUI plugin system:
- Remove document-controls.js from plugin asset list
- Remove script reference from HTML template
- Delete legacy document-controls files
- Consolidate all functionality into enhanced control panels
All control panel functionality now provided by enhanced controls:
- ContentsControl (NW): Table of contents and navigation
- StatusControl (E): Document status and metrics
- DebugControl (SE): Debug messages and system info
- EditControl (NE): Editing tools including Reset All button
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add the missing "Reset All" functionality from Legacy Document Control
to the enhanced EditControl panel for complete feature parity.
## New Functionality
- Added "Reset All" button in Document Actions section
- Comprehensive reset functionality with user confirmation
- Resets font size, editing mode, unsaved changes, highlights
- Integrates with SectionManager, DocumentControls, and DebugControl
- Offers page reload as ultimate fallback for complete reset
## Implementation Details
- Button styled consistently with Legacy Document Control (🔄 Reset All)
- Uses #ffc107 background with #212529 text to match legacy styling
- Comprehensive confirmation dialog explains all actions
- Safe operation wrapper with proper error handling
- Graceful fallbacks when integrated components are unavailable
## Integration
- Deployed to both markitect system and deployment source
- Compatible with existing enhanced ControlBase architecture
- Maintains consistency with other EditControl actions
- Ready for immediate use in production environment
Users now have access to the familiar Reset All functionality
within the modern enhanced control panel system.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Successfully resolve deployment issues and verify enhanced control functionality:
## Deployment Resolution
- Fixed source directory mapping: deployment now uses correct enhanced files
- Cleared deployment cache to ensure fresh asset deployment
- Verified all controls properly inherit from enhanced ControlBase class
- Confirmed 5 advanced behaviors are fully functional in production
## Enhanced Control System Live
- Icon-only collapsed state: Controls start as 40px compass-positioned icons
- Expand/drag functionality: Click to expand, drag headers to reposition
- Bottom-left resize: Resize handle (↙) for dynamic panel sizing
- Collapse with position restoration: Close button (✕) returns to original location
- Header toggle: Click titles to show/hide content areas
## Production Verification
- All controls deployed: ContentsControl, StatusControl, DebugControl, EditControl
- Integration confirmed: md-render --edit now shows enhanced control panels
- User testing validated: Interactive behaviors working as specified
- Documentation complete: Implementation notes and commit history preserved
## Cleanup
- Removed obsolete test files moved to capabilities/testdrive-jsui/tests/
- Updated Makefile for enhanced control testing
- Maintained backward compatibility with legacy systems
The enhanced ControlBase system is now fully operational in MarkiTect's
editing environment, providing users with modern, interactive control panels.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
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.
Replace old control initialization pattern (.control.config, .createControl())
with new ControlBase class API (.config, .show()) for all control panels.
This enables the 5 enhanced behaviors:
- Icon-only collapsed state
- Expand/drag functionality
- Bottom-left resize
- Collapse with position restoration
- Header toggle content visibility
All control panels now properly initialize with enhanced ControlBase.
Successfully integrate improved TestDrive-JSUI controls with main MarkiTect system:
## Enhanced Control System
- Updated ControlBase with 5 advanced behaviors from reference implementation
- All controls now support icon-only collapsed state, drag/resize, position restoration
- Seamless integration with md-render --edit command
## Updated Components
- DebugControl: Enhanced with new ControlBase inheritance
- EditControl: Full document editing tools with export/formatting
- StatusControl: Real-time document statistics and metrics
- ContentsControl: Interactive table of contents navigation
## Deployment Integration
- All enhanced controls deployed via asset system
- Compatible with existing edit mode functionality
- Maintains backward compatibility with legacy systems
## Verification
- Successfully renders interactive HTML with md-render --edit
- All control behaviors working in production environment
- Asset deployment system properly handles enhanced controls
The enhanced control system is now live and functional in MarkiTect's editing environment.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implement comprehensive control panel functionality based on reference patterns:
## New Features
- Icon-only collapsed state with compass positioning
- Expand/drag functionality for repositioning panels
- Bottom-left corner resize with minimum size constraints
- Collapse button returns to original position
- Header toggle for content visibility control
## Technical Improvements
- Enhanced DOM structure with expanded/collapsed states
- Robust event handling with automatic cleanup
- State management for drag, resize, expand operations
- Position restoration system for collapse behavior
- Comprehensive styling system with backdrop effects
## Components Added
- Enhanced ControlBase class with 5 core behaviors
- ContentsControl, StatusControl, EditControl, DebugControl panels
- Component discovery system with TDD implementation
- Legacy DocumentControlsLegacy for backward compatibility
## Testing & Documentation
- Interactive test page for behavior validation
- Comprehensive implementation notes
- TDD test suite with 84 passing tests
- Component listing automation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Major version 0.9.0 release documenting the complete plugin infrastructure
implementation that enables JavaScript-first development.
**Added:**
- Plugin Infrastructure Foundation with RenderingEnginePlugin system
- TestDrive JSUI Plugin for independent JavaScript UI development
- CLI Engine Parameter (--engine) with intelligent defaults
- Automatic Asset Deployment to _markitect/plugins/ structure
- Complete JavaScript-Python separation with JSON configuration
**Changed:**
- BREAKING: Edit mode now defaults to testdrive-jsui plugin
- Asset management now automatic (no --ship-assets flag needed)
- JavaScript architecture fully modularized with clean separation
**Fixed:**
- JavaScript const redeclaration and loading conflicts resolved
- Plugin asset deployment and accessibility issues fixed
**Migration Guide:**
- Existing users automatically get new testdrive-jsui for edit mode
- Legacy behavior available with --engine standard
- Assets deploy automatically to output directories
This represents the largest architectural enhancement to date, enabling
independent JavaScript development while maintaining clean integration
with the Python markdown processing pipeline.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>