mirror of
https://github.com/The-Low-Code-Foundation/OpenNoodl.git
synced 2026-01-11 23:02:56 +01:00
170 lines
5.6 KiB
Markdown
170 lines
5.6 KiB
Markdown
# TASK-001B: Launcher Fixes & Improvements
|
|
|
|
## Overview
|
|
|
|
This task addresses critical bugs and UX issues discovered after the initial launcher implementation (TASK-001). Four main issues are resolved: folder persistence, service integration, view mode simplification, and project creation UX.
|
|
|
|
## Problem Statement
|
|
|
|
After deploying the new launcher dashboard, several issues were identified:
|
|
|
|
1. **Folders don't appear in "Move to Folder" modal** - The UI and service are disconnected
|
|
2. **Can't create new project** - Using basic browser `prompt()` provides poor UX
|
|
3. **List view is unnecessary** - Grid view should be the only option
|
|
4. **Folders don't persist** - Data lost after `npm run dev:clean` or reinstall
|
|
|
|
## Root Causes
|
|
|
|
### Issue 1: Disconnected Service
|
|
|
|
The `useProjectOrganization` hook creates its own localStorage service instead of using the real `ProjectOrganizationService` from noodl-editor. This creates two separate data stores that don't communicate.
|
|
|
|
```typescript
|
|
// In useProjectOrganization.ts
|
|
// TODO: In production, get this from window context or inject it
|
|
return createLocalStorageService(); // ❌ Creates isolated storage
|
|
```
|
|
|
|
### Issue 2: Poor Project Creation UX
|
|
|
|
The current implementation uses browser `prompt()`:
|
|
|
|
```typescript
|
|
const name = prompt('Project name:'); // ❌ Bad UX
|
|
```
|
|
|
|
### Issue 3: Unnecessary Complexity
|
|
|
|
Both list and grid views were implemented per spec, but only grid view is needed, adding unnecessary code and maintenance burden.
|
|
|
|
### Issue 4: Non-Persistent Storage
|
|
|
|
`ProjectOrganizationService` uses localStorage which is cleared during dev mode restarts:
|
|
|
|
```typescript
|
|
private loadData(): ProjectOrganizationData {
|
|
const stored = localStorage.getItem(this.storageKey); // ❌ Session-only
|
|
}
|
|
```
|
|
|
|
## Solution Overview
|
|
|
|
### Subtask 1: Migrate to electron-store
|
|
|
|
Replace localStorage with electron-store for persistent, disk-based storage that survives reinstalls and updates.
|
|
|
|
**Files affected:**
|
|
|
|
- `packages/noodl-editor/src/editor/src/services/ProjectOrganizationService.ts`
|
|
|
|
**Details:** See `DASH-001B-electron-store-migration.md`
|
|
|
|
### Subtask 2: Connect Service to UI
|
|
|
|
Bridge the real `ProjectOrganizationService` to the launcher context so folders appear correctly in the modal.
|
|
|
|
**Files affected:**
|
|
|
|
- `packages/noodl-editor/src/editor/src/pages/ProjectsPage/ProjectsPage.tsx`
|
|
- `packages/noodl-core-ui/src/preview/launcher/Launcher/hooks/useProjectOrganization.ts`
|
|
- `packages/noodl-core-ui/src/preview/launcher/Launcher/Launcher.tsx`
|
|
- `packages/noodl-core-ui/src/preview/launcher/Launcher/LauncherContext.tsx`
|
|
|
|
**Details:** See `DASH-001B-service-integration.md`
|
|
|
|
### Subtask 3: Remove List View
|
|
|
|
Delete all list view code and make grid view the standard.
|
|
|
|
**Files affected:**
|
|
|
|
- `packages/noodl-core-ui/src/preview/launcher/Launcher/components/ViewModeToggle/` (delete)
|
|
- `packages/noodl-core-ui/src/preview/launcher/Launcher/components/ProjectList/` (delete)
|
|
- `packages/noodl-core-ui/src/preview/launcher/Launcher/views/Projects.tsx`
|
|
- `packages/noodl-core-ui/src/preview/launcher/Launcher/LauncherContext.tsx`
|
|
- `packages/noodl-core-ui/src/preview/launcher/Launcher/Launcher.tsx`
|
|
|
|
**Details:** See `DASH-001B-remove-list-view.md`
|
|
|
|
### Subtask 4: Add Project Creation Modal
|
|
|
|
Replace prompt() with a proper React modal for better UX.
|
|
|
|
**Files to create:**
|
|
|
|
- `packages/noodl-core-ui/src/preview/launcher/Launcher/components/CreateProjectModal/CreateProjectModal.tsx`
|
|
- `packages/noodl-core-ui/src/preview/launcher/Launcher/components/CreateProjectModal/CreateProjectModal.module.scss`
|
|
- `packages/noodl-core-ui/src/preview/launcher/Launcher/components/CreateProjectModal/index.ts`
|
|
|
|
**Files to modify:**
|
|
|
|
- `packages/noodl-editor/src/editor/src/pages/ProjectsPage/ProjectsPage.tsx`
|
|
|
|
**Details:** See `DASH-001B-create-project-modal.md`
|
|
|
|
## Implementation Order
|
|
|
|
The subtasks should be completed in sequence:
|
|
|
|
1. **Electron-store migration** - Foundation for persistence
|
|
2. **Service integration** - Fixes folder modal immediately
|
|
3. **Remove list view** - Simplifies codebase
|
|
4. **Create project modal** - Improves new project UX
|
|
|
|
Each subtask is independently testable and provides immediate value.
|
|
|
|
## Testing Strategy
|
|
|
|
After each subtask:
|
|
|
|
- **Subtask 1:** Verify data persists after `npm run dev:clean`
|
|
- **Subtask 2:** Verify folders appear in "Move to Folder" modal
|
|
- **Subtask 3:** Verify only grid view renders, no toggle button
|
|
- **Subtask 4:** Verify new project modal works correctly
|
|
|
|
## Success Criteria
|
|
|
|
- [x] Folders persist across editor restarts and `npm run dev:clean`
|
|
- [x] "Move to Folder" modal shows all user-created folders
|
|
- [x] Only grid view exists (no list view toggle)
|
|
- [x] Project creation uses modal with name + folder picker
|
|
- [x] All existing functionality continues to work
|
|
|
|
## Dependencies
|
|
|
|
- Phase 3 TASK-001 (Dashboard UX Foundation) - completed
|
|
- electron-store package (already installed)
|
|
|
|
## Blocked By
|
|
|
|
None
|
|
|
|
## Blocks
|
|
|
|
None (this is a bug fix task)
|
|
|
|
## Estimated Effort
|
|
|
|
- Subtask 1: 1-2 hours
|
|
- Subtask 2: 2-3 hours
|
|
- Subtask 3: 1-2 hours
|
|
- Subtask 4: 2-3 hours
|
|
- **Total: 6-10 hours**
|
|
|
|
## Notes
|
|
|
|
- **No backward compatibility needed** - Fresh start with electron-store is acceptable
|
|
- **Delete list view completely** - No need to keep for future revival
|
|
- **Minimal modal scope** - Name + folder picker only (Phase 8 wizard will enhance later)
|
|
- This task prepares the foundation for Phase 8 WIZARD-001 (full project creation wizard)
|
|
|
|
## Related Tasks
|
|
|
|
- **TASK-001** (Dashboard UX Foundation) - Original implementation
|
|
- **Phase 8 WIZARD-001** (Project Creation Wizard) - Future enhancement
|
|
|
|
---
|
|
|
|
_Created: January 2026_
|
|
_Status: ✅ Complete (verified 2026-01-07)_
|