DitaCraftThe easiest way to edit and publish your DITA files DitaCraft is a comprehensive Visual Studio Code extension for editing and publishing DITA (Darwin Information Typing Architecture) content. It provides syntax highlighting, validation, and seamless integration with DITA-OT for multi-format publishing. Highlights🔗 Smart Navigation - Ctrl+Click on Features🖥️ Language Server Protocol (LSP)
📝 DITA Editing
🔗 Smart Navigation
✅ Advanced Validation
🚀 One-Click Publishing
👁️ Live Preview
📊 Build Output
📂 Activity Bar Views
🗺️ Map Visualizer
🎯 Quick File Creation
⚙️ Flexible Configuration
InstallationFrom VS Code Marketplace
From VSIX
Local Installation for DevelopmentIf you want to install the plugin locally from source code for development or testing: Step 1: PrerequisitesEnsure you have the following installed:
Step 2: Get the Source Code
Step 3: Install Dependencies
This will install all required npm packages (~429 packages). Step 4: Compile TypeScript
This compiles the TypeScript source code to JavaScript in the Step 5: Package the Extension
This creates a Note: If you don't have
Step 6: Install in VS CodeOption A: Install from VSIX
Option B: Run in Development Mode (Recommended for testing)
Step 7: Verify Installation
Step 8: Configure DITA-OT (Optional, for publishing)
Troubleshooting Local InstallationIssue:
|
| Command | Shortcut | Description |
|---|---|---|
| DITA: Validate Current File | Ctrl+Shift+V |
Validate DITA syntax and structure |
| DITA: Publish (Select Format) | Ctrl+Shift+B |
Publish with format selection |
| DITA: Publish to HTML5 | - | Quick publish to HTML5 |
| DITA: Preview HTML5 | Ctrl+Shift+H |
Show live HTML5 preview |
| DITA: Show Map Visualizer | - | Show interactive map hierarchy |
| DITA: Create New Topic | - | Create new DITA topic |
| DITA: Create New Map | - | Create new DITA map |
| DITA: Create New Bookmap | - | Create new bookmap |
| DITA: Configure DITA-OT Path | - | Set DITA-OT installation path |
| DITA: Set Root Map | - | Choose explicit root map for key resolution |
| DITA: Clear Root Map | - | Revert to automatic root map discovery |
| DITA: Validate Workspace | - | Validate all DITA files across workspace |
| DITA: Setup cSpell Configuration | - | Create cSpell config for DITA files |
Spell Checking with cSpell
DitaCraft includes a pre-configured cSpell configuration with comprehensive DITA vocabulary to prevent false "unknown word" errors when using spell checkers.
Setup cSpell
Option 1: Automatic Setup (Recommended)
- Open Command Palette (
Ctrl+Shift+P/Cmd+Shift+P) - Type "DITA: Setup cSpell Configuration"
- Click the command
- DitaCraft will create a
.cspellrc.jsonfile in your workspace root with all DITA terminology pre-configured
Option 2: Manual Setup
- Copy the template
.cspellrc.jsonfrom the DitaCraft project repository - Place it in your workspace root folder
- The configuration includes:
- All DITA 1.3 elements (topic, titlealts, topicref, etc.)
- Common DITA attributes (href, conref, keyref, format, scope, etc.)
- Publishing terms (ditamap, bookmap, ditaval, etc.)
- Specialized configurations for
.dita,.ditamap,.bookmap, and.ditavalfiles
Why cSpell Configuration?
DITA includes many technical terms and element names (like titlealts, conref, keyref) that aren't recognized by standard spell checkers. The pre-configured .cspellrc.json prevents false "unknown word" warnings for these legitimate DITA terms while still catching actual spelling errors in your documentation content.
What's Included in the Configuration
The default cSpell configuration includes:
- DITA elements: topic, concept, task, reference, figure, table, section, and 100+ more
- DITA attributes: href, conref, keyref, conkeyref, format, scope, type, and more
- Map elements: ditamap, topicref, mapref, keydef, reltable, and more
- Bookmap elements: chapter, part, appendix, frontmatter, backmatter, and more
- Learning elements: learningBase, learningObject, learningContent, and more
- Specialized terms: ditaarch, xmlns, OASIS standards, and DITA-OT related terms
Configuration
Basic Settings
{
"ditacraft.ditaOtPath": "C:\\DITA-OT-4.2.1",
"ditacraft.defaultTranstype": "html5",
"ditacraft.outputDirectory": "${workspaceFolder}/out"
}
All Settings
| Setting | Type | Default | Description |
|---|---|---|---|
ditacraft.ditaOtPath |
string | "" |
DITA-OT installation path |
ditacraft.defaultTranstype |
string | "html5" |
Default output format |
ditacraft.outputDirectory |
string | "${workspaceFolder}/out" |
Output directory |
ditacraft.autoValidate |
boolean | true |
Auto-validate on save |
ditacraft.previewAutoRefresh |
boolean | true |
Auto-refresh preview |
ditacraft.previewScrollSync |
boolean | true |
Bidirectional scroll sync |
ditacraft.previewTheme |
string | "auto" |
Preview theme (auto/light/dark) |
ditacraft.previewCustomCss |
string | "" |
Custom CSS for preview |
ditacraft.showProgressNotifications |
boolean | true |
Show progress notifications |
ditacraft.validationEngine |
string | "built-in" |
Validation engine (built-in/typesxml/xmllint) |
ditacraft.ditaOtArgs |
array | [] |
Custom DITA-OT arguments |
ditacraft.enableSnippets |
boolean | true |
Enable code snippets |
ditacraft.maxNumberOfProblems |
number | 100 |
Maximum diagnostics per file |
ditacraft.ditaRulesEnabled |
boolean | true |
Enable Schematron-equivalent DITA rules |
ditacraft.ditaRulesCategories |
string[] | all | Rule categories to activate (mandatory, recommendation, authoring, accessibility) |
ditacraft.crossRefValidationEnabled |
boolean | true |
Validate cross-file references (href, conref, keyref) |
ditacraft.subjectSchemeValidationEnabled |
boolean | true |
Validate attribute values against subject schemes |
ditacraft.rootMap |
string | "" |
Explicit root map path (relative to workspace). Empty = auto-discover |
ditacraft.xmlCatalogPath |
string | "" |
Path to external XML catalog for custom DTD specializations |
Supported Output Formats
DitaCraft supports all DITA-OT transtypes:
- HTML5 - Modern responsive HTML
- PDF - PDF via Apache FOP
- XHTML - XHTML output
- EPUB - EPUB3 e-books
- HTML Help - Windows CHM files
- Markdown - Markdown conversion
Additional formats available through DITA-OT plugins.
Workflows
Navigating Your Documentation Structure
- Open a
.ditamapor.bookmapfile - Ctrl+Click (Cmd+Click on Mac) on any
hrefattribute value in<topicref>elements - The referenced topic file opens in a new tab
- Navigate back and forth between map and topics seamlessly
Example:
<map>
<topicref href="introduction.dita"/> <!-- Ctrl+Click opens introduction.dita -->
<topicref href="chapters/ch1.dita"/> <!-- Works with relative paths -->
<topicref href="overview.dita#intro"/> <!-- Handles fragment IDs -->
</map>
Publishing a Book
- Create bookmap:
DITA: Create New Bookmap - Create chapters:
DITA: Create New Topic(multiple times) - Edit bookmap to reference chapters
- Use Ctrl+Click navigation to quickly jump between bookmap and chapter files
- Validate:
Ctrl+Shift+V - Publish:
Ctrl+Shift+B→ Select format - Open output folder
Previewing Changes
- Open
.ditafile - Make edits
- Press
Ctrl+Shift+Hto preview - Preview auto-refreshes on save
- Toggle between source and preview
Using Filters (DITAVAL)
{
"ditacraft.ditaOtArgs": [
"--filter=filters/product-a.ditaval"
]
}
Development
Building from Source
# Clone repository
git clone https://github.com/jyjeanne/ditacraft.git
cd ditacraft
# Install dependencies
npm install
# Compile TypeScript
npm run compile
# Run tests
npm test
# Package extension
npm run package
Project Structure
ditacraft/
├── src/ # Client-side extension code
│ ├── extension.ts # Entry point
│ ├── commands/ # Command handlers
│ ├── providers/ # Tree views, validation, link & decoration providers
│ ├── utils/ # Utilities (DITA-OT, key space, map parser, rate limiter)
│ └── test/ # Client test suites (620+ tests)
├── server/ # LSP Language Server (separate process)
│ ├── src/
│ │ ├── server.ts # Server entry point & capability registration
│ │ ├── features/ # LSP feature handlers
│ │ │ ├── validation.ts # Diagnostics (XML, DITA structure, IDs)
│ │ │ ├── completion.ts # IntelliSense completions
│ │ │ ├── hover.ts # Hover documentation
│ │ │ ├── symbols.ts # Document & workspace symbols
│ │ │ ├── definition.ts # Go to definition
│ │ │ ├── references.ts # Find references
│ │ │ ├── rename.ts # Rename with reference updates
│ │ │ ├── formatting.ts # XML formatting
│ │ │ ├── codeActions.ts # Quick fixes (9 actions)
│ │ │ ├── linkedEditing.ts # Tag name sync editing
│ │ │ ├── folding.ts # Folding ranges
│ │ │ ├── documentLinks.ts # Clickable links
│ │ │ ├── crossRefValidation.ts # Cross-file reference + scope validation
│ │ │ ├── circularRefDetection.ts # Circular reference detection (DFS)
│ │ │ ├── workspaceValidation.ts # Cross-file duplicate IDs, unused topics
│ │ │ ├── ditaRulesValidator.ts # 35 Schematron-equivalent DITA rules (incl. DITA 2.0)
│ │ │ └── profilingValidation.ts # Subject scheme controlled values
│ │ ├── services/ # Key space, subject scheme, catalog & RNG validation services
│ │ ├── utils/ # XML tokenizer, reference parser, workspace scanner, version detector, i18n
│ │ ├── messages/ # Localization bundles (en.json, fr.json — 76+ message keys)
│ │ └── data/ # DITA schema & specialization data (@class matching)
│ └── test/ # Server test suites (432 tests)
├── dtds/ # DITA 1.2, 1.3, and 2.0 DTD files (master catalog)
├── docs/ # Documentation
│ ├── architecture.puml # Architecture diagram (PlantUML)
│ └── user-guide/ # DITA user guide (55 files, bookmap structure)
├── ARCHITECTURE.md
├── DITA_LSP_ARCHITECTURE.md # LSP server architecture documentation
├── ROADMAP.md
├── TEST_PLAN.md # LSP feature test plan
└── CHANGELOG.md
Quality & Testing
DitaCraft includes comprehensive test coverage across client and server:
Client Tests (620+ tests):
- DTD validation, real-time validation, command & auto-detection
- Link navigation with key resolution, key space building & caching
- Security (path traversal, XXE protection), rate limiting
- Preview, file creation, configuration integration
- Activity bar views: DITA Explorer, Key Space, Diagnostics, file decorations
- Map hierarchy parser (25 tests)
LSP Server Tests (432 tests):
- Reference parser (40 tests) - all 6 exported parsing functions
- XML tokenizer (18 tests) - state machine, error recovery, CRLF, context detection
- XML formatting (20 tests) - indentation, inline, preformatted, edge cases
- Folding ranges (10 tests) - elements, comments, CDATA, CRLF
- Workspace scanner (8 tests) - offset-to-position conversion
- Validation diagnostics (30 tests) - XML, DITA structure, IDs, maps, DITAVAL
- Completions (19 tests) - element, attribute, value, DITAVAL, subject scheme completions
- Hover (17 tests) - documentation, fallback, non-tag, DITAVAL, conref preview
- Document symbols (13 tests) - outline, titles, maps, self-closing
- Workspace symbols (8 tests) - cross-file search, in-memory preference
- Code actions (14 tests) - all 9 quick fixes + edge cases
- Linked editing (15 tests) - tag pairing, nesting, boundaries
- Cross-reference validation - href, conref, keyref target validation
- DITA rules validator - 35 Schematron-equivalent rules (5 categories incl. DITA 2.0)
- Profiling validation - subject scheme controlled value checks
- Subject scheme service - parsing, caching, hierarchy, value constraints
- DITA specialization - @class matching, topic/map type names, utility functions
- DITA version detector - version detection from content (1.0-2.0)
Running Tests:
# Run client tests (requires VS Code)
npm test
# Run server tests (standalone, no VS Code needed)
cd server && npm test
# Compile everything
npm run compile
Known Limitations
Smart Navigation (v0.2.0)
The current implementation provides comprehensive navigation support. Minor limitations include:
Same-file Content References (
@conrefwith#) - e.g.,<ph conref="#v4.3/summary"/>- References starting with
#point to elements within the same file - Currently opens the file but doesn't scroll to the specific element
- References starting with
Conditional Key Definitions
- Keys with DITAVAL conditions may not be resolved correctly
- The key space builder uses the first definition found
External Key Scopes
- Keys defined in external key scopes are not yet supported
- Limited to keys within the workspace
What now works (NEW in v0.2.0):
- ✅
href="path/to/file.dita"- Direct file paths - ✅
href="file.dita#topic_id"- File paths with fragment identifiers - ✅
conref="file.dita#element_id"- Content references - ✅
keyref="key-name"- Key references resolved via key space - ✅
conkeyref="key-name/element"- Content key references - ✅ Automatic root map discovery and key space building
- ✅ Intelligent caching with 1-minute TTL
- ✅ File watcher debouncing (300ms) for performance
Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Add tests for new features
- Ensure all tests pass (
npm test) - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Troubleshooting
DITA-OT Not Found
Problem: Extension shows "DITA-OT not found"
Solution:
- Verify DITA-OT is installed
- Run "DITA: Configure DITA-OT Path" command
- Select DITA-OT installation directory
- Verify with "DITA: Validate Current File"
Validation Errors
Problem: Validation shows unexpected errors
Solution:
- Check XML syntax (closing tags, quotes, etc.)
- Verify DOCTYPE declaration
- Try switching validation engine:
"ditacraft.validationEngine": "built-in"
Publishing Fails
Problem: Publishing fails with error
Solution:
- Check DITA-OT logs in Output panel
- Verify output directory is writable
- Check for syntax errors in DITA file
- Try publishing with
--verboseflag:"ditacraft.ditaOtArgs": ["--verbose"]
Smart Navigation Not Working
Problem: Ctrl+Click on href attributes doesn't open files
Solution:
- Verify you're in a
.ditamapor.bookmapfile (check file extension in status bar) - Hover over the href value - it should be underlined if detected as a link
- Make sure you're clicking on the href value itself (e.g.,
introduction.dita), not the attribute namehref= - Check that the referenced file path is correct and file exists
- Try reloading VS Code window (
Ctrl+R/Cmd+Rin VS Code) - Verify extension is activated (look for "DitaCraft" in Extensions)
Example of correct usage:
<topicref href="introduction.dita"/>
^^^^^^^^^^^^^^^^^^^^
Ctrl+Click here (on the value)
Preview Not Showing
Problem: Preview panel is blank or shows error
Solution:
- Verify HTML5 output was generated
- Check output directory exists
- Look for JavaScript errors in Developer Tools
- Try republishing:
Ctrl+Shift+B→ HTML5
Documentation
DitaCraft includes comprehensive documentation written in DITA format:
📖 User Guide (docs/user-guide/)
A complete DITA bookmap with 55 files covering:
| Section | Contents |
|---|---|
| Part I: Getting Started | Introduction, Installation & Setup |
| Part II: Using DitaCraft | Commands (validation, publishing, file creation, navigation), Features (smart navigation, validation, preview, map visualizer, key resolution) |
| Part III: Configuration | Settings (general, validation, publishing, preview) |
| Appendix | Keyboard Shortcuts reference |
| Backmatter | Glossary (28 terms), Index |
The user guide demonstrates DitaCraft's own capabilities - you can open it in VS Code to test validation, navigation, preview, and publishing features.
Resources
DITA Resources
VS Code Resources
Recent Updates
Version 0.7.0 (Current)
Multi-Version DTD, Workspace Analysis, Glossref & Validation Fixes
- Multi-Version DTD Support — Bundled DITA 1.2, 1.3, and 2.0 DTDs with OASIS XML Catalog chaining;
ditacraft.xmlCatalogPathsetting for custom specializations - Scope Validation — Validates
scope="local|peer|external"consistency with href format (DITA-SCOPE-001/002/003) - Circular Reference Detection — DFS traversal detects structural map reference cycles; only follows topicref/mapref/chapter/etc. (not keydef/xref/link), excludes
.xmlfiles - Workspace Validation —
DITA: Validate Workspacecommand with progress, cross-file duplicate ID detection, and unused topic detection - Glossref Element — Full support across schema, autocompletion, explorer, map visualizer, content model, and hierarchy parser
- Glossentry/Troubleshooting Support — Recognized as valid topic root elements; glossentry validates
<glossterm>as first child (not<title>) - Bookmap in .ditamap — Bookmaps using
.ditamapextension no longer produce false root element errors - SCH-023 Fix — Section title rule now uses depth-tracking to count only direct-child titles (ignores titles in nested
<fig>,<div>, etc.) - SCH-040 Fix — Self-closing
<xref/>no longer triggers false nested-xref error - Bug Fixes — Bookmap title boundary checks, conditional mainbooktitle warning, single-quote ID handling, error ranges, completion position clamping, XML tokenizer CRLF, openFile command
- 652 Client Tests + 435 Server Tests — 1087+ total
Version 0.6.1
Localization, DITA 2.0 Rules, Root Map & Validation Enhancements
- Localization (i18n) — All 67 diagnostic messages translatable; English + French bundles included; auto-detects LSP locale
- DITA 2.0 Rules — 10 new version-specific rules (SCH-050 to SCH-059): removed elements (
<boolean>,<indextermref>,<object>, learning specializations), removed attributes (@print,@copy-to,@navtitle,@query),<audio>/<video>fallback accessibility checks - 35 Total DITA Rules — Expanded from 18 to 35 Schematron-equivalent rules across 5 categories (mandatory, recommendation, authoring, accessibility, DITA 2.0 removal); version-gated per DITA version
- Root Map Feature — Set/clear explicit root map via command palette or clickable status bar item; workspace-level
rootMapsetting; auto-discover mode by default - DITA Specialization —
@classattribute matching for specialization-aware element handling; pre-built matchers for 20+ element types - Catalog Validation Service — DTD validation with OASIS XML Catalog resolution and parser pool (3 concurrent instances)
- RNG Validation Service — Optional RelaxNG schema validation via salve-annos + saxes; grammar compilation with caching (max 20 schemas)
- Subject Scheme Enhancements — Hierarchy path display in completions, grouping by parent subject, default value preselection
- Conref Content Preview — Hover on
conref/conkeyrefshows inline preview of referenced content - Smart Debouncing — Tiered validation delays (300ms topics, 1000ms maps) with per-document cancellation
- Key Scope Support —
@keyscopeattribute handling with scope-qualified key resolution - New Logo — Updated extension icon
- Bug Fixes — Code action single-quote ID handling, DITA Explorer error handling, completion position clamping, XML tokenizer CRLF,
openFiledeclaration
Version 0.6.0
Project Management, Activity Bar Views & Advanced LSP
- Activity Bar Views — DITA Explorer, Key Space, and Diagnostics views in dedicated sidebar
- File Decorations — Error/warning badges on tree items from validation diagnostics
- Cross-Reference Validation — Validates href, conref, keyref, and conkeyref targets across files (6 diagnostic codes)
- DITA Rules Engine — Schematron-equivalent rules in 4 categories (mandatory, recommendation, authoring, accessibility)
- Profiling Validation — Subject scheme controlled value validation with automatic scheme discovery
- Subject Scheme Service — Parses subject scheme maps for controlled vocabularies with caching
- Error-Tolerant XML Tokenizer — State-machine tokenizer with error recovery for malformed XML
- DITA Version Detection — Auto-detects DITA version from
@DITAArchVersionor DOCTYPE - 4 New Code Actions — Add missing
otherrole, remove deprecated<indextermref>, convertaltattribute to element, add missing<alt>to<image> - 5 New Settings —
maxNumberOfProblems,ditaRulesEnabled,ditaRulesCategories,crossRefValidationEnabled,subjectSchemeValidationEnabled - LSP Architecture Documentation — Comprehensive
DITA_LSP_ARCHITECTURE.mddescribing server internals - 1040+ Total Tests — Client (620) + Server (419)
Version 0.5.0
DITA Language Server with IntelliSense
- ✅ Full LSP Implementation - 14 language features in a dedicated server process
- ✅ IntelliSense - Context-aware completion for elements, attributes, and values (364 DITA elements)
- ✅ DITAVAL Support - Full IntelliSense, validation, and hover docs for
.ditavalfiles - ✅ Hover Documentation - Element docs from DITA schema with children fallback
- ✅ Document & Workspace Symbols - Outline view and cross-file symbol search (Ctrl+T)
- ✅ Go to Definition - Navigate href/conref/keyref targets with full key space resolution
- ✅ Find References & Rename - Cross-file ID references and rename with updates
- ✅ Formatting - XML formatter with inline/block/preformatted element handling
- ✅ Code Actions - 5 quick fixes (DOCTYPE, ID, title, empty element, duplicate ID)
- ✅ Linked Editing - Simultaneous open/close tag name editing
- ✅ Folding & Document Links - Collapsible ranges and clickable references
- ✅ Key Space Resolution Fix - Improved root map discovery across nested directories
- ✅ cSpell Auto-Prompt - Suggests cSpell setup when extension detected without config
- ✅ Server Test Suite - 190 standalone Mocha tests (no VS Code dependency)
- ✅ 737+ Total Tests - Client (547) + Server (190) with CI integration
Version 0.4.2
Architecture, Security & Documentation
- ✅ Modular Validation Engine - Refactored validation with pluggable engine architecture
- ✅ Rate Limiting - DoS protection for validation operations (10 req/sec per file)
- ✅ Adaptive Cache Cleanup - Intelligent cache management that skips cleanup when empty
- ✅ Architecture Documentation - Comprehensive ARCHITECTURE.md with data flow diagrams
- ✅ DITA User Guide - Complete user documentation in DITA format (55 files with bookmap, glossary, index)
- ✅ Preview Scroll Sync Fix - Fixed scroll sync for content smaller than viewport
- ✅ Preview Print Mode Fix - Fixed toolbar injection for non-standard HTML structures
- ✅ 547+ Tests - Expanded test suite with security and edge case coverage
Version 0.4.1
TypesXML DTD Validation
- ✅ TypesXML DTD Validation - Pure TypeScript validation with 100% W3C conformance (no native dependencies)
- ✅ OASIS XML Catalog Support - Full DITA public identifier resolution via TypesXML
- ✅ Three Validation Engines - TypesXML (default), built-in, xmllint
Version 0.4.0
Enhanced Preview, Build Output & Map Visualizer
- ✅ DITA Map Visualizer - Interactive tree view showing map hierarchies with navigation
- ✅ Bidirectional Scroll Sync - Editor and preview scroll positions stay synchronized
- ✅ Print Preview Mode - Print-optimized view with dedicated print button
- ✅ Syntax-Highlighted Build Output - DITA-OT output with automatic colorization by log level
- ✅ Log Level Detection - Errors, warnings, info, debug messages auto-classified
- ✅ Build Timestamps - Build start and completion times displayed
- ✅ Circular Reference Detection - Map visualizer detects and warns about circular map references
- ✅ 490+ Tests - Comprehensive test suite with new feature coverage
Version 0.3.0
Developer Experience & Quality Milestone
- ✅ Code Coverage with c8 - Switched from nyc to c8 for VS Code extension-compatible coverage
- ✅ Coverage Threshold Enforcement - CI enforces minimum coverage (62% lines, 65% functions, 73% branches)
- ✅ CI Security Audit - Dedicated security audit job with weekly scheduled scans
- ✅ Cross-Platform CI - Tests run on Windows, macOS, and Linux
- ✅ Dynamic Configuration - Centralized ConfigurationManager with real-time change propagation
- ✅ Advanced Element Navigation - Same-file and cross-file element navigation with fragment support
- ✅ Configurable Settings - Validation debounce, key space TTL, DITA-OT timeout, max link matches
- ✅ Code Quality - Removed unused dependencies, consolidated file reading, standardized async patterns
Version 0.2.4
- ✅ Fixed DITA-OT HTML5 Publishing - Resolved Windows path case sensitivity issue
- ✅ Comprehensive Test Suite - 307+ tests including error handling tests
- ✅ Improved Error Handling - Added
fireAndForgetutility for safe async handling
Version 0.2.0
- ✅ Full Key Space Resolution - Navigate
@keyref,@conkeyref, and key-based references with automatic key space building - ✅ Enhanced Security - XXE neutralization, path traversal protection, and command injection prevention
- ✅ Performance Optimizations - Async file operations, intelligent caching (1-min TTL), and file watcher debouncing
- ✅ Content Reference Navigation - Ctrl+Click on
@conrefattributes to navigate to referenced content - ✅ Better UI Responsiveness - Async operations prevent UI blocking during file operations
Version 0.1.3 Fixes
- ✅ Fixed preview and publishing with paths containing spaces - File paths with spaces now work correctly
- ✅ Fixed DITA validation - Title element is now correctly validated as required per DTD spec
- ✅ Enhanced DTD validation - Added proper DTD validation support with xmllint
- ✅ Improved error messages - Better, more descriptive validation and publishing error messages
- ✅ Fixed file path validation - Comprehensive checks to ensure files are being processed
- ✅ Added verbose logging - Detailed console logging for easier debugging
Roadmap
We have an exciting roadmap planned for DitaCraft! See our detailed ROADMAP.md for:
- v0.3.0 - Developer Experience & Quality ✅ COMPLETE
- v0.4.0 - Enhanced Preview, Build Output & Map Visualizer ✅ COMPLETE
- v0.5.0 - IntelliSense & Content Assistance (LSP, DITAVAL, 737+ tests) ✅ COMPLETE
- v0.6.0 - Project Management, Views & Advanced LSP (1010+ tests) ✅ COMPLETE
- v0.7.0 - Advanced Validation (DITA 1.2/2.0 DTDs, workspace-level analysis) NEXT
- v0.8.0 - Refactoring & Productivity (rename keys, templates)
- v0.9.0 - Publishing Enhancements (profiles, DITAVAL editor)
Contributing
We welcome contributions! Here's how you can help:
Good First Issues
Look for issues labeled good first issue - these are great starting points for new contributors.
Development Setup
git clone https://github.com/jyjeanne/ditacraft.git
cd ditacraft
npm install
npm run compile
# Press F5 in VS Code to run in debug mode
Areas Needing Help
| Area | Difficulty | Description |
|---|---|---|
| Test Coverage | Easy-Medium | Add tests for commands and providers |
| Documentation | Easy | Improve README, add tutorials |
| DITAVAL Editor | Medium | Visual condition editing |
| DTD Support | Hard | Add DITA 1.2/2.0 support |
| DITAVAL Editor | Medium | Visual condition editing |
See ROADMAP.md for detailed feature breakdown and contribution opportunities.
Changelog
See CHANGELOG.md for release history.
Third-Party Licenses & Attributions
DitaCraft includes third-party components with the following licenses:
OASIS DITA 1.3 Grammar Files
This extension bundles DITA 1.3 DTD files for validation purposes.
- Copyright: OASIS Open 2005, 2015. All rights reserved.
- Source: OASIS DITA Technical Committee
- License: OASIS IPR Policy (RF on Limited Terms)
These grammar files are included to enable DTD-based validation of DITA documents, as permitted under the OASIS IPR Policy for implementing the standard.
NPM Dependencies
| Package | License | Purpose |
|---|---|---|
typesxml |
EPL-1.0 | Full DTD validation with OASIS catalog support |
@xmldom/xmldom |
MIT | XML DOM parsing for fallback validation |
fast-xml-parser |
MIT | Fast XML validation and parsing |
For complete license texts, see THIRD-PARTY-NOTICES.md.
License
This project is licensed under the MIT License - see LICENSE file for details.
Support
- 🐛 Bug Reports: GitHub Issues
- 💡 Feature Requests: GitHub Issues
- 💬 Discussions: GitHub Discussions
- 📧 Email: jyjeanne@gmail.com
Acknowledgments
- DITA Open Toolkit team for the excellent DITA-OT
- OASIS DITA Technical Committee
- VS Code extension development community
- All contributors and users
Made with ❤️ for technical writers and documentation teams