Skip to content

Releases: Flowscape-UI/core-sdk

FlowScape 2.0.2

15 Apr 13:59

Choose a tag to compare

Improvements

  • Improved initial Group support
  • Added content-based hit testing for groups
  • Stabilized group interaction and resize workflow
  • Improved editor UX when working with grouped nodes

Notes

  • Advanced rotated-child resize edge cases remain a known limitation
  • Deeper transform system improvements are planned for future releases

v2.0.1 — Scene/Overlay/Input architecture update

14 Apr 13:42

Choose a tag to compare

v2.0.1 (2026-04-14)

This patch focuses on engine internals: scene lifecycle ownership, overlay handle architecture, shape-accurate interaction, and smoother input behavior.

Highlights

  • Scene is now the single lifecycle owner for layer renderers and hosts.
  • Overlay handles/renderers were split by domains: shape, transform, free.
  • Shared base classes were introduced for handles and handle renderers.
  • Hit/hover behavior is now shape-accurate across node types.
  • Wheel/touchpad interaction became more responsive.

Added

  • LayerWorld query/reorder APIs:
  • hasNode
  • findAllNodesAt, findNodesInRect, findNodesFullyInRect
  • findAllNodesAtScreen, findNodesInScreenRect, findNodesFullyInScreenRect
  • moveNodesToTop, moveNodesToBottom, moveNodesTo
  • Path export API for shapes via toPathCommands().
  • New overlay managers for handle domains and corresponding renderer managers.

Changed

  • HandleBase now provides unified behavior for:
  • node binding/clearing
  • normalized positioning defaults
  • hit area size API (hitWidth, hitHeight)
  • debug style API (fill/stroke type, opacity, size, enable/disable)
  • Overlay visual/hover stacking now follows registration order in LayerOverlay.
  • Input coordinate conversion in controllers is centralized via Input.clientToSurfacePoint(...).
  • Quick Start in README.md was updated to current API (addLayer, bindLayerRenderer, addHost).

Fixed

  • Shape-accurate hover/hit for rect, ellipse, polygon, path, line, text.
  • Polygon/path renderer sync issues and NodePath resize behavior.
  • Transform interaction flow: handle priority, click-vs-drag selection behavior, cursor consistency.
  • Wheel handling now accumulates delta per frame.
  • preventDefault for wheel is now scoped to Ctrl+wheel (or explicit global option).

Migration Notes

  • Replace old setup style:
  • scene.layerManager.add(...) -> scene.addLayer(...) + scene.bindLayerRenderer(...)
  • scene.hostManager.add(host) -> scene.addHost(host)

Full Diff

Release v2.0.0

11 Apr 11:33

Choose a tag to compare

⚠️ Breaking Change

v2.0.0 is not backward compatible with v1.x. This release is a full architectural rewrite of the core SDK. The public API, internal structure, and module boundaries have all changed. Migration from v1.x is not straightforward.


🏗️ Architecture

Before: monolithic structure where rendering, input, and logic were tightly coupled inside god objects. Hard to maintain, impossible to extend without touching internals.

After: clean separation of concerns — every system lives in its own module with explicit boundaries. A human can read and maintain this codebase without AI assistance.

  • CoreEngineScene as the canonical entry point
  • Renderer is now modular and swappable
  • No more god objects

🎨 Renderer

Before: renderer was baked directly into node classes, making it impossible to swap without rewriting nodes.

After: renderer is fully decoupled. Nodes describe what to render, renderers decide how. Canvas (Konva) remains the default backend but can now be replaced without touching node logic.


🧩 Nodes

Reduced from ~17 nodes to a focused, composable set. Removed nodes weren't deleted — they became parameters:

Old New
ArcNode NodeEllipse with arc parameters
RingNode NodeEllipse with inner radius
ArrowNode NodeLine with arrowhead config
RegularPolygonNode NodePolygon
GifNode, VideoNode NodeVideo

Less surface area, more power per node.


🔌 Plugin System Removed

The old plugin system had deeply entangled dependencies that were impossible to reason about without tracing the full call graph. It has been removed entirely. The new architecture achieves the same extensibility through explicit module composition instead of implicit plugin hooks.


📐 New Core Primitives

A proper foundational layer now ships as part of the SDK:

  • Camera — full 2D camera with pan, zoom, rotation, coordinate conversion, and lock system
  • Transform — affine matrix with Vector2 and Matrix types
  • EventEmitter — typed event system
  • MathF32 — float32-compatible math utilities
  • Input — layered input system with modular controllers

📁 Structure

The new folder structure mirrors the architecture — each system is self-contained with its own index.ts, types.ts, and implementation files. No more hunting across the codebase to find where something lives.

Release v1.0.8

24 Jan 13:48

Choose a tag to compare

Published to npm: @flowscape-ui/core-sdk@1.0.8

Changes:
See CHANGELOG.md for details.

Release v1.0.7

18 Jan 00:20

Choose a tag to compare

Published to npm: @flowscape-ui/core-sdk@1.0.7

Changes:
See CHANGELOG.md for details.

Release v1.0.6

23 Dec 17:06

Choose a tag to compare

Published to npm: @flowscape-ui/core-sdk@1.0.6

Changes:
See CHANGELOG.md for details.

Release v1.0.5

19 Dec 15:30

Choose a tag to compare

Published to npm: @flowscape-ui/core-sdk@1.0.5

Changes:
See CHANGELOG.md for details.

Release v1.0.4

18 Dec 12:29

Choose a tag to compare

Published to npm: @flowscape-ui/core-sdk@1.0.4

Changes:
See CHANGELOG.md for details.

Release v1.0.3

18 Dec 12:29

Choose a tag to compare

Published to npm: @flowscape-ui/core-sdk@1.0.3

Changes:
See CHANGELOG.md for details.

Release v1.0.2

04 Oct 03:27

Choose a tag to compare

🚀 Release v1.0.2

Published to npm: @flowscape-ui/core-sdk@1.0.2

Changes

See CHANGELOG.md for details.