Portal Community

How Saving Works

When you make changes to the workflow graph (add a node, connect nodes, change a configuration value), the workflowStore marks the workflow as dirty (isDirty: true). The dirty state is visible as a dot in the toolbar next to the process name.

Saving serialises the full graph — all nodes, their positions, their configurations, and all edges — and sends it as a single JSON payload to the backend:

PUT /api/v1/flow-studio/threads/{threadId}/graph
Content-Type: application/json

{
  "nodes": [...],
  "edges": [...],
  "groups": [...],
  "viewport": { "x": 0, "y": 0, "zoom": 1 }
}

How to Save

MethodAction
Keyboard shortcutCtrl+S (Windows/Linux) or Cmd+S (Mac)
Toolbar buttonClick the save icon in the Top Toolbar (only visible when isDirty)
Mode switch promptWhen switching to Execution Mode with unsaved changes, a prompt asks to save first
Exit promptWhen navigating to the dashboard, a dialog asks to save and unlock

The isDirty Indicator

The dirty indicator is a small orange dot that appears next to the process name in the Top Toolbar. It disappears immediately when the save API call returns success. If the save fails, the dot remains and a toast notification explains the error.

What Happens After Saving

Undo History Clears on Save This is an important constraint. After saving, you cannot undo changes made before the save. If you need to experiment with significant changes, consider creating a duplicate thread to preserve the current state.

Node Configuration Auto-Save

While the graph requires explicit saving, node configuration form values (in the right panel) are written back to the in-memory workflowStore node config as you type. This does not hit the server — it just updates the in-memory state, which will be included in the next full graph save.

Save Conflicts

Because only one user can hold the edit lock, save conflicts are rare. However, if your lock expires and another user acquires it, your next save attempt returns 409 Conflict. Flow Studio will:

  1. Show a conflict dialog explaining that the lock has changed
  2. Offer to download your current unsaved changes as a JSON file
  3. Reload the canvas with the current server state