FlowCraft – Release Notes
Bug fixes
- Fixed duplicate element IDs after import, undo or redo, which broke connections and layer selection. Older saved diagrams that contain duplicate IDs are repaired automatically when loaded.
- Fixed arrow keys moving canvas elements while the user was typing in a text field elsewhere on the page.
- Fixed duplicated event listeners and keyboard shortcuts when the block is re-initialised (e.g. navigating away and back). The editor is now cleaned up properly when the block is destroyed.
- Removed the fixed 2-second delay before InitialStateJSON was loaded. The state is now applied as soon as the editor is ready, with no timing race.
- Invalid or incomplete JSON no longer clears the canvas. It is rejected and the current diagram is kept.
- PNG export no longer hangs if it fails; it now raises an error. Selection handles are no longer captured in the exported image.
- Shapes now use the block's own colour picker instead of the first colour input on the page.
- Removed a leftover debugger statement, duplicated functions and debug logging.
Security
- HTML from imported JSON and from the CustomeDiv input is now sanitised: scripts, iframes, inline event handlers (on*) and javascript: URLs are removed.
Styling
- All block CSS is now scoped to the component (.flowcraft-root). It no longer changes the host app's body, global resets or scrollbars, and no longer conflicts with OutSystems UI classes such as .card.
- New CSS variables for theming: --fc-accent, --fc-accent-2, --fc-toolbar-bg, --fc-canvas-bg, --fc-wrapper-bg, --fc-border, --fc-text.
New features
- Undo, Redo and Clear canvas buttons in the toolbar.
- Six new shapes in the shape menu: Pentagon, Hexagon, Star, Arrow Right, Parallelogram and Capsule.
- Tooltips and accessibility labels on all toolbar controls.
- Descriptions added for the block, its inputs and its event.
Demo app
- Redesigned demo with a red-and-black glass theme: overview, feature cards, live editor, a State Console that shows the ExportedJSON output and feeds it back through InitialStateJSON (including an invalid-JSON example), and a block API / keyboard shortcut reference.
Compatibility
- No breaking changes. Inputs (InitialStateJSON, CustomeDiv) and the ExportedJSON event are unchanged, and existing saved JSON loads as before.