New page covering the geometry/renderer/system trio that registry-driven kinds opt into. Documents: - The three optional fields on NodeDefinition and when each applies - Generic <GeometrySystem> + <ParametricNodeRenderer> runtime - GeometryContext shape (resolve / children / siblings / parent) - Combination matrix for shelf / spawn / zone / door / window / GLB items - Migration recipe from custom renderer+system files to def.geometry - Rules around purity, dispose-on-rebuild, register-once renderers.md and systems.md gain "prefer registry-driven" banners and link out to the new page. Architecture README adds the page to the index so review-architecture skill picks it up. The pattern was validated by the shelf spike: inline-JSX geometry was visibly laggy on parametric edits; moving to a per-kind system reading dirtyNodes (mirroring door/wall/item) restored smoothness. The three- checkbox model generalises that win so most future kinds need only a pure geometry function. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
26 lines
1.6 KiB
Markdown
26 lines
1.6 KiB
Markdown
# Architecture
|
|
|
|
Canonical rules for code that touches `packages/core`, `packages/viewer`, `packages/editor`, `packages/mcp`, or `apps/editor`. Read on demand from `AGENTS.md` and from `.agents/skills/review-architecture/SKILL.md`.
|
|
|
|
## Pages
|
|
|
|
| Page | Covers |
|
|
|---|---|
|
|
| [layers](layers.md) | Three.js layer constants, ownership, and rendering separation |
|
|
| [systems](systems.md) | Core and viewer systems architecture |
|
|
| [renderers](renderers.md) | Node renderer pattern in `packages/viewer` |
|
|
| [node-definitions](node-definitions.md) | Three-checkbox composition model for registry-driven kinds (`geometry` / `renderer` / `system`) |
|
|
| [tools](tools.md) | Editor tools structure in `apps/editor` |
|
|
| [viewer-isolation](viewer-isolation.md) | Keeping `@pascal-app/viewer` editor-agnostic |
|
|
| [selection-managers](selection-managers.md) | Two-layer selection (viewer + editor), events, outliner |
|
|
| [scene-registry](scene-registry.md) | Global node ID → Object3D map and `useRegistry` |
|
|
| [spatial-queries](spatial-queries.md) | Placement validation (`canPlaceOnFloor`/`Wall`/`Ceiling`) for tools |
|
|
| [node-schemas](node-schemas.md) | Zod schema pattern for node types, `createNode`, `updateNode` |
|
|
| [events](events.md) | Typed event bus — emitting and listening to node and grid events |
|
|
| [creating-rules](creating-rules.md) | How to add or update a page in this folder |
|
|
|
|
## Reading order for an architecture review
|
|
|
|
1. [layers](layers.md), [systems](systems.md), [renderers](renderers.md), [tools](tools.md), [viewer-isolation](viewer-isolation.md) — required every review.
|
|
2. The remaining pages on demand, based on what the diff touches.
|