Skip to content

5685 Surface missing workflow data on the editor canvas - #5705

Merged
ivicac merged 18 commits into
masterfrom
5685
Sep 11, 2026
Merged

ivicac merged 18 commits into
masterfrom
5685

Conversation

@ivicac

@ivicac ivicac commented Sep 9, 2026

Copy link
Copy Markdown
Collaborator

Closes #5685

Workflow problems used to reach the user as toasts that vanish, or not at all. This surfaces them on the canvas: a note above the flow, a badge on every node that has one, and a sidebar listing them per node.

Server

  • Resource references. A property can declare that its value points at an internal platform resource. The data table and knowledge base component properties declare one, and the validator checks each of them through a resolver registered by the owning module. A reference that no longer resolves in the selected environment is reported against its node.
  • Issues per node. The validator's flat message lines are parsed into node-attributed issues (node name, property path, kind, severity) and returned by validateWorkflow over GraphQL.
  • Fewer false positives. Properties the editor adds itself, properties a display condition currently hides, keys of an object property that declares none, and values cleared to null are no longer reported. A task nested in a dispatcher is reported once, against itself.
  • Cluster elements. Elements in an object slot are validated like those in a list, so a model's own missing property is reported. Only the slots the component marks required are reported as missing.
  • Node outputs. A node whose dynamic output cannot be produced no longer breaks the outputs, display conditions and data pills of the nodes after it.

Client

  • A note above the flow counts the errors and warnings, a triangle marks each affected node and cluster element, and a sidebar lists the issues and opens the node's Properties tab.
  • Option, output and display-condition lookup failures are recorded against their node instead of raising a toast.
  • The code editor lists errors and warnings in its own panels.

Tests

  • Server: unit tests across the validator, the two resolvers and the node output facade; every module's check passes (Spotless, Checkstyle, PMD, SpotBugs).
  • Client: 4316 tests pass, plus lint and typecheck.

The knowledge base integration tests fail on this branch and on master alike; they are unrelated to these changes.

CleanShot 2026-09-09 at 16 00 47@2x CleanShot 2026-09-09 at 16 01 17@2x CleanShot 2026-09-09 at 16 01 38@2x CleanShot 2026-09-09 at 16 02 22@2x

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

There are at least two confirmed runtime-safety/type issues in the current diff (resourceReference enum parsing can throw; fitView padding uses px strings) that should be fixed before approval.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR upgrades workflow validation and error surfacing so “missing/broken workflow data” is continuously visible on the workflow editor canvas (node badges, top note, and an issues sidebar) instead of transient toasts or only the JSON editor.

Changes:

  • Server: extends workflow validation with resource-reference resolution (env-aware), structured per-node issues (nodeIssues), and reduced false positives in validation.
  • Client: adds a unified workflow-issues store that merges server validator issues, a client sweep, and live lookup failures; renders issues on the canvas + sidebar; routes lookup failures away from global toasts.
  • API/Schema: extends GraphQL validateWorkflow* to accept environmentId and return nodeIssues.
File summaries
File Description
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorOptionalClusterElementTest.java Adds coverage for required vs optional cluster-element missing warnings.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorNestedTaskAttributionTest.java Adds coverage to attribute nested-task validation errors correctly.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorInputsTest.java Updates test stub to match new facade methods with environment.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorFacadeResourceProviderTest.java Adds tests for env-aware resource-reference provider dispatch.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorFacadeClusterTypesTest.java Adds tests for required cluster-element type key selection.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorEmptyRequiredValueTest.java Adds coverage for required values cleared to null/blank.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorDynamicPropertiesTest.java Adds coverage for dynamic-property and display-condition suppression.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorDuplicateNodeNamesTest.java Updates test stub to match new facade methods with environment.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorClusterElementsTest.java Updates cluster-element assertions and warning expectations.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorClusterElementRequiredPropertyTest.java Adds coverage for missing required properties inside cluster elements.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/PropertyInfoTest.java Adds regression tests around the new resourceType record field.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/WorkflowValidator.java Threads resource-reference provider + required cluster types through validation.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/ValidationErrorUtils.java Adds standardized messages for missing/unverifiable resources.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/ValidationContext.java Carries required-cluster-type logic and resource-reference provider.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/ResourceReferenceValidator.java New recursive validator that checks resource references in parameters.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/PropertyValidator.java Treats null/blank required values as missing; improves undefined-property checks.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/ObjectPropertyValidator.java Stops warning on object keys when a property declares no nested properties.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/NodeValidationIssueParser.java New parser mapping flat validator messages into structured per-node issues.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/DataPillValidator.java Refines loop .item indexing and error wording for loop item type checks.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/build.gradle.kts Adds dependency needed by resource-reference validation integration.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-graphql/src/test/java/com/bytechef/platform/workflow/validator/web/graphql/WorkflowValidatorGraphQlControllerTest.java Adds coverage for optional env argument forwarding.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-graphql/src/main/resources/graphql/workflow-validator.graphqls Extends GraphQL schema with environmentId and nodeIssues.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-graphql/src/main/java/com/bytechef/platform/workflow/validator/web/graphql/WorkflowValidatorGraphQlController.java Adds optional environmentId arguments and routes to correct facade overload.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-api/src/main/java/com/bytechef/platform/workflow/validator/WorkflowValidatorFacade.java Adds env-aware validation API and introduces node issue model types.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-api/src/main/java/com/bytechef/platform/workflow/validator/ResourceReferenceResolver.java New SPI for module-owned resource reference resolution.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-api/src/main/java/com/bytechef/platform/workflow/validator/model/PropertyInfo.java Adds resourceType to property metadata shape and maintains legacy constructors.
server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-api/build.gradle.kts Exposes definition-api to reference ResourceType.
server/libs/platform/platform-knowledge-base/platform-knowledge-base-service/src/test/java/com/bytechef/platform/knowledgebase/service/KnowledgeBaseReferenceResolverTest.java Adds unit tests for knowledge-base resource resolver.
server/libs/platform/platform-knowledge-base/platform-knowledge-base-service/src/test/java/com/bytechef/platform/knowledgebase/service/KnowledgeBaseReferenceResolverRegistrationTest.java Adds spring-context registration tests for conditional resolver bean.
server/libs/platform/platform-knowledge-base/platform-knowledge-base-service/src/main/java/com/bytechef/platform/knowledgebase/service/KnowledgeBaseReferenceResolver.java Implements ResourceReferenceResolver for knowledge bases (env-aware).
server/libs/platform/platform-knowledge-base/platform-knowledge-base-service/build.gradle.kts Adds dependency on workflow-validator API for resolver SPI.
server/libs/platform/platform-data-table/platform-data-table-service/src/test/java/com/bytechef/platform/data/table/configuration/service/DataTableReferenceResolverTest.java Adds unit tests for data-table resource resolver.
server/libs/platform/platform-data-table/platform-data-table-service/src/main/java/com/bytechef/platform/data/table/configuration/service/DataTableReferenceResolver.java Implements ResourceReferenceResolver for data tables (env-aware).
server/libs/platform/platform-data-table/platform-data-table-service/build.gradle.kts Adds dependency on workflow-validator API for resolver SPI.
server/libs/platform/platform-configuration/platform-configuration-service/src/test/java/com/bytechef/platform/configuration/facade/WorkflowNodeOutputFacadeTest.java Adds regression test ensuring failed dynamic outputs don’t break downstream outputs.
server/libs/platform/platform-configuration/platform-configuration-service/src/main/java/com/bytechef/platform/configuration/facade/WorkflowNodeOutputFacadeImpl.java Swallows dynamic-output failures for “previous nodes” while keeping strict behavior elsewhere.
server/libs/platform/platform-component/platform-component-api/src/test/java/com/bytechef/platform/component/domain/PropertyResourceTypeTest.java Adds test coverage for resourceReference metadata propagation to platform properties.
server/libs/platform/platform-api/src/main/java/com/bytechef/platform/domain/BaseProperty.java Reads resourceReference from metadata and exposes it on platform BaseProperty.
server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/trigger/DataTableRecordUpdatedTrigger.java Marks data-table “table” property as a resource reference.
server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/trigger/DataTableRecordDeletedTrigger.java Marks data-table “table” property as a resource reference.
server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/trigger/DataTableRecordCreatedTrigger.java Marks data-table “table” property as a resource reference.
server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/action/DataTableUpdateRecordAction.java Marks data-table “table” property as a resource reference.
server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/action/DataTableGetRecordAction.java Marks data-table “table” property as a resource reference.
server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/action/DataTableFindRecordsAction.java Marks data-table “table” property as a resource reference.
server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/action/DataTableDeleteRecordsAction.java Marks data-table “table” property as a resource reference.
server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/action/DataTableCreateRecordsAction.java Marks data-table “table” property as a resource reference.
server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/action/DataTableClearTableAction.java Marks data-table “table” property as a resource reference.
server/libs/modules/components/ai/vectorstore/knowledgebase/src/test/resources/definition/knowledgeBase_v1.json Updates generated definition JSON to include resourceReference metadata.
server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/util/KnowledgeBaseVectorStore.java Marks knowledge base id property as a resource reference.
server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/cluster/KnowledgeBaseUpdateTool.java Marks knowledge base id property as a resource reference.
server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/cluster/KnowledgeBaseSearchTool.java Marks knowledge base id property as a resource reference.
server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/action/KnowledgeBaseUpdateAction.java Marks knowledge base id property as a resource reference.
server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/action/KnowledgeBaseSearchAction.java Marks knowledge base id property as a resource reference.
server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/action/KnowledgeBaseLoadAction.java Marks knowledge base id property as a resource reference.
server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/action/KnowledgeBaseDeleteAction.java Marks knowledge base id property as a resource reference.
sdks/backend/java/definition-api/src/main/java/com/bytechef/definition/BaseProperty.java Adds ResourceType enum and resource-reference metadata key to the SDK API.
sdks/backend/java/component-api/src/test/java/com/bytechef/component/definition/ComponentDslResourceReferenceTest.java Adds tests for DSL metadata emission of resource references.
sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ComponentDsl.java Adds .resourceReference(...) DSL helper storing metadata.
client/src/shared/util/workflowNodeLookupUrl.ts Adds URL parser to attribute lookup failures to workflow nodes/properties.
client/src/shared/util/tests/workflowNodeLookupUrl.test.ts Adds unit tests for workflow-node lookup URL parsing.
client/src/shared/middleware/graphql.ts Updates validateWorkflow query types and selection to include nodeIssues + env.
client/src/shared/middleware/graphql-types.ts Adds GraphQL types for workflow issues and env args on validation queries.
client/src/shared/constants.tsx Adds CANVAS_TOP_OFFSET and supports layout shifts with issues UI.
client/src/pages/platform/workflow-editor/WorkflowEditorLayout.tsx Wires issues sweep/validation, mounts issues sidebar, removes retired ErrorsBanner.
client/src/pages/platform/workflow-editor/utils/tests/openNodeDetails.test.ts Adds test ensuring opening node details closes the issues sidebar.
client/src/pages/platform/workflow-editor/utils/openNodeDetails.ts Centralizes node-opening logic and ensures issues sidebar closes when opening details.
client/src/pages/platform/workflow-editor/utils/openIssuesSidebar.ts Adds helper to open issues sidebar and close competing right-docked panels.
client/src/pages/platform/workflow-editor/utils/describeWorkflowIssueCounts.ts Adds shared formatting for “X errors, Y warnings”.
client/src/pages/platform/workflow-editor/utils/collectWorkflowIssues.ts Adds client-side sweep to detect missing reference roots and duplicates.
client/src/pages/platform/workflow-editor/utils/collectWorkflowIssues.test.ts Adds tests for sweep behavior across nested tasks and expression parsing.
client/src/pages/platform/workflow-editor/stores/useWorkflowIssuesStore.ts Adds a unified issues store with merge/dedupe rules and live lookup failure tracking.
client/src/pages/platform/workflow-editor/stores/tests/useWorkflowIssuesStore.test.ts Adds unit tests for issue keying, merging, ordering, and store operations.
client/src/pages/platform/workflow-editor/providers/workflowEditorReadOnlyContext.ts Adds read-only context used to suppress issue UI in read-only editor mounts.
client/src/pages/platform/workflow-editor/nodes/WorkflowNode.test.tsx Adds coverage that nodes display an issue badge when issues exist.
client/src/pages/platform/workflow-editor/hooks/useWorkflowLayout.ts Adds “Workflow Issues” rail behavior and closes conflicts when toggling panels.
client/src/pages/platform/workflow-editor/hooks/useWorkflowIssuesValidation.ts Adds hook fetching validator nodeIssues and storing them with env scoping.
client/src/pages/platform/workflow-editor/hooks/useWorkflowIssuesSweep.ts Adds hook to populate sweep issues whenever workflow structure changes.
client/src/pages/platform/workflow-editor/hooks/useWorkflowIssues.ts Adds merged issues selector hook (live + validator + sweep).
client/src/pages/platform/workflow-editor/hooks/useWorkflowEditorCanvas.ts Accounts for issues sidebar width and sets viewport top offset.
client/src/pages/platform/workflow-editor/hooks/useWorkflowCodeEditorSheet.ts Adds warnings panel support and exposes warnings state/refs.
client/src/pages/platform/workflow-editor/hooks/useNodeIssues.ts Adds per-node issue aggregation for badges (incl. cluster-element matching).
client/src/pages/platform/workflow-editor/hooks/useNodeClick.ts Refactors click behavior to reuse shared openNodeDetails.
client/src/pages/platform/workflow-editor/hooks/useLayout.tsx Updates layout shift animation to account for issues sidebar open/close.
client/src/pages/platform/workflow-editor/hooks/useFlowCenterOffset.ts Adds computed center offset so the top issues note stays visually centered.
client/src/pages/platform/workflow-editor/hooks/useDelayedUnmount.ts Adds reusable “delayed unmount” hook for sidebar open/close transitions.
client/src/pages/platform/workflow-editor/hooks/tests/useWorkflowIssuesValidation.test.ts Adds tests for env-scoped query variables and validator-issue storage/clearing.
client/src/pages/platform/workflow-editor/hooks/tests/useNodeClick.test.ts Adjusts mocks to support new store usage via getState.
client/src/pages/platform/workflow-editor/components/WorkflowRightSidebar.tsx Adds “Workflow Issues” rail button with count badge and active state.
client/src/pages/platform/workflow-editor/components/WorkflowNodeIssueBadge.tsx Adds node-level issue indicator badge (suppressed in read-only).
client/src/pages/platform/workflow-editor/components/WorkflowIssuesSidebar.tsx Adds right-docked issues sidebar grouped by node with click-to-open behavior.
client/src/pages/platform/workflow-editor/components/WorkflowIssuesNote.tsx Adds top-center note summarizing issues and opening sidebar.
client/src/pages/platform/workflow-editor/components/WorkflowEditorToolbar.tsx Adjusts Fit View behavior to reserve top space for issue note/tooling.
client/src/pages/platform/workflow-editor/components/WorkflowEditor.tsx Adds read-only context provider and swaps hint for issues note when needed.
client/src/pages/platform/workflow-editor/components/WorkflowCodeEditorSheet.tsx Adds warnings panel UI and increases sheet width.
client/src/pages/platform/workflow-editor/components/tests/WorkflowIssuesSidebar.test.tsx Adds tests for sidebar grouping and node-opening integration.
client/src/pages/platform/workflow-editor/components/tests/WorkflowIssuesNote.test.tsx Adds tests for fallback replacement, View behavior, and read-only suppression.
client/src/pages/platform/workflow-editor/components/tests/ErrorsBanner.test.tsx Removes retired ErrorsBanner tests.
client/src/pages/platform/workflow-editor/components/ErrorsBanner.tsx Removes retired ErrorsBanner component.
client/src/pages/platform/workflow-editor/components/properties/components/property-code-editor/property-code-editor-dialog/PropertyCodeEditorDialogRightPanelInput.tsx Minor layout adjustment in code editor right panel UI.
client/src/pages/platform/workflow-editor/components/properties/components/property-code-editor/property-code-editor-dialog/PropertyCodeEditorDialogRightPanelConnections.tsx Minor layout adjustment in code editor right panel UI.
client/src/pages/platform/workflow-editor/components/hooks/useWorkflowNodeDetailsPanel.ts Fixes properties-tab fallback logic when operation has no properties.
client/src/pages/automation/project/Project.tsx Tweaks sidebar transition easing curve for consistency with other panels.
client/src/graphql/platform/configuration/validateWorkflow.graphql Updates query to send environmentId and fetch nodeIssues.
client/src/ee/pages/embedded/workflow-builder/config/useFetchInterceptor.ts Routes workflow-node lookup failures into issues store instead of global toasts.
client/src/ee/pages/embedded/workflow-builder/config/tests/useFetchInterceptor.test.ts Adds tests for recording/clearing lookup failures into issues store.
client/src/ee/pages/embedded/integration/Integration.tsx Tweaks sidebar transition easing curve.
client/src/ee/pages/embedded/automation-workflow/AutomationWorkflow.tsx Tweaks sidebar transition easing curve.
client/src/config/useFetchInterceptor.ts Routes workflow-node lookup failures into issues store instead of global toasts.
client/src/config/tests/useFetchInterceptor.test.ts Adds tests for recording/clearing lookup failures into issues store.
Review details
  • Files reviewed: 116/116 changed files
  • Comments generated: 2
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@ivicac
ivicac force-pushed the 5685 branch 3 times, most recently from 3a98b46 to 51abe62 Compare September 9, 2026 11:26
@ivicac
ivicac requested a review from kresimir-coko September 9, 2026 11:33
@ivicac
ivicac force-pushed the 5685 branch 8 times, most recently from 19295d6 to 19013f2 Compare September 9, 2026 19:17
@sonarqubecloud

Copy link
Copy Markdown

@ivicac
ivicac merged commit ec3c027 into master Sep 11, 2026
9 checks passed
@ivicac
ivicac deleted the 5685 branch September 11, 2026 08:48
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] Surface missing workflow data on the editor canvas

2 participants