Portal Community

Untracked State Categories

CategoryReason Not Tracked
Viewport (pan, zoom)Transient camera position — users expect free navigation, not undo on pan
Canvas mode transitionsMode reflects the user's intent (view vs. edit) — not a reversible mutation
Node selectionSelection is UI state, not data state — restoring it post-undo would be confusing
Config form editsAuto-saved directly via persistence middleware; separate undo semantics would conflict
Execution state (statuses, logs)Read-only in execution mode; comes from backend, cannot be "undone"
loadWorkflow / deserializeWorkflowA full reload resets history stack — no partial undo into a previous session

Untracked updateNode Calls

// Config field changes go through updateNode but bypass historyAction
updateNode: (id, patch) => {
    // NOTE: This call does NOT use historyAction — it writes directly to the store
    // and triggers the persistence middleware (auto-save)
    set(state => ({
        nodes: state.nodes.map(n =>
            n.id === id ? { ...n, ...patch } : n
        )
    }));
    // Auto-save fires here — no undo entry created
}

Why Config Edits Are Not Undoable

User expectation alignment: Users typically expect Ctrl+Z on a canvas to undo structural changes (dragging, connecting, deleting nodes) — not text they typed into a form field. This mirrors the UX pattern of tools like Figma and Miro where canvas structure is undoable but property panel edits are not.