diff --git a/app/w/[id]/components/custom-edge/custom-edge.tsx b/app/w/[id]/components/custom-edge/custom-edge.tsx
index 0ddf4b454..8e2459ee6 100644
--- a/app/w/[id]/components/custom-edge/custom-edge.tsx
+++ b/app/w/[id]/components/custom-edge/custom-edge.tsx
@@ -2,11 +2,20 @@ import { EdgeProps, getSmoothStepPath } from 'reactflow'
import { X } from 'lucide-react'
export const CustomEdge = (props: EdgeProps) => {
+ const isHorizontal =
+ props.sourcePosition === 'right' || props.sourcePosition === 'left'
+
+ // For horizontal handles, we'll add a minimum extension to ensure the path
+ // always goes outward before going up/down
const [edgePath] = getSmoothStepPath({
sourceX: props.sourceX,
sourceY: props.sourceY,
+ sourcePosition: props.sourcePosition,
targetX: props.targetX,
targetY: props.targetY,
+ targetPosition: props.targetPosition,
+ borderRadius: 8,
+ offset: isHorizontal ? 30 : 20, // Increased offset for horizontal handles to ensure outward extension
})
const midPoint = {
diff --git a/app/w/components/workflow-block/components/action-bar/action-bar.tsx b/app/w/components/workflow-block/components/action-bar/action-bar.tsx
index e986bca02..dffe84660 100644
--- a/app/w/components/workflow-block/components/action-bar/action-bar.tsx
+++ b/app/w/components/workflow-block/components/action-bar/action-bar.tsx
@@ -1,5 +1,13 @@
import { Button } from '@/components/ui/button'
-import { Trash2, Play, Circle, CircleOff, Copy } from 'lucide-react'
+import {
+ Trash2,
+ Play,
+ Circle,
+ CircleOff,
+ Copy,
+ ArrowLeftRight,
+ ArrowUpDown,
+} from 'lucide-react'
import { useWorkflowStore } from '@/stores/workflow/workflow-store'
import {
Tooltip,
@@ -17,10 +25,16 @@ export function ActionBar({ blockId }: ActionBarProps) {
const toggleBlockEnabled = useWorkflowStore(
(state) => state.toggleBlockEnabled
)
+ const toggleBlockHandles = useWorkflowStore(
+ (state) => state.toggleBlockHandles
+ )
const duplicateBlock = useWorkflowStore((state) => state.duplicateBlock)
const isEnabled = useWorkflowStore(
(state) => state.blocks[blockId]?.enabled ?? true
)
+ const horizontalHandles = useWorkflowStore(
+ (state) => state.blocks[blockId]?.horizontalHandles ?? false
+ )
return (
@@ -75,6 +89,26 @@ export function ActionBar({ blockId }: ActionBarProps) {
Duplicate Block
+
+
+
+
+
+ {horizontalHandles ? 'Vertical Ports' : 'Horizontal Ports'}
+
+
+