Developer Specs V1.0
Guidelines
Contributing Guide
Excellent! We appreciate your interest in advancing the Input-Output ecosystem.
Core Principles
- TypeScript First: All logic is strictly typed.
- Pure Logic: Functional nodes should have zero side effects and zero DOM dependencies.
- IOGL Compliance: Any new node must be registered in the
IOGL-Scribecatalog.
How to Add a New Node
1. Define Metadata
Add the node's visual definition (ID, handles, icon) to src/definitions/nodeDefinitions.ts.
2. Implement Evaluator
Write the pure computation function in src/engine/nodes/. Follow the naming convention [node-id].eval.ts.
3. Register in NodeRegistry
Include the new evaluator in the NodeRegistry to let the Brain recognize it.
4. Create UI Implementation
If the node requires custom UI (e.g., a specific slider or display), implement it in the src/components/nodes/ gallery using our Atomic Design system.
Performance Protocol
- Snapshots: Use
Immerfor allBraintransactions. Never mutate state directly. - Debounce: Transient UI states (dragging) should use a 50ms buffer before updating the Brain.
- Matrices: Heavy data structures should be handled as
REFtypes only. Avoid copying large arrays in history.
Submission Workflow
- Create a feature branch (
feature/your-id). - Run
npm testto verify zero regression. - Submit a PR. Provide a demo video or screenshot if UI changes are involved.
