mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-04 23:20:07 +00:00
* feat: Implement CRDT-based layout system for Vue nodes Major refactor to solve snap-back issues and create single source of truth for node positions: - Add Yjs-based CRDT layout store for conflict-free position management - Implement layout mutations service with clean API - Create Vue composables for layout access and node dragging - Add one-way sync from layout store to LiteGraph - Disable LiteGraph dragging when Vue nodes mode is enabled - Add z-index management with bring-to-front on node interaction - Add comprehensive TypeScript types for layout system - Include unit tests for layout store operations - Update documentation to reflect CRDT architecture This provides a solid foundation for both single-user performance and future real-time collaboration features. Co-Authored-By: Claude <noreply@anthropic.com> * style: Apply linter fixes to layout system * fix: Remove unnecessary README files and revert services README - Remove unnecessary types/README.md file - Revert unrelated changes to services/README.md - Keep only relevant documentation for the layout system implementation These were issues identified during PR review that needed to be addressed. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: Clean up layout store and implement proper CRDT operations - Created dedicated layoutOperations.ts with production-grade CRDT interfaces - Integrated existing QuadTree spatial index instead of simple cache - Split composables into separate files (useLayout, useNodeLayout, useLayoutSync) - Cleaned up operation handlers using specific types instead of Extract - Added proper operation interfaces with type guards and extensibility - Updated all type references to use new operation structure The layout store now properly uses the existing QuadTree infrastructure for efficient spatial queries and follows CRDT best practices with well-defined operation interfaces. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: Extract services and split composables for better organization - Created SpatialIndexManager to handle QuadTree operations separately - Added LayoutAdapter interface for CRDT abstraction (Yjs, mock implementations) - Split GraphNodeManager into focused composables: - useNodeWidgets: Widget state and callback management - useNodeChangeDetection: RAF-based geometry change detection - useNodeState: Node visibility and reactive state management - Extracted constants for magic numbers and configuration values - Updated layout store to use SpatialIndexManager and constants This improves code organization, testability, and makes it easier to swap CRDT implementations or mock services for testing. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Add node slots to layout tree * Revert "Add node slots to layout tree" This reverts commit460493a620. * Remove slots from layoutTypes * Totally not scuffed renderer and adapter * Revert "Totally not scuffed renderer and adapter" This reverts commit2b9d83efb8. * Revert "Remove slots from layoutTypes" This reverts commit18f78ff786. * Reapply "Add node slots to layout tree" This reverts commit236fecb549. * Revert "Add node slots to layout tree" This reverts commit460493a620. * docs: Replace architecture docs with comprehensive ADR - Add ADR-0002 for CRDT-based layout system decision - Follow established ADR template with persuasive reasoning - Include performance benefits, collaboration readiness, and architectural advantages - Update ADR index --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Benjamin Lu <benjaminlu1107@gmail.com>
81 lines
2.3 KiB
Markdown
81 lines
2.3 KiB
Markdown
# Architecture Decision Records
|
|
|
|
This directory contains Architecture Decision Records (ADRs) for the ComfyUI Frontend project.
|
|
|
|
## What is an ADR?
|
|
|
|
An Architecture Decision Record captures an important architectural decision made along with its context and consequences. ADRs help future developers understand why certain decisions were made and provide a historical record of the project's evolution.
|
|
|
|
## ADR Index
|
|
|
|
| ADR | Title | Status | Date |
|
|
|-----|-------|--------|------|
|
|
| [0001](0001-merge-litegraph-into-frontend.md) | Merge LiteGraph.js into ComfyUI Frontend | Accepted | 2025-08-05 |
|
|
| [0002](0002-crdt-based-layout-system.md) | CRDT-Based Layout System | Accepted | 2024-08-16 |
|
|
| [0003](0003-monorepo-conversion.md) | Restructure as a Monorepo | Proposed | 2025-08-25 |
|
|
|
|
## Creating a New ADR
|
|
|
|
1. Copy the template below
|
|
2. Name it with the next number in sequence: `NNNN-descriptive-title.md`
|
|
3. Fill in all sections
|
|
4. Update this index
|
|
5. Submit as part of your PR
|
|
|
|
## ADR Template
|
|
|
|
```markdown
|
|
# N. Title
|
|
|
|
Date: YYYY-MM-DD
|
|
|
|
## Status
|
|
|
|
[Proposed | Accepted | Rejected | Deprecated | Superseded by [ADR-NNNN](NNNN-title.md)]
|
|
|
|
## Context
|
|
|
|
Describe the issue that motivated this decision and any context that influences or constrains the decision.
|
|
|
|
- What is the problem?
|
|
- Why does it need to be solved?
|
|
- What forces are at play (technical, business, team)?
|
|
|
|
## Decision
|
|
|
|
Describe the decision that was made and the key points that led to it.
|
|
|
|
- What are we going to do?
|
|
- How will we do it?
|
|
- What alternatives were considered?
|
|
|
|
## Consequences
|
|
|
|
### Positive
|
|
|
|
- What becomes easier or better?
|
|
- What opportunities does this create?
|
|
|
|
### Negative
|
|
|
|
- What becomes harder or worse?
|
|
- What risks are we accepting?
|
|
- What technical debt might we incur?
|
|
|
|
## Notes
|
|
|
|
Optional section for additional information, references, or clarifications.
|
|
```
|
|
|
|
## ADR Status Values
|
|
|
|
- **Proposed**: The decision is being discussed
|
|
- **Accepted**: The decision has been agreed upon
|
|
- **Rejected**: The decision was not accepted
|
|
- **Deprecated**: The decision is no longer relevant
|
|
- **Superseded**: The decision has been replaced by another ADR
|
|
|
|
## Further Reading
|
|
|
|
- [Documenting Architecture Decisions](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions) by Michael Nygard
|
|
- [Architecture Decision Records](https://adr.github.io/) - Collection of ADR resources |