Skip to content

Multi-link nodes, canvas UX improvements, and spritesheet node#11

Open
jackbach wants to merge 9 commits into
mainfrom
feature/multi-links
Open

Multi-link nodes, canvas UX improvements, and spritesheet node#11
jackbach wants to merge 9 commits into
mainfrom
feature/multi-links

Conversation

@jackbach
Copy link
Copy Markdown
Contributor

@jackbach jackbach commented Feb 17, 2026

image

Summary

  • Named handles & multi-input/output: Nodes now support named, typed handles with multi-connection targets (e.g. spritesheet node accepts multiple inputs)
  • Spritesheet node: New node that composites multiple input images into a grid spritesheet
  • Canvas UX: Context menus for nodes/edges, multi-select with Shift+click/drag, Backspace to delete, cleaner node chrome
  • Multi-file drop: Drag multiple images onto the canvas to bulk-fill existing input nodes and auto-create new ones for overflow
  • Pipeline validation: Allow unconnected input nodes so partial pipelines are valid

Todo

  • [] Spritesheet should try to fill each cell as much as possible

Test plan

  • Add spritesheet node, connect multiple inputs, verify grid output
  • Right-click nodes and edges to see context menus, delete from menu
  • Shift+click and Shift+drag to multi-select nodes, press Delete/Backspace to remove
  • Drag multiple image files onto the canvas — verify existing inputs fill first, overflow creates new input nodes
  • Drop a single file directly on an InputNode — verify existing behavior still works
  • Verify non-image files are ignored when dropped on canvas

🤖 Generated with Claude Code

jackbach and others added 9 commits February 17, 2026 19:42
Refactor pipeline data model to support named handles per node,
object-based NodeOutput, multi-input spritesheet node, and
connection validation. Unfinished — edge connection bug under investigation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Unconnected input nodes no longer block pipeline execution — they are
simply skipped. Also removes auto-spawn behavior that created a new
input node whenever all existing inputs had images assigned.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Node deletion is now handled exclusively via right-click context menu
and keyboard shortcuts. Floating handle labels (Sheet, Data) removed
for a cleaner visual style.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously only Delete removed nodes while both Delete and Backspace
removed edges. Now both keys work consistently for both.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Right-click canvas background shows add-node menu with icons matching
  the top bar, separated into I/O and processing groups
- Right-click node shows delete option with trash icon
- Right-click edge shows delete option with trash icon
- All context menus match DropdownMenu component styling
- Menus flip upward/leftward when near viewport edges
- Fix edge persistence: use store.edges.push() instead of addEdges()
  and move isValidConnection to onConnect handler only

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Migrate store from single selectedNodeId to selectedNodeIds array,
sync selection via Vue Flow's getSelectedNodes, and support bulk
delete from keyboard and context menu.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dropping multiple images onto the canvas assigns them to existing input
nodes (sorted top-to-bottom), then creates new input nodes for overflow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant