mirror of
https://github.com/The-Low-Code-Foundation/OpenNoodl.git
synced 2026-01-11 14:52:55 +01:00
5.2 KiB
5.2 KiB
TASK-002 Working Notes: Legacy Project Migration
Research Findings
Project File Structure
Document findings about Noodl project structure here
TODO: Analyze sample .noodl project folders
Expected structure (to be verified):
my-project/
├── project.json # Project metadata
├── components/ # Component definitions
│ └── component-name/
│ └── component.json
├── pages/ # Page definitions
├── styles/ # Style definitions
└── assets/ # Project assets (if any)
Known Version Indicators
Document where version information is stored
TODO: Check these locations for version metadata:
project.jsonroot object- File header comments
- Metadata fields in component files
- Any
.noodl-versionor similar files
Node Definition Changes
Track changes to node definitions across versions
| Node Type | Old API | New API | Version Changed |
|---|---|---|---|
| TBD | TBD | TBD | TBD |
Breaking Changes Map
From TASK-001 Dependency Updates
React 17 → 19
| Change | Impact on Projects | Migration Strategy |
|---|---|---|
ReactDOM.render() deprecated |
May affect stored render patterns | TBD |
| New Suspense behavior | May affect loading states | TBD |
| Concurrent features | May affect event handling | TBD |
react-instantsearch-hooks-web → react-instantsearch
| Change | Impact on Projects | Migration Strategy |
|---|---|---|
| Package rename | Import paths | N/A (editor code only) |
| API changes | TBD | TBD |
Other Dependencies
Add findings here as TASK-001 progresses
Design Decisions
Migration Engine Architecture
Decision: [TBD] Alternatives Considered:
- Option A: ...
- Option B: ... Rationale: ...
Backup Strategy
Decision: [TBD] Options:
- In-place backup (
.backupfolder in project) - External backup location (user-configurable)
- Timestamped copies Rationale: ...
CLI Tool Location
Decision: [TBD] Options:
- New
packages/noodl-cli/package - Add to existing
packages/noodl-platform-node/ - Scripts in
scripts/directory Rationale: ...
Questions & Answers
Q: Where is project version stored?
A: [TBD - needs research]
Q: What's the oldest supported Noodl version?
A: [TBD - needs community input]
Q: Do we have sample legacy projects for testing?
A: [TBD - need to source these]
Q: Should migration be automatic or opt-in?
A: [TBD - needs UX decision]
Gotchas & Surprises
Document unexpected discoveries here
[Discovery 1]
- Date: TBD
- Finding: ...
- Impact: ...
- Resolution: ...
Debug Log
Research Phase
[Date/Time] - Starting project format analysis
- Trying: ...
- Result: ...
- Next: ...
Useful References
Codebase Locations
# Project loading code
packages/noodl-editor/src/editor/src/models/projectmodel.js
# Node definitions
packages/noodl-runtime/src/nodes/
# Runtime context
packages/noodl-runtime/src/nodecontext.js
# Viewer React components
packages/noodl-viewer-react/src/nodes/
Search Commands
# Find project loading logic
grep -r "loadProject\|openProject" packages/noodl-editor/ --include="*.ts" --include="*.js"
# Find version references
grep -r "version" packages/noodl-editor/src/editor/src/models/ --include="*.ts" --include="*.js"
# Find serialization logic
grep -r "serialize\|deserialize\|toJSON\|fromJSON" packages/ --include="*.ts" --include="*.js"
External Documentation
- React 19 Migration: https://react.dev/blog/2024/04/25/react-19
- react-instantsearch v7: https://www.algolia.com/doc/guides/building-search-ui/upgrade-guides/react/
Community Feedback
Collect feedback from Noodl users about migration concerns
User Concerns
- [TBD]
User Requests
- [TBD]
Known Legacy Projects in the Wild
- [TBD - need to identify common project patterns]
Test Project Inventory
| Name | Version | Complexity | Contains | Location |
|---|---|---|---|---|
| TBD | TBD | TBD | TBD | TBD |
Migration Algorithm Pseudocode
function migrateProject(projectPath):
1. detectVersion(projectPath)
2. if currentVersion >= targetVersion:
return SUCCESS (no migration needed)
3. migrationPath = calculateMigrationPath(currentVersion, targetVersion)
4. if migrationPath.length == 0:
return ERROR (no migration path)
5. backup = createBackup(projectPath)
6. for migration in migrationPath:
result = migration.execute(projectPath)
if result.failed:
restoreBackup(backup)
return ERROR (migration failed)
updateVersionMetadata(projectPath, migration.toVersion)
7. validate(projectPath)
8. return SUCCESS
Open Items
- Get access to legacy Noodl projects for testing
- Confirm oldest version we need to support
- Determine if cloud configurations need migration
- Design migration dialog UX
- Decide on CLI package location and build strategy