mirror of
https://github.com/The-Low-Code-Foundation/OpenNoodl.git
synced 2026-01-12 15:22:55 +01:00
Finished component sidebar updates, with one small bug remaining and documented
This commit is contained in:
@@ -0,0 +1,207 @@
|
||||
# TASK-000: Dependency Analysis Report
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| **ID** | TASK-000 |
|
||||
| **Phase** | Phase 1 - Foundation |
|
||||
| **Priority** | 📊 Research/Documentation |
|
||||
| **Type** | Analysis Report |
|
||||
| **Date Created** | July 12, 2025 |
|
||||
| **Related Branches** | `12-upgrade-dependencies`, `13-remove-tsfixmes` |
|
||||
| **Previous Developer** | Axel Wretman |
|
||||
|
||||
## Executive Summary
|
||||
|
||||
This report documents a comprehensive analysis of:
|
||||
1. **Previous developer's dependency update attempts** (merged branches 12 and 13)
|
||||
2. **Current state of all dependencies** across the OpenNoodl monorepo
|
||||
3. **Recommendations** for completing the dependency modernization work
|
||||
|
||||
### Key Findings
|
||||
|
||||
| Category | Status | Action Required |
|
||||
|----------|--------|-----------------|
|
||||
| React 19 Migration | ✅ Done | Minor validation needed |
|
||||
| Storybook 9 Migration | ⚠️ Broken | Scripts need fixing |
|
||||
| Webpack Ecosystem | 🔶 Partial | Plugin updates needed |
|
||||
| Electron | 🔴 Outdated | 31.3.1 → 39.x consideration |
|
||||
| ESLint/TypeScript | 🔴 Outdated | Major version jump needed |
|
||||
| Build Tools | 🔶 Mixed | Various version inconsistencies |
|
||||
|
||||
---
|
||||
|
||||
## Background: Previous Developer's Work
|
||||
|
||||
### Branch 12: `12-upgrade-dependencies`
|
||||
|
||||
**Developer:** Axel Wretman
|
||||
**Key Commits:**
|
||||
- `162eb5f` - "Updated node version, react version and react dependant dependencies"
|
||||
- `5bed0a3` - "Update rendering to use non deprecated react-dom calls"
|
||||
|
||||
**What Was Changed:**
|
||||
|
||||
| Package | Before | After | Breaking? |
|
||||
|---------|--------|-------|-----------|
|
||||
| react | 17.0.2 | 19.0.0 | ✅ Yes |
|
||||
| react-dom | 17.0.0 | 19.0.0 | ✅ Yes |
|
||||
| react-instantsearch-hooks-web | 6.38.0 | react-instantsearch 7.16.2 | ✅ Yes (renamed) |
|
||||
| webpack | 5.74.0 | 5.101.3 | No |
|
||||
| typescript | 4.8.3 | 4.9.5 | No |
|
||||
| @types/react | 17.0.50 | 19.0.0 | ✅ Yes |
|
||||
| @types/react-dom | 18.0.0 | 19.0.0 | No |
|
||||
| node engine | >=16 <=18 | >=16 | No (relaxed) |
|
||||
| Storybook | @storybook/* 6.5.x | storybook 9.1.3 | ✅ Yes |
|
||||
| electron-builder | 24.9.1 | 24.13.3 | No |
|
||||
| electron-updater | 6.1.7 | 6.6.2 | No |
|
||||
| algoliasearch | 4.14.2 | 5.35.0 | ✅ Yes |
|
||||
| express | 4.17.3/4.18.1 | 4.21.2 | No |
|
||||
| ws | 8.9.0 | 8.18.3 | No |
|
||||
| sass | 1.53.0/1.55.0 | 1.90.0 | No |
|
||||
| dugite | 1.106.0 | 1.110.0 | No |
|
||||
|
||||
**Code Changes (React 19 Migration):**
|
||||
- Updated `ReactDOM.render()` calls to use `createRoot()` pattern
|
||||
- Files modified:
|
||||
- `packages/noodl-editor/src/editor/index.ts`
|
||||
- `packages/noodl-editor/src/editor/src/router.tsx`
|
||||
- `packages/noodl-editor/src/editor/src/views/commentlayer.ts`
|
||||
- `packages/noodl-editor/src/editor/src/views/nodegrapheditor.ts`
|
||||
- Several popup/dialog components
|
||||
|
||||
### Branch 13: `13-remove-tsfixmes`
|
||||
|
||||
**Developer:** Axel Wretman
|
||||
**Key Commit:** `960f38c` - "Remove TSFixme from property panel UI"
|
||||
|
||||
**What Was Changed:**
|
||||
- Type safety improvements in `noodl-core-ui` property panel components
|
||||
- No dependency changes
|
||||
- Focused on removing `TSFixme` type escapes from:
|
||||
- `Checkbox.tsx`
|
||||
- `MenuDialog.tsx`
|
||||
- `PropertyPanelInput.tsx`
|
||||
- `PropertyPanelNumberInput.tsx`
|
||||
- `PropertyPanelSliderInput.tsx`
|
||||
- And other property panel components
|
||||
|
||||
---
|
||||
|
||||
## Current State: Critical Issues
|
||||
|
||||
### 1. 🔴 Storybook Scripts Broken
|
||||
|
||||
**Location:** `packages/noodl-core-ui/package.json`
|
||||
|
||||
**Problem:** The package uses Storybook 9.x but has Storybook 6.x commands:
|
||||
```json
|
||||
"scripts": {
|
||||
"start": "start-storybook -p 6006 -s public", // WRONG
|
||||
"build": "build-storybook -s public" // WRONG
|
||||
}
|
||||
```
|
||||
|
||||
**Required Fix:**
|
||||
```json
|
||||
"scripts": {
|
||||
"start": "storybook dev -p 6006",
|
||||
"build": "storybook build"
|
||||
}
|
||||
```
|
||||
|
||||
**Impact:** Storybook cannot run for component development/testing.
|
||||
|
||||
### 2. 🔴 Major Version Gaps
|
||||
|
||||
Several critical dependencies are multiple major versions behind:
|
||||
|
||||
| Package | Current | Latest | Gap |
|
||||
|---------|---------|--------|-----|
|
||||
| electron | 31.3.1 | 39.2.6 | 8 major |
|
||||
| eslint | 8.57.1 | 9.39.1 | 1 major |
|
||||
| @typescript-eslint/* | 5.62.0 | 8.48.1 | 3 major |
|
||||
| dugite | 1.110.0 | 3.0.0 | 2 major |
|
||||
| express | 4.21.2 | 5.2.1 | 1 major |
|
||||
| jest | 28.1.3 | 29.7.0 | 1 major |
|
||||
|
||||
### 3. 🟡 Version Inconsistencies Across Packages
|
||||
|
||||
| Dependency | Root | noodl-editor | noodl-viewer-react | noodl-core-ui |
|
||||
|------------|------|-------------|-------------------|---------------|
|
||||
| typescript | 4.9.5 | 4.9.5 | **5.1.3** | 4.9.5 |
|
||||
| css-loader | - | 6.11.0 | **5.0.0** | - |
|
||||
| webpack-dev-server | 4.15.2 | 4.15.2 | **3.11.2** | - |
|
||||
| @types/jest | - | - | 27.5.2 | 27.5.2 |
|
||||
| style-loader | - | 3.3.4 | **2.0.0** | - |
|
||||
|
||||
### 4. 🟡 Outdated Webpack Plugins
|
||||
|
||||
| Plugin | Current | Latest | Status |
|
||||
|--------|---------|--------|--------|
|
||||
| copy-webpack-plugin | 4.6.0 | 13.0.1 | 🔴 Very outdated |
|
||||
| clean-webpack-plugin | 1.0.1 | 4.0.0 | 🔴 Very outdated |
|
||||
| html-loader | 3.1.2 | 5.1.0 | 🟡 Outdated |
|
||||
| babel-loader | 8.4.1 | 10.0.0 | 🟡 Outdated |
|
||||
| @svgr/webpack | 6.5.1 | 8.1.0 | 🟡 Outdated |
|
||||
|
||||
---
|
||||
|
||||
## Recommendations
|
||||
|
||||
See [RECOMMENDATIONS.md](./RECOMMENDATIONS.md) for detailed prioritized recommendations.
|
||||
|
||||
### Quick Summary
|
||||
|
||||
| Priority | Item | Effort |
|
||||
|----------|------|--------|
|
||||
| 🔴 P0 | Fix Storybook scripts | 5 min |
|
||||
| 🔴 P0 | Standardize TypeScript version | 30 min |
|
||||
| 🟡 P1 | Update webpack plugins | 2 hours |
|
||||
| 🟡 P1 | Update Jest to v29 | 1 hour |
|
||||
| 🟢 P2 | Consider Electron upgrade | TBD |
|
||||
| 🟢 P2 | Consider ESLint 9 migration | 2-4 hours |
|
||||
| 🔵 P3 | Express 5.x (future) | TBD |
|
||||
| 🔵 P3 | Dugite 3.x (future) | TBD |
|
||||
|
||||
---
|
||||
|
||||
## Impact on Other Tasks
|
||||
|
||||
### Updates for TASK-001 (Dependency Updates)
|
||||
|
||||
The following items should be added to TASK-001's scope:
|
||||
- [x] ~~React 19 migration~~ (Already done by previous dev)
|
||||
- [ ] **FIX: Storybook scripts in noodl-core-ui**
|
||||
- [ ] Webpack plugins update (copy-webpack-plugin, clean-webpack-plugin)
|
||||
- [ ] TypeScript version alignment (standardize on 4.9.5 or upgrade to 5.x)
|
||||
- [ ] css-loader/style-loader version alignment
|
||||
- [ ] webpack-dev-server version alignment
|
||||
|
||||
### Updates for TASK-002 (Legacy Project Migration)
|
||||
|
||||
Additional considerations for backward compatibility:
|
||||
- Express 5.x migration would break Parse Dashboard
|
||||
- Electron 31→39 upgrade requires testing all native features
|
||||
- Dugite 3.0 has breaking API changes affecting git operations
|
||||
- Algoliasearch 5.x has different API patterns
|
||||
|
||||
---
|
||||
|
||||
## Related Files
|
||||
|
||||
- [DETAILED-ANALYSIS.md](./DETAILED-ANALYSIS.md) - Full package-by-package breakdown
|
||||
- [RECOMMENDATIONS.md](./RECOMMENDATIONS.md) - Prioritized action items
|
||||
- [IMPACT-MATRIX.md](./IMPACT-MATRIX.md) - Breaking changes impact assessment
|
||||
|
||||
---
|
||||
|
||||
## Methodology
|
||||
|
||||
This analysis was conducted by:
|
||||
1. Examining git history for branches 12 and 13
|
||||
2. Reading all `package.json` files across the monorepo
|
||||
3. Running `npm outdated` to identify version gaps
|
||||
4. Comparing the previous developer's intended changes with current state
|
||||
5. Cross-referencing with existing TASK-001 and TASK-002 documentation
|
||||
Reference in New Issue
Block a user