6.1 KiB
PRD: Connection Menu Quick Add Prioritization
Version: 1.0
Last Updated: 2026-05-17
Status: Implementation synced
Scope: popiart-node-canvas
1. Summary
The connection creation menu has two different user intents:
- Dragging from a handle to blank canvas is an exploration action. It should show the complete list of compatible downstream or upstream node functions.
- Clicking a node-level
+button is a quick continuation action. It should show a short, high-signal list: up to 5 generally important functions plus up to 2 functions that are strongly related to the source node.
The same ConnectionDropMenu component may continue to render both flows, but it must know which mode opened it.
2. Product Rule
Core rule:
Drag shows the full compatible menu. Node
+shows the best next-step menu.
Detailed behavior:
- Drag from an output handle keeps the complete compatible target-node list.
- Drag from an input handle keeps the complete compatible source-node list.
- Click a node
+opens quick-add mode. - Quick-add mode filters the already-compatible options. It must not suggest a node that the current handle cannot connect to.
- Quick-add mode returns at most 7 options:
- up to 5 common important options for the current handle type
- up to 2 source-node-related options
- If no source-node-related options are available after compatibility filtering and dedupe, quick-add shows only the common important options.
- Existing action items such as
Split Grid NowandImage Multi-Angleare allowed in quick-add when they are prioritized and compatible.
3. Common Important Options
These priorities are intentionally static so the first iteration is predictable and easy to review.
| Handle type | Common quick-add options |
|---|---|
| image | Generate Image, Generate Video, Output, Annotate, Image Compare |
| text | Generate Image, Generate Video, LLM Generate, Prompt Constructor, Generate Audio |
| video | Generate Video, Output, Video Trim, Frame Grab, Video Stitch |
| audio | Generate Video, Output, Video Stitch, Router, Switch |
| 3d | 3D Viewer, Output, Generate 3D, Router, Switch |
| easeCurve | Ease Curve, Router, Switch, Generate Video, Video Stitch |
The final rendered list is the intersection of this priority list and the current compatibility list.
4. Source-Node-Related Options
Related options are also filtered by handle compatibility and deduped against the common list.
| Source node | Related quick-add options |
|---|---|
| Image Input | Image Multi-Angle, Split Grid Now |
| Annotation | Image Multi-Angle, Split Grid Now |
| Generate Image | Image Multi-Angle, Split Grid Now |
| Prompt | Array, Prompt Constructor |
| Prompt Constructor | LLM Generate, Array |
| LLM Generate | Generate Image, Generate Video |
| Video Input | Video Trim, Frame Grab |
| Generate Video | Ease Curve, Frame Grab |
| Video Stitch | Video Trim, Ease Curve |
| Video Trim | Frame Grab, Video Stitch |
| Audio Input | Generate Video, Output |
| Generate Audio | Generate Video, Output |
| Generate 3D | 3D Viewer, Output |
| 3D Viewer | Generate Image, Output |
Nodes without a related mapping fall back to common important options only.
5. Implementation Notes
- Add a menu mode:
dragorquickAdd. - Default mode is
dragfor backward compatibility. WorkflowCanvasshould setmode: "quickAdd"andsourceNodeTypewhen opening the menu from the node+button.- Existing handle-drag code should keep
mode: "drag"and preserve full lists. - Filtering belongs in
ConnectionDropMenubecause it already owns handle-type option lists. - Do not add new dependencies or dynamic ranking infrastructure for this iteration.
6. Acceptance Criteria
- Dragging from an image output still shows the complete image-compatible menu.
- Clicking
+on an image source shows no more than 7 options. - Clicking
+on an image source includes common actions and the image-specific related actions when compatible. - Clicking
+for a source node with no related mapping shows common important options only. - The selected quick-add option still creates and connects the new node exactly as before.
- Keyboard navigation and action item selection continue to work.
7. Verification Plan
- Unit test
ConnectionDropMenufull drag behavior remains unchanged. - Unit test quick-add image menu is capped and includes related image actions.
- Unit test quick-add without related mapping falls back to common options only.
- Component test
WorkflowCanvaspasses quick-add mode and source node type from the node+button. - Run targeted tests for
ConnectionDropMenuandWorkflowCanvas. - Run full test suite and production build before publishing.
8. Iteration Log
- 2026-05-17: Synced requested behavior into PRD before implementation.
- 2026-05-17: First implementation target is a static priority filter with no new ranking service.
- 2026-05-17: Implemented
dragandquickAddmodes inConnectionDropMenu. - 2026-05-17: Wired node
+inWorkflowCanvasto passmode: "quickAdd"andsourceNodeType.
9. Implementation Record
Changed files:
src/components/ConnectionDropMenu.tsx- Adds static common and source-related priority maps.
- Keeps full compatible options in
dragmode. - Filters to common plus related options in
quickAddmode.
src/components/WorkflowCanvas.tsx- Marks handle-drag menus as
drag. - Marks node
+menus asquickAdd. - Passes the clicked source node type into the menu.
- Marks handle-drag menus as
src/components/__tests__/ConnectionDropMenu.test.tsx- Covers full drag menu preservation.
- Covers image quick-add cap and related actions.
- Covers common-only fallback when there is no related mapping.
src/components/__tests__/WorkflowCanvas.test.tsx- Covers node
+passing quick-add mode and source node type.
- Covers node
Verification:
- Passed targeted tests:
npm run test:run -- src/components/__tests__/ConnectionDropMenu.test.tsx src/components/__tests__/WorkflowCanvas.test.tsx - Passed full tests:
npm run test:run(108files,2157tests) - Passed production build:
npm run build - Lint script did not run because
next lintis no longer recognized by the installed Next CLI and is treated as a project directory namedlint.