Three critical fixes in n8n_update_partial_workflow:
- **#665**: Replace incorrect `isNotEmpty`/`isEmpty` operator names with `notEmpty`/`empty`
across validators, sanitizer, docs, and error messages. Add auto-correction in sanitizer.
Unknown operators silently returned false in n8n's execution engine.
- **#659**: Remap numeric `targetInput` values (e.g., "0") to "main" in addConnection.
Relax sourceOutput remapping guard for redundant sourceOutput+sourceIndex combinations.
Also resolves#653 (dangling connections caused by malformed type:"0" connections).
- **#642**: Implement __patch_find_replace for surgical string edits in updateNode.
Previously stored patch objects literally as jsCode, producing [object Object].
Now reads current value, applies find/replace sequentially, writes back the string.
Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Normalize name→nodeName and id→nodeId for node-targeting operations in
the Zod schema transform, so LLMs using natural field names no longer
get "Node not found" errors
- Replace hardcoded ALL_CONNECTION_TYPES with dynamic iteration so AI
sub-nodes (ai_outputParser, ai_document, ai_textSplitter, etc.) are
not flagged as disconnected during save
- Add .catchall() to workflowConnectionSchema and extend connection
reference validation to cover all connection types, not just main
- Fix filterOperationsByFixes ID-vs-name mismatch: typeversion-upgrade
operations now include nodeName alongside nodeId, and the filter checks
both fields
Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>