From ae7728cd91d77ce7f5ab8d04dc24a60bdcb7cb28 Mon Sep 17 00:00:00 2001 From: Christian Byrne Date: Mon, 2 Feb 2026 21:44:30 -0800 Subject: [PATCH] feat: add welcome message for Linear Mode (#8562) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Adds a welcome/onboarding message for App Mode (Linear Mode) that displays when no workflow output is selected, targeting first-time users. | Before | After | | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | Screenshot from 2026-02-02
20-47-30 | Screenshot from 2026-02-02
21-32-20 | ## Changes - **LinearWelcome.vue**: New component with 4 sections explaining App Mode interface, sharing workflows, and widget control - **LinearPreview.vue**: Replace dimmed logo fallback with LinearWelcome component - **i18n**: Add `linearMode.welcome.*` translation keys ## Review Focus - Copy targets users who have never used ComfyUI—assumes no knowledge of nodes/graphs - Component uses semantic Tailwind classes from design system Fixes COM-14274 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-8562-feat-add-welcome-message-for-Linear-Mode-2fc6d73d365081b2b736f211152e1cce) by [Unito](https://www.unito.io) ## Summary by CodeRabbit * **New Features** * Added a comprehensive welcome screen in App Mode that introduces users to the simplified interface hiding node graphs, explains the layout structure with outputs and controls, provides instructions for sharing workflows as simple tools, and guides users on customizing which settings are visible through widget promotion. --- src/locales/en/main.json | 9 +++++- .../extensions/linearMode/LinearPreview.vue | 7 ++--- .../extensions/linearMode/LinearWelcome.vue | 29 +++++++++++++++++++ 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 src/renderer/extensions/linearMode/LinearWelcome.vue diff --git a/src/locales/en/main.json b/src/locales/en/main.json index 1cacbbb29..5add6a63f 100644 --- a/src/locales/en/main.json +++ b/src/locales/en/main.json @@ -2760,7 +2760,14 @@ "runCount": "Run count:", "rerun": "Rerun", "reuseParameters": "Reuse Parameters", - "downloadAll": "Download All" + "downloadAll": "Download All", + "welcome": { + "title": "Welcome to App Mode", + "intro": "A simplified view that hides the node graph so you can focus on creating.", + "layout": "On the left, you'll see your generated images, videos, and outputs. On the right, just the controls you need. Everything complex stays out of sight.", + "sharing": "Sharing is easy: create your workflow, open App Mode, right-click the tab, and export. When others open your file, it launches straight into this clean view. You can share powerful workflows as simple tools without anyone needing to understand node graphs.", + "widget": "If you want to control which settings appear, convert your top-level nodes into a subgraph, then use widget promotion in the toolbox above it to choose what's exposed." + } }, "missingNodes": { "cloud": { diff --git a/src/renderer/extensions/linearMode/LinearPreview.vue b/src/renderer/extensions/linearMode/LinearPreview.vue index dc384bef0..95bfdf16f 100644 --- a/src/renderer/extensions/linearMode/LinearPreview.vue +++ b/src/renderer/extensions/linearMode/LinearPreview.vue @@ -11,6 +11,7 @@ import type { AssetItem } from '@/platform/assets/schemas/assetSchema' import { useWorkflowStore } from '@/platform/workflow/management/stores/workflowStore' import { extractWorkflowFromAsset } from '@/platform/workflow/utils/workflowExtractionUtil' import ImagePreview from '@/renderer/extensions/linearMode/ImagePreview.vue' +import LinearWelcome from '@/renderer/extensions/linearMode/LinearWelcome.vue' // Lazy-loaded to avoid pulling THREE.js into the main bundle const Preview3d = () => import('@/renderer/extensions/linearMode/Preview3d.vue') import VideoPreview from '@/renderer/extensions/linearMode/VideoPreview.vue' @@ -177,9 +178,5 @@ async function rerun(e: Event) { v-else-if="getMediaType(selectedOutput) === '3d'" :model-url="selectedOutput!.url" /> - + diff --git a/src/renderer/extensions/linearMode/LinearWelcome.vue b/src/renderer/extensions/linearMode/LinearWelcome.vue new file mode 100644 index 000000000..6d602d555 --- /dev/null +++ b/src/renderer/extensions/linearMode/LinearWelcome.vue @@ -0,0 +1,29 @@ + + +