mirror of
https://github.com/The-Low-Code-Foundation/OpenNoodl.git
synced 2026-01-11 14:52:55 +01:00
7.2 KiB
7.2 KiB
TASK-000J Changelog
Overview
This changelog tracks the implementation of the Canvas Organization System, including Smart Frames, Canvas Navigation, Vertical Snap + Push, and Connection Labels.
Implementation Phases
- Phase 1: Smart Frames
- Phase 2: Canvas Navigation
- Phase 3: Vertical Snap + Push
- Phase 4: Connection Labels
[Date TBD] - Task Created
Summary
Task documentation created for Canvas Organization System.
Files Created
dev-docs/tasks/phase-3/TASK-000J-canvas-organization/README.md- Full task specificationdev-docs/tasks/phase-3/TASK-000J-canvas-organization/CHECKLIST.md- Implementation checklistdev-docs/tasks/phase-3/TASK-000J-canvas-organization/CHANGELOG.md- This filedev-docs/tasks/phase-3/TASK-000J-canvas-organization/NOTES.md- Working notes
Context
This task was created to address canvas organization challenges in complex node graphs. The primary issues being solved:
- Vertical node expansion breaking carefully arranged layouts
- No persistent groupings for related nodes
- Difficulty navigating large canvases
- Undocumented connection data flow
The design prioritizes backward compatibility with existing projects and opt-in complexity.
Template for Future Entries
## [YYYY-MM-DD] - Session N.X: [Phase/Feature Name]
### Summary
[Brief description of what was accomplished]
### Files Created
- `path/to/file.tsx` - [Purpose]
### Files Modified
- `path/to/file.ts` - [What changed and why]
### Technical Notes
- [Key decisions made]
- [Patterns discovered]
- [Gotchas encountered]
### Testing Notes
- [What was tested]
- [Any edge cases discovered]
### Next Steps
- [What needs to be done next]
Progress Summary
| Phase | Feature | Status | Date Started | Date Completed |
|---|---|---|---|---|
| 1.1 | Data Model Extension | Not Started | - | - |
| 1.2 | Basic Containment - Drag In | Not Started | - | - |
| 1.3 | Basic Containment - Drag Out | Not Started | - | - |
| 1.4 | Group Movement | Not Started | - | - |
| 1.5 | Auto-Resize | Not Started | - | - |
| 1.6 | Collapse UI | Not Started | - | - |
| 1.7 | Collapsed Rendering | Not Started | - | - |
| 1.8 | Polish & Edge Cases | Not Started | - | - |
| 2.1 | Minimap Component Structure | Not Started | - | - |
| 2.2 | Coordinate Transformation | Not Started | - | - |
| 2.3 | Viewport and Click Navigation | Not Started | - | - |
| 2.4 | Toggle and Integration | Not Started | - | - |
| 2.5 | Jump Menu | Not Started | - | - |
| 3.1 | Attachment Data Model | Not Started | - | - |
| 3.2 | Edge Proximity Detection | Not Started | - | - |
| 3.3 | Visual Feedback | Not Started | - | - |
| 3.4 | Attachment Creation | Not Started | - | - |
| 3.5 | Push Calculation | Not Started | - | - |
| 3.6 | Detachment | Not Started | - | - |
| 3.7 | Alignment Guides | Not Started | - | - |
| 4.1 | Bezier Utilities | Not Started | - | - |
| 4.2 | Data Model Extension | Not Started | - | - |
| 4.3 | Hover State and Add Icon | Not Started | - | - |
| 4.4 | Inline Label Input | Not Started | - | - |
| 4.5 | Label Rendering | Not Started | - | - |
| 4.6 | Label Interaction | Not Started | - | - |
Blockers Log
Track any blockers encountered during implementation
| Date | Blocker | Resolution | Time Lost |
|---|---|---|---|
| - | - | - | - |
Performance Notes
Track any performance observations
| Scenario | Observation | Action Taken |
|---|---|---|
| Many nodes in Smart Frame | - | - |
| Minimap with 10+ frames | - | - |
| Long attachment chains | - | - |
| Many connection labels | - | - |
Design Decisions Log
Record important design decisions and their rationale
| Date | Decision | Rationale | Alternatives Considered |
|---|---|---|---|
| - | Smart Frames extend Comments | Backward compatibility; existing infrastructure | New model from scratch |
| - | Opt-in containment (drag in/out) | No forced migration; user controls | Auto-detect based on position |
| - | Vertical-only attachment | Horizontal would interfere with connections | Full 2D magnetic grid |
| - | Label on hover icon | Consistent with existing delete icon | Right-click context menu |
Backward Compatibility Notes
Track any compatibility considerations
| Legacy Feature | Impact | Migration Path |
|---|---|---|
| Comment boxes | None - work unchanged | Optional: drag nodes in to convert |
| Comment colors | Preserved | Smart Frames inherit |
| Comment fill styles | Preserved | Smart Frames inherit |
| Comment text | Preserved | Becomes frame title |
API Changes
Track any public API changes for future reference
CommentsModel
// New methods
addNodeToFrame(commentId: string, nodeId: string): void
removeNodeFromFrame(commentId: string, nodeId: string): void
toggleCollapse(commentId: string): void
isSmartFrame(comment: Comment): boolean
getFrameContainingNode(nodeId: string): Comment | null
// Extended interface
interface Comment {
// ... existing
containedNodeIds?: string[];
isCollapsed?: boolean;
autoResize?: boolean;
}
Connection Model
// Extended interface
interface Connection {
// ... existing
label?: {
text: string;
position: number;
}
}
AttachmentsModel (New)
interface VerticalAttachment {
topNodeId: string;
bottomNodeId: string;
spacing: number;
}
class AttachmentsModel {
createAttachment(topId: string, bottomId: string, spacing: number): void
removeAttachment(topId: string, bottomId: string): void
getAttachedBelow(nodeId: string): string | null
getAttachedAbove(nodeId: string): string | null
getAttachmentChain(nodeId: string): string[]
}
Files Changed Summary
Updated as implementation progresses
Created
packages/noodl-editor/src/editor/src/views/CommentLayer/SmartFrameUtils.tspackages/noodl-editor/src/editor/src/views/CanvasNavigation/CanvasNavigation.tsxpackages/noodl-editor/src/editor/src/views/CanvasNavigation/Minimap.tsxpackages/noodl-editor/src/editor/src/views/CanvasNavigation/JumpMenu.tsxpackages/noodl-editor/src/editor/src/models/attachmentsmodel.tspackages/noodl-editor/src/editor/src/utils/bezier.ts
Modified
packages/noodl-editor/src/editor/src/models/commentsmodel.tspackages/noodl-editor/src/editor/src/views/CommentLayer/CommentLayerView.tsxpackages/noodl-editor/src/editor/src/views/CommentLayer/CommentForeground.tsxpackages/noodl-editor/src/editor/src/views/CommentLayer/CommentBackground.tsxpackages/noodl-editor/src/editor/src/views/nodegrapheditor.tspackages/noodl-editor/src/editor/src/views/commentlayer.tspackages/noodl-editor/src/editor/src/views/nodegrapheditor/NodeGraphEditorNode.tspackages/noodl-editor/src/editor/src/views/nodegrapheditor/NodeGraphEditorConnection.tspackages/noodl-editor/src/editor/src/views/documents/EditorDocument/EditorDocument.tsxpackages/noodl-editor/src/editor/src/utils/editorsettings.tspackages/noodl-editor/src/editor/src/models/nodegraphmodel.ts