mirror of
https://github.com/The-Low-Code-Foundation/OpenNoodl.git
synced 2026-01-12 07:12:54 +01:00
218 lines
5.2 KiB
Markdown
218 lines
5.2 KiB
Markdown
# 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.json` root object
|
|
- [ ] File header comments
|
|
- [ ] Metadata fields in component files
|
|
- [ ] Any `.noodl-version` or 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:**
|
|
1. Option A: ...
|
|
2. Option B: ...
|
|
**Rationale:** ...
|
|
|
|
### Backup Strategy
|
|
|
|
**Decision:** [TBD]
|
|
**Options:**
|
|
1. In-place backup (`.backup` folder in project)
|
|
2. External backup location (user-configurable)
|
|
3. Timestamped copies
|
|
**Rationale:** ...
|
|
|
|
### CLI Tool Location
|
|
|
|
**Decision:** [TBD]
|
|
**Options:**
|
|
1. New `packages/noodl-cli/` package
|
|
2. Add to existing `packages/noodl-platform-node/`
|
|
3. 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
1. [TBD]
|
|
|
|
### User Requests
|
|
1. [TBD]
|
|
|
|
### Known Legacy Projects in the Wild
|
|
1. [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
|