Packages and plugins
One owner for each capability and the reason packages stay focused.
| Package | Owns |
|---|---|
@lupinum/board-core | Nodes, camera, grid, selection, hierarchy, commands, validation, JSON Canvas, events |
@lupinum/vue-board | DOM input, reactive adaptation, rendering, default chrome, minimap subpath |
@lupinum/board-connections | Edge state, commands, persistence, routing, hit testing, optional Vue layer |
@lupinum/board-history | Runtime undo and redo roots |
@lupinum/nuxt-board | Auto-import and style registration |
Plugins install only during construction and expose one named API. The plugin tuple controls engine typing; importing a package alone does not augment every engine.
First-party plugins can participate in the same candidate transaction as core. For example, deleting a node and its incident edges commits atomically. Applications should not build generic plugins against the unsupported internal ABI.
The first-party packages use one lockstep release version. That keeps their internal ABI exact while applications consume only the supported public APIs.