1200 : zoom.value < -500))
+ return
zoom.value -= e.deltaY
const { x, y, width, height } = zoomPaneEl.getBoundingClientRect()
diff --git a/src/composables/useWorkflowActionsMenu.test.ts b/src/composables/useWorkflowActionsMenu.test.ts
index 36a2c7ec2f..73a355c809 100644
--- a/src/composables/useWorkflowActionsMenu.test.ts
+++ b/src/composables/useWorkflowActionsMenu.test.ts
@@ -81,6 +81,8 @@ vi.mock('@/stores/appModeStore', () => ({
useAppModeStore: vi.fn(() => mockAppModeStore)
}))
+vi.mock('@/composables/useErrorHandling', () => ({}))
+
vi.mock('@/composables/useFeatureFlags', () => ({
useFeatureFlags: vi.fn(() => mockFeatureFlags)
}))
diff --git a/src/composables/useWorkflowActionsMenu.ts b/src/composables/useWorkflowActionsMenu.ts
index b4e186eacc..9bce704606 100644
--- a/src/composables/useWorkflowActionsMenu.ts
+++ b/src/composables/useWorkflowActionsMenu.ts
@@ -2,7 +2,10 @@ import type { ComputedRef, Ref } from 'vue'
import { computed } from 'vue'
import { useI18n } from 'vue-i18n'
+import { useErrorHandling } from '@/composables/useErrorHandling'
import { useFeatureFlags } from '@/composables/useFeatureFlags'
+import { isCloud } from '@/platform/distribution/types'
+import { openShareDialog } from '@/platform/workflow/sharing/composables/lazyShareDialog'
import { useWorkflowService } from '@/platform/workflow/core/services/workflowService'
import type { ComfyWorkflow } from '@/platform/workflow/management/stores/workflowStore'
import {
@@ -191,8 +194,9 @@ export function useWorkflowActionsMenu(
id: 'share',
label: t('breadcrumbsMenu.share'),
icon: 'icon-[comfy--send]',
- command: async () => {},
- visible: false
+ command: () =>
+ openShareDialog().catch(useErrorHandling().toastErrorHandler),
+ visible: isCloud && flags.workflowSharingEnabled
})
addItem({
diff --git a/src/renderer/extensions/linearMode/AppInput.vue b/src/renderer/extensions/linearMode/AppInput.vue
index 9e855f61fd..7b56dbb6f8 100644
--- a/src/renderer/extensions/linearMode/AppInput.vue
+++ b/src/renderer/extensions/linearMode/AppInput.vue
@@ -8,7 +8,7 @@ import { cn } from '@/utils/tailwindUtil'
const { id, name } = defineProps<{
id: string
- isSelectInputsMode: boolean
+ enable: boolean
name: string
}>()
@@ -25,7 +25,7 @@ function togglePromotion() {
()
-defineEmits<{ navigateAssets: [] }>()
+defineEmits<{ navigateOutputs: [] }>()
//NOTE: due to batching, will never be greater than 2
const pendingJobQueues = ref(0)
@@ -72,7 +73,7 @@ const mappedSelections = computed(() => {
).map(([, widgetName]) => widgetName)
unprocessedInputs = unprocessedInputs.slice(inputGroup.length)
const node = resolveNode(nodeId)
- if (!node) continue
+ if (node?.mode !== LGraphEventMode.ALWAYS) continue
const nodeData = nodeToNodeData(node)
remove(nodeData.widgets ?? [], (w) => !inputGroup.includes(w.name))
@@ -105,6 +106,7 @@ function getDropIndicator(node: LGraphNode) {
function nodeToNodeData(node: LGraphNode) {
const dropIndicator = getDropIndicator(node)
const nodeData = extractVueNodeData(node)
+ remove(nodeData.widgets ?? [], (w) => w.slotMetadata?.linked ?? false)
for (const widget of nodeData.widgets ?? []) widget.slotMetadata = undefined
return {
@@ -261,7 +263,7 @@ defineExpose({ runButtonClick })
diff --git a/src/renderer/extensions/linearMode/LinearPreview.vue b/src/renderer/extensions/linearMode/LinearPreview.vue
index 527a520a3d..2d17bacc77 100644
--- a/src/renderer/extensions/linearMode/LinearPreview.vue
+++ b/src/renderer/extensions/linearMode/LinearPreview.vue
@@ -159,7 +159,7 @@ async function rerun(e: Event) {
/>
(() => [
:style="{ translate }"
>
-
+
()
@@ -19,6 +21,16 @@ const { output } = defineProps<{
height="40"
:src="output.url"
/>
+
+
+
+
diff --git a/src/renderer/extensions/vueNodes/components/NodeWidgets.vue b/src/renderer/extensions/vueNodes/components/NodeWidgets.vue
index 3c1319f703..da22dc81d6 100644
--- a/src/renderer/extensions/vueNodes/components/NodeWidgets.vue
+++ b/src/renderer/extensions/vueNodes/components/NodeWidgets.vue
@@ -53,7 +53,11 @@
/>
-
+
{
return false
})
+const canSelectInputs = computed(
+ () => isSelectInputsMode.value && nodeData?.mode === LGraphEventMode.ALWAYS
+)
const nodeType = computed(() => nodeData?.type || '')
const settingStore = useSettingStore()
const showAdvanced = computed(
diff --git a/src/views/LinearView.vue b/src/views/LinearView.vue
index 39ca218dc5..bf8b6b8ff4 100644
--- a/src/views/LinearView.vue
+++ b/src/views/LinearView.vue
@@ -142,7 +142,7 @@ const linearWorkflowRef = useTemplateRef('linearWorkflowRef')