Release v2.0.0
⚠️ 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→Sceneas 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 systemTransform— affine matrix withVector2andMatrixtypesEventEmitter— typed event systemMathF32— float32-compatible math utilitiesInput— 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.