- Add "Load Project Folder" button with folder selection (webkitdirectory) - Automatically load all project files (JSON, CSV, SVG, CSS) from selected folder - Eliminate need to manually upload each file individually - Show clear errors if referenced files are missing from folder - Update all documentation to explain folder picker usage This solves the browser security limitation where uploading a single project.json doesn't allow automatic access to other files in the same directory. Users can now select an entire project folder and all files load automatically in one click. Changes: - index.html: Add folder input with webkitdirectory attribute and UI - engine.js: Add folderInput event handler to process all files from folder - README.md: Document folder picker as primary loading method - WINDOWS_USAGE.md: Add folder picker as recommended Option 1 - TROUBLESHOOTING.md: Add section explaining project files not auto-loading - CLAUDE.md: Document folder picker architecture for future instances - Makefile: Update DIST_README.md template to mention folder picker Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
10 KiB
Troubleshooting Guide
This document provides solutions to common issues encountered when developing with TimelineSvg.
Quick Reference
| Problem | Quick Fix | See Section |
|---|---|---|
npm install fails with SSL cipher errors in WSL |
export NODE_OPTIONS="--openssl-legacy-provider" && npm install |
npm Install Failures |
| CORS errors when opening index.html | make serve or python3 -m http.server 8000 |
CORS Errors |
| "Template is missing required elements" | Check <defs> section has all 3 template IDs |
Template Validation |
| CSV loads but shows 0 valid items | Verify fieldMapping matches CSV column names |
CSV Data Not Loading |
| Tests failing or timing out | make clean && make install |
Tests Failing |
npm Install Failures in WSL with Node.js v24
Problem Description
Symptoms:
npm installfails with error:ERR_SSL_CIPHER_OPERATION_FAILED- Error message contains:
Provider routines:ossl_gcm_stream_update:cipher operation failed - May also see
ETXTBSY(text file busy) errors during esbuild installation - Occurs specifically in WSL (Windows Subsystem for Linux) environments
- Appears with Node.js v24.x
Error Example:
npm error code ERR_SSL_CIPHER_OPERATION_FAILED
npm error C09CD49A5C750000:error:1C800066:Provider routines:ossl_gcm_stream_update:cipher operation failed:../deps/openssl/openssl/providers/implementations/ciphers/ciphercommon_gcm.c:346:
Root Cause
Node.js v24 upgraded to OpenSSL 3.x, which introduced stricter cipher requirements and different default providers. When running in WSL, there's a compatibility issue between:
- Node.js v24's OpenSSL 3.x implementation
- WSL's kernel/filesystem handling of cryptographic operations
- npm's package extraction process (which uses encryption for tar.gz files)
The cipher operation fails during package decompression, preventing successful installation.
Solution
Quick Fix (Recommended):
Use the provided Makefile, which includes the workaround:
make install
Manual Fix:
If not using the Makefile, set the NODE_OPTIONS environment variable before running npm:
export NODE_OPTIONS="--openssl-legacy-provider"
npm install
Permanent Fix (for your shell session):
Add to your ~/.bashrc or ~/.zshrc:
export NODE_OPTIONS="--openssl-legacy-provider"
Then reload your shell:
source ~/.bashrc
Step-by-Step Recovery
If you're in a broken state with partial installation:
-
Clean everything:
rm -rf node_modules package-lock.json npm cache clean --force -
Install with workaround:
export NODE_OPTIONS="--openssl-legacy-provider" npm install -
Verify installation:
npm testShould show:
58 passed (58)across 3 test files
Alternative Solutions
Option A: Use Node.js v22 (LTS)
If you don't need Node.js v24 features:
# Using nvm (Node Version Manager)
nvm install 22
nvm use 22
npm install
Node.js v22 uses OpenSSL 1.1.1 and doesn't have this issue.
Option B: Use npm's legacy peer deps flag
Sometimes combining flags helps:
export NODE_OPTIONS="--openssl-legacy-provider"
npm install --legacy-peer-deps
Prevention
For New Projects:
Update your project's documentation and Makefile to include the workaround automatically. See the current Makefile for reference.
For CI/CD:
Add to your CI configuration:
# GitHub Actions example
env:
NODE_OPTIONS: "--openssl-legacy-provider"
# GitLab CI example
variables:
NODE_OPTIONS: "--openssl-legacy-provider"
Verification
After applying the fix, verify with:
# Check Node.js version
node --version # Should show v24.x.x
# Check installation succeeded
ls -la node_modules | head -5
# Run tests to confirm everything works
npm test
# Expected output:
# ✓ Test Files 3 passed (3)
# ✓ Tests 58 passed (58)
Related Issues
- esbuild ETXTBSY errors: Often occur together with SSL cipher errors. The same solution fixes both.
- Vitest installation failures: Vitest depends on esbuild, so the fix resolves Vitest installation issues too.
When This Won't Help
This solution specifically addresses Node.js v24 + OpenSSL 3.x + WSL issues. It won't help with:
- Network connectivity problems (check
npm config get registry) - Permissions issues (avoid
sudo npm install, usenvminstead) - Disk space problems (check with
df -h) - Corrupted npm cache (run
npm cache verify)
CORS Errors When Loading Timeline
Problem Description
Symptoms:
- Opening
index.htmldirectly in browser (file:// protocol) - Console shows CORS errors when trying to load CSV, CSS, or SVG files
- Timeline doesn't render, shows "Keine Timeline verfügbar"
Solution
Serve the application via HTTP:
# Using the Makefile (recommended)
make serve
# Or manually with Python 3
python3 -m http.server 8000
# Or with Python 2
python -m SimpleHTTPServer 8000
# Or with Node.js/npx
npx serve -l 8000
Then open: http://localhost:8000
Why This Happens
Browsers enforce CORS (Cross-Origin Resource Sharing) restrictions on file:// URLs for security. Loading external resources (CSV, CSS, SVG) requires HTTP protocol.
Template Validation Errors
Problem Description
Symptoms:
- Error: "Template is missing required elements: month-template"
- Error: "Failed to extract template element"
- Template renders but with empty placeholders
Solution
Check template structure:
-
Open your
template-v2.svgin a text editor -
Verify it has a
<defs>section -
Ensure all three required template elements exist:
<defs> <g id="month-template" style="display:none">...</g> <g id="lane-template" style="display:none">...</g> <g id="item-template" style="display:none">...</g> </defs> -
Check that IDs are exactly as shown (case-sensitive)
-
Verify templates contain proper placeholders (e.g.,
{{MONTH_X}},{{LANE_NAME}})
Common mistakes:
- Template elements outside
<defs>section - Incorrect
idattributes (e.g.,month_templateinstead ofmonth-template) - Missing
style="display:none"(causes templates to show in output) - Malformed XML/SVG (unclosed tags)
Quick fix:
Copy a working template from example/template-v2.svg and modify it.
See TEMPLATE_V2_GUIDE.md for comprehensive template documentation.
Project Files Not Auto-Loading
Problem Description
Symptoms:
- Uploaded project.json but CSV/SVG/CSS files don't load
- Have to manually select each file individually
- Timeline doesn't render after selecting project.json
Solution
This is expected behavior due to browser security restrictions. When you upload a single project.json file, the browser doesn't allow automatic access to other files in the same directory.
Use the Folder Picker (Recommended):
- Click "📂 Load Project Folder" (blue button at top of file manager)
- Select the entire project folder
- All files will be loaded automatically
This works because you're explicitly granting permission to access all files in the folder.
Alternative: Load files individually using the separate upload buttons for CSV, SVG, and CSS.
For developers running from local server: Files auto-load when served via HTTP (no manual upload needed).
CSV Data Not Loading
Problem Description
Symptoms:
- CSV file loads but no items appear
- Debug panel shows "Valid Items: 0"
- Console shows "Keine gültigen Items gefunden"
Solution
Check field mappings:
- Open debug panel in the UI (should show automatically)
- Compare "CSV Structure Preview" headers with "Field Mapping"
- Ensure
project.jsonfield mappings match your CSV column names exactly
Example:
If your CSV has:
Task_ID,Task_Name,Due_Date,Epic
Your project.json must have:
{
"fieldMapping": {
"id": "Task_ID",
"title": "Task_Name",
"lane": "Epic",
"due": ["Due_Date"]
}
}
Check date formats:
Supported formats:
YYYY-MM-DD(e.g.,2025-12-31)YYYY/MM/DD(e.g.,2025/12/31)DD.MM.YYYY(e.g.,31.12.2025)
Unsupported formats will cause items to be filtered out.
Verification
Look at the debug panel:
- "Parsed Rows" should match your CSV row count
- "Valid Items" should equal "Parsed Rows" (or close to it)
- If they differ significantly, check date formats and required fields
Tests Failing
Problem Description
Symptoms:
npm testfails with errors- Tests timeout or hang
- jsdom errors
Solution
Basic troubleshooting:
-
Reinstall dependencies:
make clean make install -
Check Node.js version:
node --version # Should be v22+ or v24+ -
Run specific test file:
npm test test/generator.test.js -
Check test environment:
cat vitest.config.jsShould show
environment: 'jsdom' -
Clear Vitest cache:
rm -rf .vitest node_modules/.vitest npm test
Expected Test Results
All tests passing:
✓ test/generator.test.js (36 tests)
✓ test/engine.test.js (7 tests)
✓ test/integration.test.js (15 tests)
Test Files 3 passed (3)
Tests 58 passed (58)
Need More Help?
-
Check existing documentation:
README.md- Overview and featuresTEMPLATE_V2_GUIDE.md- Template creation and customizationCLAUDE.md- Architecture and development guide
-
Enable debug mode:
- Debug panel shows automatically when loading projects
- Check browser console for detailed error messages
-
Verify file paths:
- All paths in
project.jsonare relative to the project folder - Use forward slashes (
/) not backslashes (\)
- All paths in
-
Test with example project:
# Open browser to http://localhost:8000 # Example project should auto-load successfullyIf example works but your project doesn't, compare configurations.