Home

boring / v2

publicBoring-Software-Inc/v2
Overview Code History Branches Pull requestsIssuesInsights Campfire Docs
main
HomeOverview Code PRsIssues

feat(workflows): grid CRUD + full editor rebuild

3 months ago

9db7d7f
Authored
grim7/16/2026, 6:26:18 PM
Grid at /:org/:repo/workflows: cards (name, enabled toggle, trigger
summary, updated-at), admin CRUD (create/rename/duplicate/delete with a
typed-confirm for LIVE workflows), empty state with face-up templates,
populated state demoting them into the create split-button; members read-
only. Editor at /workflows/:workflowId: full-screen react-flow with every
interaction on (drag/multi-select/delete-key/edge create/reconnect/
delete), dnd-kit sidebar drag-in (screenToFlowPosition), floating toolbox/
properties sidebar rendered purely from the new TRIGGER/GATE/ACTION
catalogs + RULE_CATALOG descriptions, schema-driven param editors (zod
introspection), live validation with node badges + issues panel, save-any-
state drafts, enable gated on validateWorkflowForEnable with surfaced
refusal reasons. Contract evolutions (additive): optional node position;
validateWorkflow moved core→contracts (re-exported) + strict enable
variant (reachable action, catalog config parse). CRUD service keys on the
row id; created/duplicated/template workflows start DISABLED; seeded
adjective-noun name generator with collision retry. 35 new tests
(16 invariant classes, 11 CRUD integration, 7 name-gen, round-trip incl.
positions). No DB migration — positions ride the definition jsonb.

Parentbb25441

34 files changed
  • DECISIONS.md+43−0
  • apps/web/package.json+4−2
  • apps/web/src/components/workflows/editor/canvas.tsx+0−199
  • apps/web/src/components/workflows/editor/editor-header.tsx+165−0
  • apps/web/src/components/workflows/editor/editor-sidebar.tsx+247−0
  • apps/web/src/components/workflows/editor/node-card.tsx+75−11
  • apps/web/src/components/workflows/editor/node-issues.ts+14−0
apps/web/src/components/workflows/editor/properties-panel.tsx
+469
−0
  • apps/web/src/components/workflows/editor/workflow-editor-page.tsx+138−0
  • apps/web/src/components/workflows/editor/workflow-editor.tsx+453−0
  • apps/web/src/components/workflows/workflows-grid-page.tsx+567−0
  • apps/web/src/components/workflows/workflows-page.tsx+0−115
  • apps/web/src/lib/server-fn-classification.ts+8−2
  • apps/web/src/lib/workflow-editor.test.ts+42−2
  • apps/web/src/lib/workflow-editor.ts+12−3
  • apps/web/src/lib/workflow-templates.ts+50−0
  • apps/web/src/lib/workflows.functions.ts+191−30
  • apps/web/src/lib/workflows.query.ts+34−0
  • apps/web/src/routes/$org.$repo.workflows.$workflowId.tsx+19−0
  • apps/web/src/routes/$org.$repo.workflows.index.tsx+20−0
  • apps/web/src/routes/$org.$repo.workflows.tsx+0−18
  • bun.lock+8−0
  • packages/contracts/src/index.ts+1−0
  • packages/contracts/src/rules.ts+25−0
  • packages/contracts/src/workflow-validate.test.ts+178−0
  • packages/contracts/src/workflow-validate.ts+210−0
  • packages/contracts/src/workflow.ts+145−1
  • packages/core/src/workflow/validate.ts+10−133
  • packages/db/src/index.ts+6−0
  • packages/db/src/services/workflows.integration.test.ts+241−0
  • packages/db/src/services/workflows.ts+312−0
  • packages/utils/src/index.ts+4−0
  • packages/utils/src/names.test.ts+54−0
  • packages/utils/src/names.ts+153−0