Commit Graph

56 Commits

Author SHA1 Message Date
Richard Osborne
9181d5d83c fix(editor): replace prompt/confirm with proper dialogs in BackendServicesPanel
Electron doesn't support browser prompt()/confirm() APIs.
Replaced with:
- Inline TextInput form for creating local backends
- useConfirmationDialog hook for delete confirmations

Fixes console error when clicking + button on Local Backends section.
2026-01-15 18:43:01 +01:00
Richard Osborne
5f61317ca4 feat(editor): add local backends UI to BackendServicesPanel
- Add useLocalBackends hook for IPC communication with local backend server
- Create LocalBackendCard component for managing local SQLite backends
- Add 'Local Backends' section to BackendServicesPanel
- Support start/stop/delete operations for local backends
- Display status, endpoint URL, and port information

Part of TASK-007D: Launcher Integration
2026-01-15 18:30:42 +01:00
Richard Osborne
98fa779548 feat(local-backend): add WorkflowRunner for visual workflow execution
TASK-007C: Workflow Runtime Integration

- Add WorkflowRunner class to manage CloudRunner instances
- Integrate WorkflowRunner with LocalBackendServer
- Add workflow IPC handlers to BackendManager:
  - backend:update-workflow - Deploy/update a workflow
  - backend:reload-workflows - Hot reload all workflows
  - backend:workflow-status - Get workflow status
- LocalBackendServer now handles /functions/:name endpoints via WorkflowRunner
- WorkflowRunner loads .workflow.json files from backends/{id}/workflows/
2026-01-15 17:44:11 +01:00
Richard Osborne
ddcb9cd02e feat: Phase 5 BYOB foundation + Phase 3 GitHub integration
Phase 5 - BYOB Backend (TASK-007A/B):
- LocalSQL Adapter with full CloudStore API compatibility
- QueryBuilder translates Parse-style queries to SQL
- SchemaManager with PostgreSQL/Supabase export
- LocalBackendServer with REST endpoints
- BackendManager with IPC handlers for Electron
- In-memory fallback when better-sqlite3 unavailable

Phase 3 - GitHub Panel (GIT-004):
- Issues tab with list/detail views
- Pull Requests tab with list/detail views
- GitHub API client with OAuth support
- Repository info hook integration

Phase 3 - Editor UX Bugfixes (TASK-013):
- Legacy runtime detection banners
- Read-only enforcement for legacy projects
- Code editor modal close improvements
- Property panel stuck state fix
- Blockly node deletion and UI polish

Phase 11 - Cloud Functions Planning:
- Architecture documentation for workflow automation
- Execution history storage schema design
- Canvas overlay concept for debugging

Docs: Updated LEARNINGS.md and COMMON-ISSUES.md
2026-01-15 17:37:15 +01:00
Richard Osborne
5badf8a8e3 fix(backend): use absolute path for adapter import
Fix module resolution when Electron runs from different cwd
2026-01-15 17:15:12 +01:00
Richard Osborne
c2e9f37129 feat(editor): integrate local backend IPC handlers
- Add setupBackendIPC() call in app.on('ready')
- Add backendManager.stopAll() cleanup on app before-quit
- Backend IPC now available for renderer process

Test with DevTools:
  await require('@electron/remote').ipcRenderer.invoke('backend:list')
  await require('@electron/remote').ipcRenderer.invoke('backend:create', 'Test')
  await require('@electron/remote').ipcRenderer.invoke('backend:start', backendId)
2026-01-15 16:37:21 +01:00
Richard Osborne
8c0f0c6797 feat(editor): add LocalBackendServer and BackendManager
TASK-007B: Local Backend Server (Phase 5 BYOB)

- Add LocalBackendServer with REST API for database CRUD
- Support /api/:table endpoints for query, create, update, delete
- Support /api/:table/:id for single record operations
- Support /api/_schema for schema management
- Support /api/_batch for batch operations
- Add placeholder for /functions/:name (CloudRunner integration)
- Add BackendManager for backend lifecycle (create, start, stop, delete)
- Add IPC handlers for renderer process communication
- Backends stored in ~/.noodl/backends/{id}/

Next: Integration with main process, UI for backend management
2026-01-15 16:34:42 +01:00
Richard Osborne
39fe8fba27 Finished Blockly prototype, updated project template json 2026-01-12 13:23:12 +01:00
Richard Osborne
9b3b2991f5 feat(blockly): Phase C Step 7 COMPLETE - Code generation & port detection
Wired up complete code generation and I/O detection pipeline:
- Created BlocklyEditorGlobals to expose detectIO and generateCode
- Runtime node accesses detectIO via window.NoodlEditor
- Dynamic port updates based on workspace changes
- Full integration between editor and runtime
- Auto-initialization via side-effect import

Complete flow now works:
1. User edits blocks in BlocklyWorkspace
2. Workspace JSON saved to node parameter
3. IODetector scans workspace for inputs/outputs/signals
4. Dynamic ports created automatically
5. Code generated for runtime execution

Next: Testing and verification
2026-01-11 14:09:54 +01:00
Richard Osborne
4960f43df5 feat(blockly): Phase C Step 6 COMPLETE - Property panel Edit Blocks button
Implemented custom property editor for Logic Builder workspace:
- Created LogicBuilderWorkspaceType with styled button UI
- Added editorType='logic-builder-workspace' to node definition
- Registered LogicBuilderWorkspaceType in Ports.ts mapping
- Button emits LogicBuilder.OpenTab event with node details
- Integrated with existing property panel system

Next: Step 7 - Code generation and port detection
2026-01-11 14:07:32 +01:00
Richard Osborne
fbf01bf0f7 feat(blockly): Phase C Step 5 COMPLETE - NodeGraphEditor tab integration
Full integration of canvas tabs into NodeGraphEditor:
- Added renderCanvasTabs() method to render React tab system
- Added handleBlocklyWorkspaceChange() for workspace persistence
- Added cleanup in dispose() for React roots
- Added event listener for LogicBuilder.OpenTab events
- Tabs now render above canvas with provider wrapping

Ready for Phase C Steps 6-7 (property panel + code generation)
2026-01-11 14:00:51 +01:00
Richard Osborne
f861184b96 feat(blockly): Phase C Step 5 WIP - Add imports and template for tabs
- Updated nodegrapheditor.html template with canvas-tabs-root
- Added imports for CanvasTabsProvider and CanvasTabs
- Added canvasTabsRoot property to NodeGraphEditor class

Next: Add render logic and event handlers
2026-01-11 13:59:44 +01:00
Richard Osborne
30a70a4eb3 feat(blockly): Phase C Steps 1-4 - Core tab system components
Created complete tab system foundation:
- CanvasTabsContext: React Context for tab state management
- CanvasTabs component: Tab UI with canvas/Blockly switching
- Theme-aware SCSS styling using design tokens
- Full TypeScript types and exports

Next: Integrate into NodeGraphEditor, add property panel button
2026-01-11 13:55:04 +01:00
Richard Osborne
5dc704d3d5 feat(blockly): Phase B1 - Register Logic Builder node
- Created IODetector utility to scan workspaces for I/O blocks
- Implemented Logic Builder runtime node with:
  - Dynamic port detection from workspace
  - Code execution context with Noodl API access
  - Signal input triggers for logic execution
  - Error handling and reporting
- Registered node in runtime and added to Custom Code category

The node should now appear in the node picker under Custom Code.
Next: Phase C - Tab system prototype

Part of TASK-012: Blockly Visual Logic Integration
2026-01-11 13:37:19 +01:00
Richard Osborne
554dd9f3b4 feat(blockly): Phase A foundation - Blockly setup, custom blocks, and generators
- Install blockly package (~500KB)
- Create BlocklyWorkspace React component with serialization
- Define custom Noodl blocks (Input/Output, Variables, Objects, Arrays)
- Implement JavaScript code generators for all custom blocks
- Add theme-aware styling for Blockly workspace
- Export initialization functions for easy integration

Part of TASK-012: Blockly Visual Logic Integration
2026-01-11 13:30:13 +01:00
Richard Osborne
6f08163590 new code editor 2026-01-11 09:48:20 +01:00
Richard Osborne
7fc49ae3a8 Tried to complete Github Oauth flow, failed for now 2026-01-10 00:04:52 +01:00
Richard Osborne
67b8ddc9c3 Added custom json edit to config tab 2026-01-08 13:27:38 +01:00
Richard Osborne
4a1080d547 Refactored dev-docs folder after multiple additions to organise correctly 2026-01-07 20:28:40 +01:00
Richard Osborne
3bf411d081 Added styles overhaul task docs 2026-01-06 00:27:56 +01:00
Richard Osborne
d144166f79 Tried to add data lineage view, implementation failed and requires rethink 2026-01-04 22:31:21 +01:00
Richard Osborne
bb9f4dfcc8 feat(topology): shelve Topology Map panel due to visual quality issues
- Disable Topology Map panel in router.setup.ts
- Comment out panel registration (line ~85)
- Add comprehensive SHELVED.md documentation explaining:
  * Why feature was shelved (SVG text layout complexity, visual quality)
  * What was implemented (graph analysis, folder aggregation, etc.)
  * Lessons learned and better approaches for future
  * Alternative enhancement suggestions
- Code remains in codebase for potential future revival
- Recommend React Flow or HTML/CSS approach instead of SVG
2026-01-04 20:07:25 +01:00
Richard Osborne
eb90c5a9c8 Added three new experimental views 2026-01-04 00:17:33 +01:00
Richard Osborne
2845b1b879 Added initial github integration 2026-01-01 21:15:51 +01:00
Richard Osborne
cfaf78fb15 Finished node canvas UI tweaks. Failed to add connection highlighting 2026-01-01 16:11:21 +01:00
Richard Osborne
2e46ab7ea7 Fixed visual issues with new dashboard and added folder attribution 2025-12-31 21:40:47 +01:00
Richard Osborne
73b5a42122 initial ux ui improvements and revised dashboard 2025-12-31 09:34:27 +01:00
Richard Osborne
ae7d3b8a8b New data query node for Directus backend integration 2025-12-30 11:55:30 +01:00
Richard Osborne
6fd59e83e6 Finished HTTP node creation and extensive node creation documentation in project 2025-12-29 08:56:46 +01:00
Richard Osborne
fad9f1006d Finished component sidebar updates, with one small bug remaining and documented 2025-12-28 22:07:29 +01:00
Richard Osborne
5f8ce8d667 Working on the editor component tree 2025-12-23 09:39:33 +01:00
Richard Osborne
89c7160de8 Made visual changes to the migration wizard 2025-12-21 11:27:41 +01:00
Richard Osborne
03a464f6ff React 19 runtime migration complete, AI-assisted migration underway 2025-12-20 23:32:50 +01:00
Richard Osborne
7d307066d8 Added some community improvement suggestions in docs 2025-12-17 09:30:30 +01:00
Richard Osborne
ea45e8b3a3 fix(preview): add missing font MIME types to web server
- Added MIME type mappings for .otf, .woff, and .woff2 font formats
- Fixed missing break statement after .wav case (was falling through to .mp4)
- Fonts now load correctly in editor preview without 404 errors
- Resolves OTS parsing error messages in console

The web server was already serving project directory files correctly,
but browsers were rejecting font files due to missing/incorrect MIME types.

Related to TASK-006
2025-12-15 22:57:48 +01:00
Richard Osborne
0b47d19776 Finished inital project migration workflow 2025-12-15 11:58:55 +01:00
Richard Osborne
1477a29ff7 Started tasks to migrate runtime to React 19. Added phase 3 projects 2025-12-13 22:37:44 +01:00
Richard Osborne
0a95c3906b Fixed click handling bug with editor node canvas 2025-12-08 21:33:14 +01:00
Richard Osborne
ef1ffdd593 feat(typescript): upgrade TypeScript to 5.9.3, remove transpileOnly workaround
- Upgrade TypeScript from 4.9.5 to 5.9.3
- Upgrade @typescript-eslint/parser from 5.62.0 to 7.18.0
- Upgrade @typescript-eslint/eslint-plugin from 5.62.0 to 7.18.0
- Remove transpileOnly: true workaround from webpack.renderer.core.js
- Fix 9 type errors from TS5's stricter checks:
  - PropertyPanelBaseInput.tsx: Fix event handler types
  - keyboardhandler.ts: Fix KeyMod return type
  - model.ts: Remove unused @ts-expect-error directives
  - ScreenSizes.ts: Add proper type guard predicate

Closes TASK-006
2025-12-08 16:09:31 +01:00
Richard Osborne
8fed72d025 Updated project to React 19 2025-12-07 17:32:53 +01:00
Axel Wretman
5bed0a3c17 Update rendering to use non depricated react-dom calls. 2025-09-09 16:16:49 +02:00
Axel Wretman
162eb5f6cb Updated node version, react version and react dependant dependencies. 2025-08-25 18:21:52 +02:00
Richard Osborne
37668399e5 Changed name back to OpenNoodl, updated icons 2024-09-24 22:10:20 +02:00
Richard Osborne
321b6a367c Changed gpt-4 to gpt-4o-mini, verify api no longer working 2024-09-10 10:27:23 +02:00
Eric Tuvesson
f178d1c803 feat: Add Support for Parse Server v7 (#20)
* feat: Upgrade Aggregate queries to latest Parse API

* feat: Save parse server major version in metadata

This can be used to determine which version of the Parse API that will be used.

* fix: Add support for both versions of aggregate queries
2024-08-14 23:15:10 +02:00
Eric Tuvesson
1d295c9462 feat: Allow relative git repository (#41) 2024-08-14 23:12:16 +02:00
Richard Osborne
91fc18437b Updated icons and references to Noodl, plus build scripts 2024-05-02 22:23:53 +02:00
Richard Osborne
ecf124d43d Changed AI API call error conditions 2024-05-02 17:13:27 +02:00
Michael Cartner
6e514f2521 fix: version control panel - show correct state when a push is rejected (#23) 2024-02-06 16:03:04 +01:00
Michael Cartner
c95725ec08 fix: syntax error 2024-01-31 16:05:07 +01:00