Skip to content

Release v2.0.0

Choose a tag to compare

@NiceArti NiceArti released this 11 Apr 11:33
· 62 commits to main since this release

⚠️ 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.

  • CoreEngine → Scene 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.