feat: add concurrent execution onboarding dialog

New ConcurrentExecutionDialog.vue shows when feature is enabled but user
hasn't seen onboarding. Explains parallel execution and eye icon focus.
Dismissed via 'Got it' button which persists via settingStore.
This commit is contained in:
bymyself
2026-03-13 09:54:40 -07:00
parent 6fbe716f1a
commit e8040974df
3 changed files with 56 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
<template>
<Dialog
v-model:visible="visible"
:header="$t('concurrentExecution.onboarding.title')"
modal
:closable="true"
:draggable="false"
class="max-w-md"
>
<p class="text-sm text-muted-color">
{{ $t('concurrentExecution.onboarding.description') }}
</p>
<template #footer>
<Button autofocus @click="dismiss">
{{ $t('concurrentExecution.onboarding.gotIt') }}
</Button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import Dialog from 'primevue/dialog'
import { computed, ref } from 'vue'
import Button from '@/components/ui/button/Button.vue'
import { useConcurrentExecution } from '@/composables/useConcurrentExecution'
const { isConcurrentExecutionEnabled, hasSeenOnboarding, markOnboardingSeen } =
useConcurrentExecution()
const dismissed = ref(false)
const visible = computed({
get: () =>
isConcurrentExecutionEnabled.value &&
!hasSeenOnboarding.value &&
!dismissed.value,
set: () => {
dismissed.value = true
}
})
async function dismiss() {
await markOnboardingSeen()
dismissed.value = true
}
</script>

View File

@@ -1010,6 +1010,13 @@
"parallelUpTo": "Up to {count}",
"parallelNew": "NEW"
},
"concurrentExecution": {
"onboarding": {
"title": "Run Jobs in Parallel",
"description": "You can now run multiple workflows at the same time. Use the eye icon in the queue to control which job's progress is shown on the canvas.",
"gotIt": "Got it"
}
},
"tabMenu": {
"duplicateTab": "Duplicate Tab",
"closeTab": "Close Tab",

View File

@@ -27,6 +27,7 @@
<AssetExportProgressDialog />
<ManagerProgressToast />
<UnloadWindowConfirmDialog v-if="!isDesktop" />
<ConcurrentExecutionDialog />
<MenuHamburger />
</template>
@@ -48,6 +49,7 @@ import { useI18n } from 'vue-i18n'
import { runWhenGlobalIdle } from '@/base/common/async'
import MenuHamburger from '@/components/MenuHamburger.vue'
import ConcurrentExecutionDialog from '@/components/dialog/ConcurrentExecutionDialog.vue'
import UnloadWindowConfirmDialog from '@/components/dialog/UnloadWindowConfirmDialog.vue'
import GraphCanvas from '@/components/graph/GraphCanvas.vue'
import GlobalToast from '@/components/toast/GlobalToast.vue'