Skip to content

Commit d275424

Browse files
authored
Merge pull request #721 from objectstack-ai/copilot/complete-roadmap-flow-designer
2 parents 5a58d0d + 2c48d34 commit d275424

6 files changed

Lines changed: 1734 additions & 12 deletions

File tree

ROADMAP.md

Lines changed: 58 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
> **Spec Version:** @objectstack/spec v3.0.9
66
> **Client Version:** @objectstack/client v3.0.9
77
> **Target UX Benchmark:** 🎯 Airtable parity
8-
> **Current Priority:** AppShell Navigation · Designer Interaction · View Config Live Preview Sync · Dashboard Config Panel · Airtable UX Polish
8+
> **Current Priority:** AppShell Navigation · Designer Interaction · View Config Live Preview Sync · Dashboard Config Panel · Airtable UX Polish · **Flow Designer ✅**
99
1010
---
1111

1212
## 📋 Executive Summary
1313

1414
ObjectUI is a universal Server-Driven UI (SDUI) engine built on React + Tailwind + Shadcn. It renders JSON metadata from the @objectstack/spec protocol into pixel-perfect, accessible, and interactive enterprise interfaces.
1515

16-
**Where We Are:** Foundation is **solid and shipping** — 35 packages, 91+ components, 5,110+ tests, 78 Storybook stories, 42/42 builds passing, ~85% protocol alignment. SpecBridge, Expression Engine, Action Engine, data binding, all view plugins (Grid/Kanban/Calendar/Gantt/Timeline/Map/Gallery), Record components, Report engine, Dashboard BI features, mobile UX, i18n (11 locales), WCAG AA accessibility, Designer Phase 1 (ViewDesigner drag-to-reorder ✅), Console through Phase 20 (L3), and **AppShell Navigation Renderer** (P0.1) — all ✅ complete.
16+
**Where We Are:** Foundation is **solid and shipping** — 35 packages, 91+ components, 5,110+ tests, 78 Storybook stories, 42/42 builds passing, ~85% protocol alignment. SpecBridge, Expression Engine, Action Engine, data binding, all view plugins (Grid/Kanban/Calendar/Gantt/Timeline/Map/Gallery), Record components, Report engine, Dashboard BI features, mobile UX, i18n (11 locales), WCAG AA accessibility, Designer Phase 1 (ViewDesigner drag-to-reorder ✅), Console through Phase 20 (L3), **AppShell Navigation Renderer** (P0.1), and **Flow Designer** (P2.4) — all ✅ complete.
1717

1818
**What Remains:** The gap to **Airtable-level UX** is primarily in:
1919
1. ~~**AppShell** — No dynamic navigation renderer from spec JSON (last P0 blocker)~~ ✅ Complete
@@ -307,15 +307,56 @@ ObjectUI is a universal Server-Driven UI (SDUI) engine built on React + Tailwind
307307

308308
## 🧩 P2 — Polish & Advanced Features
309309

310+
### P2.0 Flow Designer ✅
311+
312+
> **Status:** Complete — `FlowDesigner` component shipped in `@object-ui/plugin-workflow`.
313+
314+
The `FlowDesigner` is a canvas-based flow editor that bridges the gap between the approval-focused `WorkflowDesigner` and the BPMN-heavyweight `ProcessDesigner`. It targets automation/integration flows with spec v3.0.9 types.
315+
316+
**Core Canvas:**
317+
- [x] Drag-to-reposition nodes on SVG canvas
318+
- [x] Undo/redo with keyboard shortcuts (`Ctrl+Z` / `Ctrl+Y`)
319+
- [x] Ctrl+S save shortcut with `onSave` callback
320+
- [x] Zoom in/out/reset controls
321+
- [x] Edge creation by clicking source → target connection ports
322+
- [x] Node deletion via delete button or `Delete` key
323+
324+
**Node Types (spec v3.0.9):**
325+
- [x] Standard nodes: `start`, `end`, `task`, `user_task`, `service_task`, `script_task`, `approval`, `condition`
326+
- [x] Gateway nodes: `parallel_gateway`, `join_gateway`
327+
- [x] Event nodes: `boundary_event`, `delay`, `notification`, `webhook`
328+
329+
**Edges (spec v3.0.9):**
330+
- [x] Edge types: `default`, `conditional`, `timeout`
331+
- [x] Conditional edges with `condition` expression field
332+
- [x] `isDefault` flag for default/fallthrough edge marking
333+
- [x] Visual differentiation: dashed lines for conditional, dotted for default
334+
335+
**Property Panel:**
336+
- [x] Node property editor: label, type, description
337+
- [x] Node executor configuration: `FlowNodeExecutorDescriptor` (type, `inputSchema`, `outputSchema`, `timeoutMs`, retry policy)
338+
- [x] Wait event config for delay nodes: `FlowWaitEventType` (condition/manual/webhook/timer/signal)
339+
- [x] Boundary event config: `FlowBoundaryConfig` (`attachedToNodeId`, `eventType`, `cancelActivity`, `timer`, `errorCode`)
340+
- [x] Edge property editor: label, type, condition expression, `isDefault` toggle
341+
342+
**Spec v3.0.9 Protocol Features:**
343+
- [x] `FlowVersionEntry[]` version history panel with current/previous entries
344+
- [x] `FlowConcurrencyPolicy` badge display (allow/forbid/replace/queue)
345+
- [x] `FlowExecutionStep[]` execution monitoring overlay with per-node status icons
346+
- [x] `FlowBpmnInteropResult` BPMN XML export with warning/error reporting
347+
348+
**ComponentRegistry:**
349+
- [x] Registered as `'flow-designer'` with all inputs documented
350+
310351
### P2.1 Designer — Remaining Interaction (Post-v1.0)
311352

312353
- [ ] PageDesigner: Component drag-to-reorder and drag-to-position
313354
- [ ] ProcessDesigner: Node drag-to-move
314-
- [ ] ProcessDesigner: Support v3.0.9 node types (`parallel_gateway`, `join_gateway`, `boundary_event`)
315-
- [ ] ProcessDesigner: Support v3.0.9 conditional edges and default edge marking
355+
- [x] ProcessDesigner/FlowDesigner: Support v3.0.9 node types (`parallel_gateway`, `join_gateway`, `boundary_event`) — implemented in FlowDesigner
356+
- [x] ProcessDesigner/FlowDesigner: Support v3.0.9 conditional edges and default edge marking — implemented in FlowDesigner
316357
- [ ] ReportDesigner: Element drag-to-reposition within sections
317-
- [ ] Edge creation UI in ProcessDesigner (click source → click target)
318-
- [ ] Property editing for node labels/types in ProcessDesigner
358+
- [x] FlowDesigner: Edge creation UI (click source port → click target port)
359+
- [x] FlowDesigner: Property editing for node labels/types + executor config + boundary config
319360
- [ ] Confirmation dialogs for ProcessDesigner destructive actions
320361

321362
### P2.2 Designer — Advanced Features
@@ -346,11 +387,17 @@ ObjectUI is a universal Server-Driven UI (SDUI) engine built on React + Tailwind
346387
- [ ] `@object-ui/components`: ErrorBoundary wrapper per component
347388
- [ ] `@object-ui/fields`: Inline validation message rendering
348389
- [ ] `@object-ui/plugin-charts`: Drill-down click handler for chart segments
349-
- [ ] `@object-ui/plugin-workflow`: React Flow integration for production canvas
350-
- [ ] `@object-ui/plugin-workflow`: Support v3.0.9 BPMN interop types (`BpmnElementMapping`, `BpmnDiagnostic`, `BpmnVersion`)
351-
- [ ] `@object-ui/plugin-workflow`: Support v3.0.9 node executor descriptors (`NodeExecutorDescriptor`, `WAIT_EXECUTOR_DESCRIPTOR`)
352-
- [ ] `@object-ui/plugin-workflow`: Support v3.0.9 `inputSchema`/`outputSchema` on flow nodes
353-
- [ ] `@object-ui/plugin-workflow`: Support v3.0.9 `boundaryConfig` for boundary event nodes
390+
- [x] `@object-ui/plugin-workflow`: **FlowDesigner** — canvas-based flow editor (`flow-designer` component) with drag-to-reposition nodes, edge creation UI, undo/redo, Ctrl+S save, property panel, and BPMN export
391+
- [x] `@object-ui/plugin-workflow`: Support v3.0.9 BPMN interop types — `FlowBpmnInteropResult` with `bpmnXml` export, `nodeCount`, `edgeCount`, `warnings`
392+
- [x] `@object-ui/plugin-workflow`: Support v3.0.9 node executor descriptors — `FlowNodeExecutorDescriptor` with `inputSchema`, `outputSchema`, wait event config, retry policy
393+
- [x] `@object-ui/plugin-workflow`: Support v3.0.9 `inputSchema`/`outputSchema` on flow nodes via `FlowNodeExecutorDescriptor`
394+
- [x] `@object-ui/plugin-workflow`: Support v3.0.9 `boundaryConfig` for boundary event nodes — `FlowBoundaryConfig` with `attachedToNodeId`, `eventType`, `cancelActivity`, `timer`, `errorCode`
395+
- [x] `@object-ui/plugin-workflow`: Support v3.0.9 node types — `parallel_gateway`, `join_gateway`, `boundary_event` in `FlowNodeType`
396+
- [x] `@object-ui/plugin-workflow`: Support v3.0.9 conditional edges — `FlowEdge.type = 'conditional'` + `isDefault` flag
397+
- [x] `@object-ui/plugin-workflow`: Support v3.0.9 `FlowVersionHistory``FlowVersionEntry[]` with version number, author, changeNote, isCurrent
398+
- [x] `@object-ui/plugin-workflow`: Support v3.0.9 `ConcurrencyPolicy``FlowConcurrencyPolicy` (allow/forbid/replace/queue)
399+
- [x] `@object-ui/plugin-workflow`: Support v3.0.9 `WaitEventType``FlowWaitEventType` (condition/manual/webhook/timer/signal)
400+
- [x] `@object-ui/plugin-workflow`: Support v3.0.9 execution tracking — `FlowExecutionStep` with status overlay on nodes
354401
- [ ] `@object-ui/plugin-ai`: Configurable AI endpoint adapter (OpenAI, Anthropic)
355402
- [ ] Navigation `width` property: apply to drawer/modal overlays across all plugins
356403
- [ ] Navigation `view` property: specify target form/view on record click across all plugins

0 commit comments

Comments
 (0)