wenn ich gerade einen edge dragge und er würde nicht ins leere gehen (sprich ein passender input/ouput gehovered) wird, dann soll der input/ouput gehightlighted werden
wenn ich auf das node selbst droppe, soll er das erste freie passende bzw. wenn keines mehr frei ist einfach das letzt passende input/out verbinunden - auch hier gilt die prediction vom highlight (sodass man wärend dem draggen schon sieht welches input/output angeschlossen wird falls man droppt)
EDIT:
3. Wenn ich ins leere droppe, soll sich das create node feld aufgehen und nach passenden nodes filtern die kompatibell sind (wenn von output weg, dann passende nodes vorschlagen die einen passenden input haben und umgekehrt)
Umgesetzt (2026-09-09), alle drei Punkte.
Der Port, auf dem die Kante landen wuerde, bekommt waehrend des Drags einen weissen Ring
(Theme-Token portTarget), und die gezogene Linie schnappt darauf — die Vorhersage ist damit
nicht nur farbig, sondern auch geometrisch eindeutig.
Drop auf den Node-Koerper nimmt den ersten freien passenden Port; ist keiner mehr frei, den
letzten passenden, dessen Kante dann ersetzt wird (genau wie ein Drop auf den Port selbst).
Der Ring zeigt waehrend des Drags schon genau diesen Port.
Drop ins Leere oeffnet die Palette, gefiltert auf die Node-Typen, die diese Kante ueberhaupt
erreichen kann (vom Output aus: passender Input, vom Input aus: passender Output; exec passt
nur zu exec, any zu jedem Datentyp). Der gewaehlte Node kommt fertig verdrahtet an.
Die Entscheidung "was passt hier zusammen" sitzt komplett in src/core/graph/dropTarget.ts (rein,
getestet); der Canvas zeichnet sie nur. Zwei Dinge, die beim Bauen dazukamen:
Node und Kante gehen als ein CompoundCommand rein. Zwei getrennte Kommandos haetten fuer
eine Geste zwei Undos gebraucht.
firstPortFor statt dropTargetPort beim Palette-Weg: der neue Node ist noch gar nicht im
Graph, dropTargetPort koennte ihn also nicht finden. Er hat noch keine Kanten, also ist der
erste passende Port genau der, den dropTargetPort spaeter waehlen wuerde.
Übernommen aus todo-notes/done/graph-ux-edge-drag-and-drop.md beim Umzug auf das Issue-System (2026-09-12).
Angelegt: 2026-09-09 · 633f01c — Add five notes raised while the override work was running
Abgeschlossen: 2026-09-09 · ebad3fd — Make an edge drag say where it will land, and offer nodes when it lands nowhere
Gemeldet von: admin
1. wenn ich gerade einen edge dragge und er würde nicht ins leere gehen (sprich ein passender input/ouput gehovered) wird, dann soll der input/ouput gehightlighted werden
2. wenn ich auf das node selbst droppe, soll er das erste freie passende bzw. wenn keines mehr frei ist einfach das letzt passende input/out verbinunden - auch hier gilt die prediction vom highlight (sodass man wärend dem draggen schon sieht welches input/output angeschlossen wird falls man droppt)
EDIT:
3. Wenn ich ins leere droppe, soll sich das create node feld aufgehen und nach passenden nodes filtern die kompatibell sind (wenn von output weg, dann passende nodes vorschlagen die einen passenden input haben und umgekehrt)
---
**Umgesetzt (2026-09-09), alle drei Punkte.**
1. Der Port, auf dem die Kante landen wuerde, bekommt waehrend des Drags einen weissen Ring
(Theme-Token `portTarget`), und die gezogene Linie schnappt darauf — die Vorhersage ist damit
nicht nur farbig, sondern auch geometrisch eindeutig.
2. Drop auf den Node-Koerper nimmt den ersten **freien** passenden Port; ist keiner mehr frei, den
letzten passenden, dessen Kante dann ersetzt wird (genau wie ein Drop auf den Port selbst).
Der Ring zeigt waehrend des Drags schon genau diesen Port.
3. Drop ins Leere oeffnet die Palette, gefiltert auf die Node-Typen, die diese Kante ueberhaupt
erreichen kann (vom Output aus: passender Input, vom Input aus: passender Output; `exec` passt
nur zu `exec`, `any` zu jedem Datentyp). Der gewaehlte Node kommt fertig verdrahtet an.
Die Entscheidung "was passt hier zusammen" sitzt komplett in `src/core/graph/dropTarget.ts` (rein,
getestet); der Canvas zeichnet sie nur. Zwei Dinge, die beim Bauen dazukamen:
- **Node und Kante gehen als ein `CompoundCommand` rein.** Zwei getrennte Kommandos haetten fuer
eine Geste zwei Undos gebraucht.
- **`firstPortFor` statt `dropTargetPort` beim Palette-Weg**: der neue Node ist noch gar nicht im
Graph, `dropTargetPort` koennte ihn also nicht finden. Er hat noch keine Kanten, also ist der
erste passende Port genau der, den `dropTargetPort` spaeter waehlen wuerde.
---
*Übernommen aus `todo-notes/done/graph-ux-edge-drag-and-drop.md` beim Umzug auf das Issue-System (2026-09-12).*
- **Angelegt:** 2026-09-09 · `633f01c` — Add five notes raised while the override work was running
- **Abgeschlossen:** 2026-09-09 · `ebad3fd` — Make an edge drag say where it will land, and offer nodes when it lands nowhere
- **Gemeldet von:** admin
admin
added the todo-note label 2026-09-12 15:03:49 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
EDIT:
3. Wenn ich ins leere droppe, soll sich das create node feld aufgehen und nach passenden nodes filtern die kompatibell sind (wenn von output weg, dann passende nodes vorschlagen die einen passenden input haben und umgekehrt)
Umgesetzt (2026-09-09), alle drei Punkte.
(Theme-Token
portTarget), und die gezogene Linie schnappt darauf — die Vorhersage ist damitnicht nur farbig, sondern auch geometrisch eindeutig.
letzten passenden, dessen Kante dann ersetzt wird (genau wie ein Drop auf den Port selbst).
Der Ring zeigt waehrend des Drags schon genau diesen Port.
erreichen kann (vom Output aus: passender Input, vom Input aus: passender Output;
execpasstnur zu
exec,anyzu jedem Datentyp). Der gewaehlte Node kommt fertig verdrahtet an.Die Entscheidung "was passt hier zusammen" sitzt komplett in
src/core/graph/dropTarget.ts(rein,getestet); der Canvas zeichnet sie nur. Zwei Dinge, die beim Bauen dazukamen:
CompoundCommandrein. Zwei getrennte Kommandos haetten fuereine Geste zwei Undos gebraucht.
firstPortForstattdropTargetPortbeim Palette-Weg: der neue Node ist noch gar nicht imGraph,
dropTargetPortkoennte ihn also nicht finden. Er hat noch keine Kanten, also ist dererste passende Port genau der, den
dropTargetPortspaeter waehlen wuerde.Übernommen aus
todo-notes/done/graph-ux-edge-drag-and-drop.mdbeim Umzug auf das Issue-System (2026-09-12).633f01c— Add five notes raised while the override work was runningebad3fd— Make an edge drag say where it will land, and offer nodes when it lands nowhere