diff --git a/src/components/Editor.vue b/src/components/Editor.vue
index e612a7f..4943fa9 100644
--- a/src/components/Editor.vue
+++ b/src/components/Editor.vue
@@ -36,6 +36,7 @@ import GlossPanel from "./GlossPanel.vue"
import LoopOverlay from "./LoopOverlay.vue"
import Palette from "./Palette.vue"
import InfoLinkEdge from "./edges/InfoLinkEdge.vue"
+import PipeEdge from "./edges/PipeEdge.vue"
import CloudNode from "./nodes/CloudNode.vue"
import ConverterNode from "./nodes/ConverterNode.vue"
import FlowNode from "./nodes/FlowNode.vue"
@@ -405,6 +406,9 @@ onBeforeUnmount(() => {
+
+
+
diff --git a/src/components/edges/PipeEdge.vue b/src/components/edges/PipeEdge.vue
new file mode 100644
index 0000000..93d1942
--- /dev/null
+++ b/src/components/edges/PipeEdge.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
diff --git a/src/model/projection.ts b/src/model/projection.ts
index d39ec1d..0bc10cb 100644
--- a/src/model/projection.ts
+++ b/src/model/projection.ts
@@ -54,6 +54,7 @@ export function projectEdges(model: Model): FlowGraphEdge[] {
// Pipe in: source → valve. No arrowhead — the valve is the visual midpoint.
edges.push({
id: `${node.id}::in`,
+ type: "pipe",
source: node.source,
sourceHandle: HANDLE_OUT,
target: node.id,
@@ -64,13 +65,14 @@ export function projectEdges(model: Model): FlowGraphEdge[] {
// Pipe out: valve → target. Arrowhead carries the flow direction.
edges.push({
id: `${node.id}::out`,
+ type: "pipe",
source: node.id,
sourceHandle: HANDLE_OUT,
target: node.target,
targetHandle: HANDLE_IN,
data: { kind: "pipe" },
style: { strokeWidth: "2.5px" },
- markerEnd: "arrowclosed",
+ markerEnd: "arrow",
})
}
@@ -86,7 +88,7 @@ export function projectEdges(model: Model): FlowGraphEdge[] {
targetHandle: HANDLE_IN,
data: { kind: "info", polarity: link.polarity },
style: { strokeDasharray: "5 4" },
- markerEnd: "arrowclosed",
+ markerEnd: "arrow",
})
}