Until v19 there was exactly one way to drive a Foblex Flow editor - one gesture mapping, one way to create connections, one input device. v19 opens that up: the pointer scheme, the connection gesture, the keyboard, and the AI agents writing code against the library are all first-class now.
Highlights
- Control Schemes -
provideFFlow(withControlScheme(...))maps gestures to actions for the whole editor at once. Miro-like and draw.io-like presets ship out of the box,FControlSchemeControllerswitches them at runtime, and your existing trigger inputs still win. Plain-wheel scroll panning and a separate trackpad pinch step land along the way (#312, #218). - Connection Flows -
withConnectionFlow('click')adds click-to-connect alongside drag (#264). Both gestures drive the new gesture-independentFCreateConnectionSession— preview line, snapping, validation and thefCreateConnectionemission are identical across gestures, and a customType<IFConnectionFlow>gets them for free. - Accessibility - every flow ships ARIA semantics by default (roles, generated connection names, live-region announcements; your attributes are never overridden).
withA11y()enables the keyboard layer: spatial arrow navigation over nodes and connections with selection following directly (aria-activedescendant, no separate focus state),Ctrl+arrow topology walk, hold-or-tapSpacemovement, keyboard connection creation (C→ arrows →Enter),Deleteemitting the newfDeleteSelected, remappable keys and a fully localizable message catalog. - Unified Connector Model - one
[fConnector]directive (source | target | source-target | outlet) replaces thefNodeInput/fNodeOutput/fNodeOutlettrio; connections gain canonicalfSourceId/fTargetId. Legacy APIs keep working, deprecated — migrate at your pace. - AI-Ready Toolchain - dev-mode diagnostics with stable codes (
FF1001–FF1009, documented at flow.foblex.com/docs/errors, stripped from production),ng addinstalls agent rules pointing at the version-matchedAI.mdbundled in the npm package, and the hostedllms.txt/llms-full.txtare CI-validated against the API.
Fixes
- Fast drags no longer lag or jump - the drag anchors to the pointer-down position (#309).
- Safari no longer leaves ghost preview lines after a connection drop (#311).
- A native
<select>inside a node no longer causes a phantom drag after closing. - Connection hover no longer flickers while creating/reassigning connections or dragging nodes.
⚠ Breaking changes
- Flows apply inert ARIA attributes by default; behavior changes only after opting into
withA11y(). Attributes you set yourself always win. FDraggableBasegains two abstract members (fDeleteSelected,fCreateConnectionTrigger) - direct subclasses only.- Unified connector migration notes:
fConnectorMultipledefaults totrue(legacy outputs were single-connection); connector ids are unique across all types;fCanBeConnectedInputs→fCanBeConnectedTo.
Full details: CHANGELOG · Release post