refactor: move queue files under domain

This commit is contained in:
Benjamin Lu
2026-01-08 20:00:49 -08:00
parent 5561efcfd3
commit 003e72406d
70 changed files with 124 additions and 126 deletions

View File

@@ -1,6 +1,6 @@
import type { Locator, Page } from '@playwright/test' import type { Locator, Page } from '@playwright/test'
import type { AutoQueueMode } from '../../src/stores/queueStore' import type { AutoQueueMode } from '../../src/queue/stores/queueStore'
export class ComfyActionbar { export class ComfyActionbar {
public readonly root: Locator public readonly root: Locator

View File

@@ -83,7 +83,7 @@ import { useI18n } from 'vue-i18n'
import ComfyActionbar from '@/components/actionbar/ComfyActionbar.vue' import ComfyActionbar from '@/components/actionbar/ComfyActionbar.vue'
import SubgraphBreadcrumb from '@/components/breadcrumb/SubgraphBreadcrumb.vue' import SubgraphBreadcrumb from '@/components/breadcrumb/SubgraphBreadcrumb.vue'
import QueueProgressOverlay from '@/components/queue/QueueProgressOverlay.vue' import QueueProgressOverlay from '@/queue/components/QueueProgressOverlay.vue'
import ActionBarButtons from '@/components/topbar/ActionBarButtons.vue' import ActionBarButtons from '@/components/topbar/ActionBarButtons.vue'
import CurrentUserButton from '@/components/topbar/CurrentUserButton.vue' import CurrentUserButton from '@/components/topbar/CurrentUserButton.vue'
import LoginButton from '@/components/topbar/LoginButton.vue' import LoginButton from '@/components/topbar/LoginButton.vue'
@@ -92,7 +92,7 @@ import { useCurrentUser } from '@/composables/auth/useCurrentUser'
import { useErrorHandling } from '@/composables/useErrorHandling' import { useErrorHandling } from '@/composables/useErrorHandling'
import { buildTooltipConfig } from '@/composables/useTooltipConfig' import { buildTooltipConfig } from '@/composables/useTooltipConfig'
import { app } from '@/scripts/app' import { app } from '@/scripts/app'
import { useQueueStore } from '@/stores/queueStore' import { useQueueStore } from '@/queue/stores/queueStore'
import { useRightSidePanelStore } from '@/stores/workspace/rightSidePanelStore' import { useRightSidePanelStore } from '@/stores/workspace/rightSidePanelStore'
import { useWorkspaceStore } from '@/stores/workspaceStore' import { useWorkspaceStore } from '@/stores/workspaceStore'
import { isElectron } from '@/utils/envUtil' import { isElectron } from '@/utils/envUtil'

View File

@@ -38,7 +38,7 @@ import InputNumber from 'primevue/inputnumber'
import { computed } from 'vue' import { computed } from 'vue'
import { useSettingStore } from '@/platform/settings/settingStore' import { useSettingStore } from '@/platform/settings/settingStore'
import { useQueueSettingsStore } from '@/stores/queueStore' import { useQueueSettingsStore } from '@/queue/stores/queueStore'
const queueSettingsStore = useQueueSettingsStore() const queueSettingsStore = useQueueSettingsStore()
const { batchCount } = storeToRefs(queueSettingsStore) const { batchCount } = storeToRefs(queueSettingsStore)

View File

@@ -48,7 +48,7 @@ import { useTelemetry } from '@/platform/telemetry'
import { app } from '@/scripts/app' import { app } from '@/scripts/app'
import { useCommandStore } from '@/stores/commandStore' import { useCommandStore } from '@/stores/commandStore'
import { useNodeDefStore } from '@/stores/nodeDefStore' import { useNodeDefStore } from '@/stores/nodeDefStore'
import { useQueueSettingsStore } from '@/stores/queueStore' import { useQueueSettingsStore } from '@/queue/stores/queueStore'
import { useWorkspaceStore } from '@/stores/workspaceStore' import { useWorkspaceStore } from '@/stores/workspaceStore'
import { graphHasMissingNodes } from '@/workbench/extensions/manager/utils/graphHasMissingNodes' import { graphHasMissingNodes } from '@/workbench/extensions/manager/utils/graphHasMissingNodes'

View File

@@ -1,11 +1,11 @@
import type { Meta, StoryObj } from '@storybook/vue3-vite' import type { Meta, StoryObj } from '@storybook/vue3-vite'
import type { JobAction } from '@/composables/queue/useJobActions' import type { JobAction } from '@/queue/composables/useJobActions'
import type { JobListItem } from '@/composables/queue/useJobList' import type { JobListItem } from '@/queue/composables/useJobList'
import type { AssetItem } from '@/platform/assets/schemas/assetSchema' import type { AssetItem } from '@/platform/assets/schemas/assetSchema'
import { setMockJobActions } from '@/storybook/mocks/useJobActions' import { setMockJobActions } from '@/storybook/mocks/useJobActions'
import { setMockJobItems } from '@/storybook/mocks/useJobList' import { setMockJobItems } from '@/storybook/mocks/useJobList'
import { iconForJobState } from '@/utils/queueDisplay' import { iconForJobState } from '@/queue/utils/queueDisplay'
import AssetsSidebarListView from './AssetsSidebarListView.vue' import AssetsSidebarListView from './AssetsSidebarListView.vue'

View File

@@ -95,21 +95,21 @@ import { useI18n } from 'vue-i18n'
import VirtualGrid from '@/components/common/VirtualGrid.vue' import VirtualGrid from '@/components/common/VirtualGrid.vue'
import Button from '@/components/ui/button/Button.vue' import Button from '@/components/ui/button/Button.vue'
import type { JobAction } from '@/composables/queue/useJobActions' import type { JobAction } from '@/queue/composables/useJobActions'
import { useJobActions } from '@/composables/queue/useJobActions' import { useJobActions } from '@/queue/composables/useJobActions'
import type { JobListItem } from '@/composables/queue/useJobList' import type { JobListItem } from '@/queue/composables/useJobList'
import { useJobList } from '@/composables/queue/useJobList' import { useJobList } from '@/queue/composables/useJobList'
import AssetsListCard from '@/platform/assets/components/AssetsListCard.vue' import AssetsListCard from '@/platform/assets/components/AssetsListCard.vue'
import { getOutputAssetMetadata } from '@/platform/assets/schemas/assetMetadataSchema' import { getOutputAssetMetadata } from '@/platform/assets/schemas/assetMetadataSchema'
import type { AssetItem } from '@/platform/assets/schemas/assetSchema' import type { AssetItem } from '@/platform/assets/schemas/assetSchema'
import type { JobState } from '@/types/queue' import type { JobState } from '@/queue/types/queue'
import { import {
formatDuration, formatDuration,
formatSize, formatSize,
getMediaTypeFromFilename, getMediaTypeFromFilename,
truncateFilename truncateFilename
} from '@/utils/formatUtil' } from '@/utils/formatUtil'
import { iconForJobState } from '@/utils/queueDisplay' import { iconForJobState } from '@/queue/utils/queueDisplay'
import { cn } from '@/utils/tailwindUtil' import { cn } from '@/utils/tailwindUtil'
const { assets, isSelected } = defineProps<{ const { assets, isSelected } = defineProps<{

View File

@@ -234,7 +234,7 @@ import { isCloud } from '@/platform/distribution/types'
import { useSettingStore } from '@/platform/settings/settingStore' import { useSettingStore } from '@/platform/settings/settingStore'
import { useCommandStore } from '@/stores/commandStore' import { useCommandStore } from '@/stores/commandStore'
import { useDialogStore } from '@/stores/dialogStore' import { useDialogStore } from '@/stores/dialogStore'
import { ResultItemImpl, useQueueStore } from '@/stores/queueStore' import { ResultItemImpl, useQueueStore } from '@/queue/stores/queueStore'
import { formatDuration, getMediaTypeFromFilename } from '@/utils/formatUtil' import { formatDuration, getMediaTypeFromFilename } from '@/utils/formatUtil'
import { cn } from '@/utils/tailwindUtil' import { cn } from '@/utils/tailwindUtil'

View File

@@ -8,7 +8,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed } from 'vue' import { computed } from 'vue'
import type { ResultItemImpl } from '@/stores/queueStore' import type { ResultItemImpl } from '@/queue/stores/queueStore'
const { result } = defineProps<{ const { result } = defineProps<{
result: ResultItemImpl result: ResultItemImpl

View File

@@ -5,7 +5,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { createApp, nextTick } from 'vue' import { createApp, nextTick } from 'vue'
import type { NodeId } from '@/platform/workflow/validation/schemas/workflowSchema' import type { NodeId } from '@/platform/workflow/validation/schemas/workflowSchema'
import type { ResultItemImpl } from '@/stores/queueStore' import type { ResultItemImpl } from '@/queue/stores/queueStore'
import ResultGallery from './ResultGallery.vue' import ResultGallery from './ResultGallery.vue'

View File

@@ -45,7 +45,7 @@ import Galleria from 'primevue/galleria'
import { computed, onMounted, onUnmounted, ref, watch } from 'vue' import { computed, onMounted, onUnmounted, ref, watch } from 'vue'
import ComfyImage from '@/components/common/ComfyImage.vue' import ComfyImage from '@/components/common/ComfyImage.vue'
import type { ResultItemImpl } from '@/stores/queueStore' import type { ResultItemImpl } from '@/queue/stores/queueStore'
import ResultAudio from './ResultAudio.vue' import ResultAudio from './ResultAudio.vue'
import ResultVideo from './ResultVideo.vue' import ResultVideo from './ResultVideo.vue'

View File

@@ -10,7 +10,7 @@ import { computed } from 'vue'
import { useSettingStore } from '@/platform/settings/settingStore' import { useSettingStore } from '@/platform/settings/settingStore'
import { useExtensionStore } from '@/stores/extensionStore' import { useExtensionStore } from '@/stores/extensionStore'
import type { ResultItemImpl } from '@/stores/queueStore' import type { ResultItemImpl } from '@/queue/stores/queueStore'
const props = defineProps<{ const props = defineProps<{
result: ResultItemImpl result: ResultItemImpl

View File

@@ -39,7 +39,7 @@ import { useLitegraphService } from '@/services/litegraphService'
import type { ComfyCommand } from '@/stores/commandStore' import type { ComfyCommand } from '@/stores/commandStore'
import { useExecutionStore } from '@/stores/executionStore' import { useExecutionStore } from '@/stores/executionStore'
import { useHelpCenterStore } from '@/stores/helpCenterStore' import { useHelpCenterStore } from '@/stores/helpCenterStore'
import { useQueueSettingsStore, useQueueStore } from '@/stores/queueStore' import { useQueueSettingsStore, useQueueStore } from '@/queue/stores/queueStore'
import { useSubgraphNavigationStore } from '@/stores/subgraphNavigationStore' import { useSubgraphNavigationStore } from '@/stores/subgraphNavigationStore'
import { useSubgraphStore } from '@/stores/subgraphStore' import { useSubgraphStore } from '@/stores/subgraphStore'
import { useBottomPanelStore } from '@/stores/workspace/bottomPanelStore' import { useBottomPanelStore } from '@/stores/workspace/bottomPanelStore'

View File

@@ -1,7 +1,7 @@
import type { Meta, StoryObj } from '@storybook/vue3-vite' import type { Meta, StoryObj } from '@storybook/vue3-vite'
import Button from '@/components/ui/button/Button.vue' import Button from '@/components/ui/button/Button.vue'
import { iconForJobState } from '@/utils/queueDisplay' import { iconForJobState } from '@/queue/utils/queueDisplay'
import AssetsListCard from './AssetsListCard.vue' import AssetsListCard from './AssetsListCard.vue'

View File

@@ -2,7 +2,7 @@ import type { AssetItem } from '@/platform/assets/schemas/assetSchema'
import type { OutputAssetMetadata } from '@/platform/assets/schemas/assetMetadataSchema' import type { OutputAssetMetadata } from '@/platform/assets/schemas/assetMetadataSchema'
import type { AssetContext } from '@/platform/assets/schemas/mediaAssetSchema' import type { AssetContext } from '@/platform/assets/schemas/mediaAssetSchema'
import { api } from '@/scripts/api' import { api } from '@/scripts/api'
import type { ResultItemImpl, TaskItemImpl } from '@/stores/queueStore' import type { ResultItemImpl, TaskItemImpl } from '@/queue/stores/queueStore'
/** /**
* Extract asset type from tags array * Extract asset type from tags array

View File

@@ -1,12 +1,12 @@
import { createPinia, setActivePinia } from 'pinia' import { createPinia, setActivePinia } from 'pinia'
import { beforeEach, describe, expect, it, vi } from 'vitest' import { beforeEach, describe, expect, it, vi } from 'vitest'
import { ResultItemImpl } from '@/stores/queueStore' import { ResultItemImpl } from '@/queue/stores/queueStore'
import type { AssetMeta } from '../schemas/mediaAssetSchema' import type { AssetMeta } from '../schemas/mediaAssetSchema'
import { useMediaAssetGalleryStore } from './useMediaAssetGalleryStore' import { useMediaAssetGalleryStore } from './useMediaAssetGalleryStore'
vi.mock('@/stores/queueStore', () => ({ vi.mock('@/queue/stores/queueStore', () => ({
ResultItemImpl: vi ResultItemImpl: vi
.fn<typeof ResultItemImpl>() .fn<typeof ResultItemImpl>()
.mockImplementation(function (data) { .mockImplementation(function (data) {

View File

@@ -1,7 +1,7 @@
import { defineStore } from 'pinia' import { defineStore } from 'pinia'
import { ref, shallowRef } from 'vue' import { ref, shallowRef } from 'vue'
import { ResultItemImpl } from '@/stores/queueStore' import { ResultItemImpl } from '@/queue/stores/queueStore'
import type { AssetMeta } from '../schemas/mediaAssetSchema' import type { AssetMeta } from '../schemas/mediaAssetSchema'

View File

@@ -1,5 +1,5 @@
import type { ComfyWorkflowJSON } from '@/platform/workflow/validation/schemas/workflowSchema' import type { ComfyWorkflowJSON } from '@/platform/workflow/validation/schemas/workflowSchema'
import type { ResultItemImpl } from '@/stores/queueStore' import type { ResultItemImpl } from '@/queue/stores/queueStore'
/** /**
* Metadata for output assets from queue store * Metadata for output assets from queue store

View File

@@ -89,7 +89,7 @@ import Button from '@/components/ui/button/Button.vue'
import type { import type {
CompletionSummary, CompletionSummary,
CompletionSummaryMode CompletionSummaryMode
} from '@/composables/queue/useCompletionSummary' } from '@/queue/composables/useCompletionSummary'
type Props = { type Props = {
mode: CompletionSummaryMode mode: CompletionSummaryMode

View File

@@ -3,7 +3,7 @@ import { describe, expect, it } from 'vitest'
import { createI18n } from 'vue-i18n' import { createI18n } from 'vue-i18n'
import QueueOverlayEmpty from './QueueOverlayEmpty.vue' import QueueOverlayEmpty from './QueueOverlayEmpty.vue'
import type { CompletionSummary } from '@/composables/queue/useCompletionSummary' import type { CompletionSummary } from '@/queue/composables/useCompletionSummary'
const i18n = createI18n({ const i18n = createI18n({
legacy: false, legacy: false,

View File

@@ -14,8 +14,8 @@
<script setup lang="ts"> <script setup lang="ts">
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import CompletionSummaryBanner from '@/components/queue/CompletionSummaryBanner.vue' import CompletionSummaryBanner from '@/queue/components/CompletionSummaryBanner.vue'
import type { CompletionSummary } from '@/composables/queue/useCompletionSummary' import type { CompletionSummary } from '@/queue/composables/useCompletionSummary'
defineProps<{ summary: CompletionSummary }>() defineProps<{ summary: CompletionSummary }>()

View File

@@ -79,9 +79,9 @@ import type {
JobListItem, JobListItem,
JobSortMode, JobSortMode,
JobTab JobTab
} from '@/composables/queue/useJobList' } from '@/queue/composables/useJobList'
import type { MenuEntry } from '@/composables/queue/useJobMenu' import type { MenuEntry } from '@/queue/composables/useJobMenu'
import { useJobMenu } from '@/composables/queue/useJobMenu' import { useJobMenu } from '@/queue/composables/useJobMenu'
import QueueOverlayHeader from './QueueOverlayHeader.vue' import QueueOverlayHeader from './QueueOverlayHeader.vue'
import JobContextMenu from './job/JobContextMenu.vue' import JobContextMenu from './job/JobContextMenu.vue'

View File

@@ -63,16 +63,16 @@
import { computed, nextTick, ref } from 'vue' import { computed, nextTick, ref } from 'vue'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import QueueOverlayActive from '@/components/queue/QueueOverlayActive.vue' import QueueOverlayActive from '@/queue/components/QueueOverlayActive.vue'
import QueueOverlayEmpty from '@/components/queue/QueueOverlayEmpty.vue' import QueueOverlayEmpty from '@/queue/components/QueueOverlayEmpty.vue'
import QueueOverlayExpanded from '@/components/queue/QueueOverlayExpanded.vue' import QueueOverlayExpanded from '@/queue/components/QueueOverlayExpanded.vue'
import QueueClearHistoryDialog from '@/components/queue/dialogs/QueueClearHistoryDialog.vue' import QueueClearHistoryDialog from '@/queue/components/dialogs/QueueClearHistoryDialog.vue'
import ResultGallery from '@/components/sidebar/tabs/queue/ResultGallery.vue' import ResultGallery from '@/components/sidebar/tabs/queue/ResultGallery.vue'
import { useCompletionSummary } from '@/composables/queue/useCompletionSummary' import { useCompletionSummary } from '@/queue/composables/useCompletionSummary'
import { useJobList } from '@/composables/queue/useJobList' import { useJobList } from '@/queue/composables/useJobList'
import type { JobListItem } from '@/composables/queue/useJobList' import type { JobListItem } from '@/queue/composables/useJobList'
import { useQueueProgress } from '@/composables/queue/useQueueProgress' import { useQueueProgress } from '@/queue/composables/useQueueProgress'
import { useResultGallery } from '@/composables/queue/useResultGallery' import { useResultGallery } from '@/queue/composables/useResultGallery'
import { useErrorHandling } from '@/composables/useErrorHandling' import { useErrorHandling } from '@/composables/useErrorHandling'
import { useAssetSelectionStore } from '@/platform/assets/composables/useAssetSelectionStore' import { useAssetSelectionStore } from '@/platform/assets/composables/useAssetSelectionStore'
import { isCloud } from '@/platform/distribution/types' import { isCloud } from '@/platform/distribution/types'
@@ -81,7 +81,7 @@ import { useAssetsStore } from '@/stores/assetsStore'
import { useCommandStore } from '@/stores/commandStore' import { useCommandStore } from '@/stores/commandStore'
import { useDialogStore } from '@/stores/dialogStore' import { useDialogStore } from '@/stores/dialogStore'
import { useExecutionStore } from '@/stores/executionStore' import { useExecutionStore } from '@/stores/executionStore'
import { useQueueStore } from '@/stores/queueStore' import { useQueueStore } from '@/queue/stores/queueStore'
import { useSidebarTabStore } from '@/stores/workspace/sidebarTabStore' import { useSidebarTabStore } from '@/stores/workspace/sidebarTabStore'
type OverlayState = 'hidden' | 'empty' | 'active' | 'expanded' type OverlayState = 'hidden' | 'empty' | 'active' | 'expanded'

View File

@@ -53,7 +53,7 @@ import { useI18n } from 'vue-i18n'
import Button from '@/components/ui/button/Button.vue' import Button from '@/components/ui/button/Button.vue'
import { useErrorHandling } from '@/composables/useErrorHandling' import { useErrorHandling } from '@/composables/useErrorHandling'
import { useDialogStore } from '@/stores/dialogStore' import { useDialogStore } from '@/stores/dialogStore'
import { useQueueStore } from '@/stores/queueStore' import { useQueueStore } from '@/queue/stores/queueStore'
const dialogStore = useDialogStore() const dialogStore = useDialogStore()
const queueStore = useQueueStore() const queueStore = useQueueStore()

View File

@@ -47,7 +47,7 @@ import Popover from 'primevue/popover'
import { ref } from 'vue' import { ref } from 'vue'
import Button from '@/components/ui/button/Button.vue' import Button from '@/components/ui/button/Button.vue'
import type { MenuEntry } from '@/composables/queue/useJobMenu' import type { MenuEntry } from '@/queue/composables/useJobMenu'
defineProps<{ entries: MenuEntry[] }>() defineProps<{ entries: MenuEntry[] }>()

View File

@@ -2,7 +2,7 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite'
import type { TaskStatus } from '@/schemas/apiSchema' import type { TaskStatus } from '@/schemas/apiSchema'
import { useExecutionStore } from '@/stores/executionStore' import { useExecutionStore } from '@/stores/executionStore'
import { TaskItemImpl, useQueueStore } from '@/stores/queueStore' import { TaskItemImpl, useQueueStore } from '@/queue/stores/queueStore'
import JobDetailsPopover from './JobDetailsPopover.vue' import JobDetailsPopover from './JobDetailsPopover.vue'

View File

@@ -101,10 +101,10 @@ import { isCloud } from '@/platform/distribution/types'
import { useWorkflowStore } from '@/platform/workflow/management/stores/workflowStore' import { useWorkflowStore } from '@/platform/workflow/management/stores/workflowStore'
import { useDialogService } from '@/services/dialogService' import { useDialogService } from '@/services/dialogService'
import { useExecutionStore } from '@/stores/executionStore' import { useExecutionStore } from '@/stores/executionStore'
import { useQueueStore } from '@/stores/queueStore' import { useQueueStore } from '@/queue/stores/queueStore'
import type { TaskItemImpl } from '@/stores/queueStore' import type { TaskItemImpl } from '@/queue/stores/queueStore'
import { formatClockTime } from '@/utils/dateTimeUtil' import { formatClockTime } from '@/utils/dateTimeUtil'
import { jobStateFromTask } from '@/utils/queueUtil' import { jobStateFromTask } from '@/queue/utils/queueUtil'
import { useJobErrorReporting } from './useJobErrorReporting' import { useJobErrorReporting } from './useJobErrorReporting'
import { formatElapsedTime, useQueueEstimates } from './useQueueEstimates' import { formatElapsedTime, useQueueEstimates } from './useQueueEstimates'

View File

@@ -137,8 +137,8 @@ import { computed, ref } from 'vue'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import Button from '@/components/ui/button/Button.vue' import Button from '@/components/ui/button/Button.vue'
import { jobSortModes, jobTabs } from '@/composables/queue/useJobList' import { jobSortModes, jobTabs } from '@/queue/composables/useJobList'
import type { JobSortMode, JobTab } from '@/composables/queue/useJobList' import type { JobSortMode, JobTab } from '@/queue/composables/useJobList'
import { buildTooltipConfig } from '@/composables/useTooltipConfig' import { buildTooltipConfig } from '@/composables/useTooltipConfig'
import { isCloud } from '@/platform/distribution/types' import { isCloud } from '@/platform/distribution/types'

View File

@@ -38,8 +38,8 @@
<script setup lang="ts"> <script setup lang="ts">
import { onBeforeUnmount, ref, watch } from 'vue' import { onBeforeUnmount, ref, watch } from 'vue'
import QueueJobItem from '@/components/queue/job/QueueJobItem.vue' import QueueJobItem from '@/queue/components/job/QueueJobItem.vue'
import type { JobGroup, JobListItem } from '@/composables/queue/useJobList' import type { JobGroup, JobListItem } from '@/queue/composables/useJobList'
const props = defineProps<{ displayedJobGroups: JobGroup[] }>() const props = defineProps<{ displayedJobGroups: JobGroup[] }>()

View File

@@ -198,12 +198,12 @@
import { computed, nextTick, ref, watch } from 'vue' import { computed, nextTick, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import JobDetailsPopover from '@/components/queue/job/JobDetailsPopover.vue' import JobDetailsPopover from '@/queue/components/job/JobDetailsPopover.vue'
import QueueAssetPreview from '@/components/queue/job/QueueAssetPreview.vue' import QueueAssetPreview from '@/queue/components/job/QueueAssetPreview.vue'
import Button from '@/components/ui/button/Button.vue' import Button from '@/components/ui/button/Button.vue'
import { buildTooltipConfig } from '@/composables/useTooltipConfig' import { buildTooltipConfig } from '@/composables/useTooltipConfig'
import type { JobState } from '@/types/queue' import type { JobState } from '@/queue/types/queue'
import { iconForJobState } from '@/utils/queueDisplay' import { iconForJobState } from '@/queue/utils/queueDisplay'
import { cn } from '@/utils/tailwindUtil' import { cn } from '@/utils/tailwindUtil'
const props = withDefaults( const props = withDefaults(

View File

@@ -2,7 +2,7 @@ import { computed } from 'vue'
import type { ComputedRef } from 'vue' import type { ComputedRef } from 'vue'
import type { ExecutionErrorWsMessage } from '@/schemas/apiSchema' import type { ExecutionErrorWsMessage } from '@/schemas/apiSchema'
import type { TaskItemImpl } from '@/stores/queueStore' import type { TaskItemImpl } from '@/queue/stores/queueStore'
type CopyHandler = (value: string) => void | Promise<void> type CopyHandler = (value: string) => void | Promise<void>

View File

@@ -1,8 +1,8 @@
import { computed, ref } from 'vue' import { computed, ref } from 'vue'
import { describe, expect, it } from 'vitest' import { describe, expect, it } from 'vitest'
import type { TaskItemImpl } from '@/stores/queueStore' import type { TaskItemImpl } from '@/queue/stores/queueStore'
import type { JobState } from '@/types/queue' import type { JobState } from '@/queue/types/queue'
import { formatElapsedTime, useQueueEstimates } from './useQueueEstimates' import { formatElapsedTime, useQueueEstimates } from './useQueueEstimates'
import type { UseQueueEstimatesOptions } from './useQueueEstimates' import type { UseQueueEstimatesOptions } from './useQueueEstimates'

View File

@@ -2,8 +2,8 @@ import { computed } from 'vue'
import type { ComputedRef, Ref } from 'vue' import type { ComputedRef, Ref } from 'vue'
import type { useExecutionStore } from '@/stores/executionStore' import type { useExecutionStore } from '@/stores/executionStore'
import type { TaskItemImpl, useQueueStore } from '@/stores/queueStore' import type { TaskItemImpl, useQueueStore } from '@/queue/stores/queueStore'
import type { JobState } from '@/types/queue' import type { JobState } from '@/queue/types/queue'
type QueueStore = ReturnType<typeof useQueueStore> type QueueStore = ReturnType<typeof useQueueStore>
type ExecutionStore = ReturnType<typeof useExecutionStore> type ExecutionStore = ReturnType<typeof useExecutionStore>

View File

@@ -1,8 +1,8 @@
import { computed, ref, watch } from 'vue' import { computed, ref, watch } from 'vue'
import { useExecutionStore } from '@/stores/executionStore' import { useExecutionStore } from '@/stores/executionStore'
import { useQueueStore } from '@/stores/queueStore' import { useQueueStore } from '@/queue/stores/queueStore'
import { jobStateFromTask } from '@/utils/queueUtil' import { jobStateFromTask } from '@/queue/utils/queueUtil'
export type CompletionSummaryMode = 'allSuccess' | 'mixed' | 'allFailed' export type CompletionSummaryMode = 'allSuccess' | 'mixed' | 'allFailed'

View File

@@ -2,9 +2,9 @@ import { computed, ref } from 'vue'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useErrorHandling } from '@/composables/useErrorHandling' import { useErrorHandling } from '@/composables/useErrorHandling'
import type { JobListItem } from '@/composables/queue/useJobList' import type { JobListItem } from '@/queue/composables/useJobList'
import { useJobMenu } from '@/composables/queue/useJobMenu' import { useJobMenu } from '@/queue/composables/useJobMenu'
import type { JobState } from '@/types/queue' import type { JobState } from '@/queue/types/queue'
type JobActionKey = 'cancel' type JobActionKey = 'cancel'

View File

@@ -1,14 +1,14 @@
import { computed, onUnmounted, ref, watch } from 'vue' import { computed, onUnmounted, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useQueueProgress } from '@/composables/queue/useQueueProgress' import { useQueueProgress } from '@/queue/composables/useQueueProgress'
import { st } from '@/i18n' import { st } from '@/i18n'
import { isCloud } from '@/platform/distribution/types' import { isCloud } from '@/platform/distribution/types'
import { useWorkflowStore } from '@/platform/workflow/management/stores/workflowStore' import { useWorkflowStore } from '@/platform/workflow/management/stores/workflowStore'
import { useExecutionStore } from '@/stores/executionStore' import { useExecutionStore } from '@/stores/executionStore'
import { useQueueStore } from '@/stores/queueStore' import { useQueueStore } from '@/queue/stores/queueStore'
import type { TaskItemImpl } from '@/stores/queueStore' import type { TaskItemImpl } from '@/queue/stores/queueStore'
import type { JobState } from '@/types/queue' import type { JobState } from '@/queue/types/queue'
import { import {
dateKey, dateKey,
formatClockTime, formatClockTime,
@@ -17,8 +17,8 @@ import {
isYesterday isYesterday
} from '@/utils/dateTimeUtil' } from '@/utils/dateTimeUtil'
import { normalizeI18nKey } from '@/utils/formatUtil' import { normalizeI18nKey } from '@/utils/formatUtil'
import { buildJobDisplay } from '@/utils/queueDisplay' import { buildJobDisplay } from '@/queue/utils/queueDisplay'
import { jobStateFromTask } from '@/utils/queueUtil' import { jobStateFromTask } from '@/queue/utils/queueUtil'
/** Tabs for job list filtering */ /** Tabs for job list filtering */
export const jobTabs = ['All', 'Completed', 'Failed'] as const export const jobTabs = ['All', 'Completed', 'Failed'] as const

View File

@@ -1,7 +1,7 @@
import { computed } from 'vue' import { computed } from 'vue'
import { downloadFile } from '@/base/common/downloadUtil' import { downloadFile } from '@/base/common/downloadUtil'
import type { JobListItem } from '@/composables/queue/useJobList' import type { JobListItem } from '@/queue/composables/useJobList'
import { useCopyToClipboard } from '@/composables/useCopyToClipboard' import { useCopyToClipboard } from '@/composables/useCopyToClipboard'
import { st, t } from '@/i18n' import { st, t } from '@/i18n'
import { mapTaskOutputToAssetItem } from '@/platform/assets/composables/media/assetMappers' import { mapTaskOutputToAssetItem } from '@/platform/assets/composables/media/assetMappers'
@@ -19,8 +19,8 @@ import { downloadBlob } from '@/scripts/utils'
import { useDialogService } from '@/services/dialogService' import { useDialogService } from '@/services/dialogService'
import { useLitegraphService } from '@/services/litegraphService' import { useLitegraphService } from '@/services/litegraphService'
import { useNodeDefStore } from '@/stores/nodeDefStore' import { useNodeDefStore } from '@/stores/nodeDefStore'
import { useQueueStore } from '@/stores/queueStore' import { useQueueStore } from '@/queue/stores/queueStore'
import type { ResultItemImpl, TaskItemImpl } from '@/stores/queueStore' import type { ResultItemImpl, TaskItemImpl } from '@/queue/stores/queueStore'
import { createAnnotatedPath } from '@/utils/createAnnotatedPath' import { createAnnotatedPath } from '@/utils/createAnnotatedPath'
import { appendJsonExt } from '@/utils/formatUtil' import { appendJsonExt } from '@/utils/formatUtil'

View File

@@ -1,7 +1,7 @@
import { ref, shallowRef } from 'vue' import { ref, shallowRef } from 'vue'
import type { JobListItem } from '@/composables/queue/useJobList' import type { JobListItem } from '@/queue/composables/useJobList'
import type { ResultItemImpl } from '@/stores/queueStore' import type { ResultItemImpl } from '@/queue/stores/queueStore'
/** /**
* Manages result gallery state and activation for queue items. * Manages result gallery state and activation for queue items.

View File

@@ -3,7 +3,7 @@ import { app } from '@/scripts/app'
import { import {
useQueuePendingTaskCountStore, useQueuePendingTaskCountStore,
useQueueSettingsStore useQueueSettingsStore
} from '@/stores/queueStore' } from '@/queue/stores/queueStore'
export function setupAutoQueueHandler() { export function setupAutoQueueHandler() {
const queueCountStore = useQueuePendingTaskCountStore() const queueCountStore = useQueuePendingTaskCountStore()

View File

@@ -1,5 +1,5 @@
import type { TaskItemImpl } from '@/stores/queueStore' import type { TaskItemImpl } from '@/queue/stores/queueStore'
import type { JobState } from '@/types/queue' import type { JobState } from '@/queue/types/queue'
import { formatDuration } from '@/utils/formatUtil' import { formatDuration } from '@/utils/formatUtil'
import { clampPercentInt, formatPercent0 } from '@/utils/numberUtil' import { clampPercentInt, formatPercent0 } from '@/utils/numberUtil'

View File

@@ -1,5 +1,5 @@
import type { TaskItemImpl } from '@/stores/queueStore' import type { TaskItemImpl } from '@/queue/stores/queueStore'
import type { JobState } from '@/types/queue' import type { JobState } from '@/queue/types/queue'
/** /**
* Map a task to a UI job state, including initialization override. * Map a task to a UI job state, including initialization override.

View File

@@ -18,7 +18,7 @@ import { useAssetWidgetData } from '@/renderer/extensions/vueNodes/widgets/compo
import type { ResultItemType } from '@/schemas/apiSchema' import type { ResultItemType } from '@/schemas/apiSchema'
import { api } from '@/scripts/api' import { api } from '@/scripts/api'
import { useAssetsStore } from '@/stores/assetsStore' import { useAssetsStore } from '@/stores/assetsStore'
import { useQueueStore } from '@/stores/queueStore' import { useQueueStore } from '@/queue/stores/queueStore'
import type { SimplifiedWidget } from '@/types/simplifiedWidget' import type { SimplifiedWidget } from '@/types/simplifiedWidget'
import type { AssetKind } from '@/types/widgetTypes' import type { AssetKind } from '@/types/widgetTypes'
import { import {

View File

@@ -130,9 +130,6 @@ The following table lists ALL 46 store instances in the system as of 2025-09-01:
| nodeBookmarkStore.ts | useNodeBookmarkStore | Manages node bookmarks and favorites | Nodes | | nodeBookmarkStore.ts | useNodeBookmarkStore | Manages node bookmarks and favorites | Nodes |
| nodeDefStore.ts | useNodeDefStore | Manages node definitions and schemas | Nodes | | nodeDefStore.ts | useNodeDefStore | Manages node definitions and schemas | Nodes |
| nodeDefStore.ts | useNodeFrequencyStore | Tracks node usage frequency | Nodes | | nodeDefStore.ts | useNodeFrequencyStore | Tracks node usage frequency | Nodes |
| queueStore.ts | useQueueStore | Manages execution queue and task history | Execution |
| queueStore.ts | useQueuePendingTaskCountStore | Tracks pending task counts | Execution |
| queueStore.ts | useQueueSettingsStore | Manages queue execution settings | Execution |
| releaseStore.ts | useReleaseStore | Manages application release information | System | | releaseStore.ts | useReleaseStore | Manages application release information | System |
| serverConfigStore.ts | useServerConfigStore | Handles server configuration | Config | | serverConfigStore.ts | useServerConfigStore | Handles server configuration | Config |
| settingStore.ts | useSettingStore | Manages application settings | Config | | settingStore.ts | useSettingStore | Manages application settings | Config |
@@ -148,6 +145,8 @@ The following table lists ALL 46 store instances in the system as of 2025-09-01:
| workflowTemplatesStore.ts | useWorkflowTemplatesStore | Manages workflow templates | Workflows | | workflowTemplatesStore.ts | useWorkflowTemplatesStore | Manages workflow templates | Workflows |
| workspaceStore.ts | useWorkspaceStore | Manages overall workspace state | Workspace | | workspaceStore.ts | useWorkspaceStore | Manages overall workspace state | Workspace |
Note: queue stores live in `src/queue/stores/queueStore.ts`.
### Workspace Stores ### Workspace Stores
Located in `stores/workspace/`: Located in `stores/workspace/`:
@@ -386,4 +385,4 @@ describe('useExampleStore', () => {
}) })
``` ```
For more information on Pinia, refer to the [Pinia documentation](https://pinia.vuejs.org/introduction.html). For more information on Pinia, refer to the [Pinia documentation](https://pinia.vuejs.org/introduction.html).

View File

@@ -11,7 +11,7 @@ import { isCloud } from '@/platform/distribution/types'
import type { TaskItem } from '@/schemas/apiSchema' import type { TaskItem } from '@/schemas/apiSchema'
import { api } from '@/scripts/api' import { api } from '@/scripts/api'
import { TaskItemImpl } from './queueStore' import { TaskItemImpl } from '@/queue/stores/queueStore'
const INPUT_LIMIT = 100 const INPUT_LIMIT = 100

View File

@@ -12,7 +12,7 @@ import type { SidebarTabExtension, ToastManager } from '@/types/extensionTypes'
import { useApiKeyAuthStore } from './apiKeyAuthStore' import { useApiKeyAuthStore } from './apiKeyAuthStore'
import { useCommandStore } from './commandStore' import { useCommandStore } from './commandStore'
import { useFirebaseAuthStore } from './firebaseAuthStore' import { useFirebaseAuthStore } from './firebaseAuthStore'
import { useQueueSettingsStore } from './queueStore' import { useQueueSettingsStore } from '@/queue/stores/queueStore'
import { useBottomPanelStore } from './workspace/bottomPanelStore' import { useBottomPanelStore } from './workspace/bottomPanelStore'
import { useSidebarTabStore } from './workspace/sidebarTabStore' import { useSidebarTabStore } from './workspace/sidebarTabStore'

View File

@@ -1,7 +1,7 @@
import { ref } from 'vue' import { ref } from 'vue'
import type { JobAction } from '../../composables/queue/useJobActions' import type { JobAction } from '@/queue/composables/useJobActions'
import type { JobListItem } from '../../composables/queue/useJobList' import type { JobListItem } from '@/queue/composables/useJobList'
const actionsByJobId = ref<Record<string, JobAction[]>>({}) const actionsByJobId = ref<Record<string, JobAction[]>>({})

View File

@@ -1,12 +1,12 @@
import { computed, ref } from 'vue' import { computed, ref } from 'vue'
import type { TaskItemImpl } from '../../stores/queueStore' import type { TaskItemImpl } from '@/queue/stores/queueStore'
import type { import type {
JobGroup, JobGroup,
JobListItem, JobListItem,
JobSortMode, JobSortMode,
JobTab JobTab
} from '../../composables/queue/useJobList' } from '@/queue/composables/useJobList'
const jobItems = ref<JobListItem[]>([]) const jobItems = ref<JobListItem[]>([])

View File

@@ -58,7 +58,7 @@ import { useCanvasStore } from '@/renderer/core/canvas/canvasStore'
import type { StatusWsMessageStatus } from '@/schemas/apiSchema' import type { StatusWsMessageStatus } from '@/schemas/apiSchema'
import { api } from '@/scripts/api' import { api } from '@/scripts/api'
import { app } from '@/scripts/app' import { app } from '@/scripts/app'
import { setupAutoQueueHandler } from '@/services/autoQueueService' import { setupAutoQueueHandler } from '@/queue/services/autoQueueService'
import { useKeybindingService } from '@/services/keybindingService' import { useKeybindingService } from '@/services/keybindingService'
import { useAssetsStore } from '@/stores/assetsStore' import { useAssetsStore } from '@/stores/assetsStore'
import { useCommandStore } from '@/stores/commandStore' import { useCommandStore } from '@/stores/commandStore'
@@ -70,7 +70,7 @@ import { useNodeDefStore, useNodeFrequencyStore } from '@/stores/nodeDefStore'
import { import {
useQueuePendingTaskCountStore, useQueuePendingTaskCountStore,
useQueueStore useQueueStore
} from '@/stores/queueStore' } from '@/queue/stores/queueStore'
import { useServerConfigStore } from '@/stores/serverConfigStore' import { useServerConfigStore } from '@/stores/serverConfigStore'
import { useBottomPanelStore } from '@/stores/workspace/bottomPanelStore' import { useBottomPanelStore } from '@/stores/workspace/bottomPanelStore'
import { useColorPaletteStore } from '@/stores/workspace/colorPaletteStore' import { useColorPaletteStore } from '@/stores/workspace/colorPaletteStore'

View File

@@ -26,7 +26,7 @@ import WidgetInputNumberInput from '@/renderer/extensions/vueNodes/widgets/compo
import { app } from '@/scripts/app' import { app } from '@/scripts/app'
import { useCommandStore } from '@/stores/commandStore' import { useCommandStore } from '@/stores/commandStore'
import { useNodeOutputStore } from '@/stores/imagePreviewStore' import { useNodeOutputStore } from '@/stores/imagePreviewStore'
import { useQueueSettingsStore } from '@/stores/queueStore' import { useQueueSettingsStore } from '@/queue/stores/queueStore'
import { isElectron } from '@/utils/envUtil' import { isElectron } from '@/utils/envUtil'
const nodeOutputStore = useNodeOutputStore() const nodeOutputStore = useNodeOutputStore()

View File

@@ -2,8 +2,8 @@ import { mount } from '@vue/test-utils'
import { afterEach, describe, expect, it, vi } from 'vitest' import { afterEach, describe, expect, it, vi } from 'vitest'
import { defineComponent, nextTick } from 'vue' import { defineComponent, nextTick } from 'vue'
import JobGroupsList from '@/components/queue/job/JobGroupsList.vue' import JobGroupsList from '@/queue/components/job/JobGroupsList.vue'
import type { JobGroup, JobListItem } from '@/composables/queue/useJobList' import type { JobGroup, JobListItem } from '@/queue/composables/useJobList'
const QueueJobItemStub = defineComponent({ const QueueJobItemStub = defineComponent({
name: 'QueueJobItemStub', name: 'QueueJobItemStub',
@@ -22,7 +22,6 @@ const QueueJobItemStub = defineComponent({
runningNodeName: { type: String, default: undefined }, runningNodeName: { type: String, default: undefined },
activeDetailsId: { type: String, default: null } activeDetailsId: { type: String, default: null }
}, },
emits: ['cancel', 'delete', 'menu', 'view', 'details-enter', 'details-leave'],
template: '<div class="queue-job-item-stub"></div>' template: '<div class="queue-job-item-stub"></div>'
}) })

View File

@@ -3,12 +3,12 @@ import { computed, ref } from 'vue'
import type { ComputedRef } from 'vue' import type { ComputedRef } from 'vue'
import type { ExecutionErrorWsMessage } from '@/schemas/apiSchema' import type { ExecutionErrorWsMessage } from '@/schemas/apiSchema'
import type { TaskItemImpl } from '@/stores/queueStore' import type { TaskItemImpl } from '@/queue/stores/queueStore'
import type { import type {
JobErrorDialogService, JobErrorDialogService,
UseJobErrorReportingOptions UseJobErrorReportingOptions
} from '@/components/queue/job/useJobErrorReporting' } from '@/queue/components/job/useJobErrorReporting'
import * as jobErrorReporting from '@/components/queue/job/useJobErrorReporting' import * as jobErrorReporting from '@/queue/components/job/useJobErrorReporting'
const createExecutionErrorMessage = ( const createExecutionErrorMessage = (
overrides: Partial<ExecutionErrorWsMessage> = {} overrides: Partial<ExecutionErrorWsMessage> = {}

View File

@@ -1,9 +1,9 @@
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { nextTick, reactive } from 'vue' import { nextTick, reactive } from 'vue'
import { useCompletionSummary } from '@/composables/queue/useCompletionSummary' import { useCompletionSummary } from '@/queue/composables/useCompletionSummary'
import { useExecutionStore } from '@/stores/executionStore' import { useExecutionStore } from '@/stores/executionStore'
import { useQueueStore } from '@/stores/queueStore' import { useQueueStore } from '@/queue/stores/queueStore'
type MockTask = { type MockTask = {
displayStatus: 'Completed' | 'Failed' | 'Cancelled' | 'Running' | 'Pending' displayStatus: 'Completed' | 'Failed' | 'Cancelled' | 'Running' | 'Pending'
@@ -14,7 +14,7 @@ type MockTask = {
} }
} }
vi.mock('@/stores/queueStore', () => { vi.mock('@/queue/stores/queueStore', () => {
const state = reactive({ const state = reactive({
runningTasks: [] as MockTask[], runningTasks: [] as MockTask[],
historyTasks: [] as MockTask[] historyTasks: [] as MockTask[]

View File

@@ -3,11 +3,11 @@ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'
import { nextTick, reactive, ref } from 'vue' import { nextTick, reactive, ref } from 'vue'
import type { Ref } from 'vue' import type { Ref } from 'vue'
import { useJobList } from '@/composables/queue/useJobList' import { useJobList } from '@/queue/composables/useJobList'
import type { JobState } from '@/types/queue' import type { JobState } from '@/queue/types/queue'
import { buildJobDisplay } from '@/utils/queueDisplay' import { buildJobDisplay } from '@/queue/utils/queueDisplay'
import type { BuildJobDisplayCtx } from '@/utils/queueDisplay' import type { BuildJobDisplayCtx } from '@/queue/utils/queueDisplay'
import type { TaskItemImpl } from '@/stores/queueStore' import type { TaskItemImpl } from '@/queue/stores/queueStore'
type TestTask = { type TestTask = {
promptId: string promptId: string
@@ -57,7 +57,7 @@ const ensureProgressRefs = () => {
if (!currentNodePercent) currentNodePercent = ref(0) as Ref<number> if (!currentNodePercent) currentNodePercent = ref(0) as Ref<number>
return { totalPercent, currentNodePercent } return { totalPercent, currentNodePercent }
} }
vi.mock('@/composables/queue/useQueueProgress', () => ({ vi.mock('@/queue/composables/useQueueProgress', () => ({
useQueueProgress: () => { useQueueProgress: () => {
ensureProgressRefs() ensureProgressRefs()
return { return {
@@ -67,7 +67,7 @@ vi.mock('@/composables/queue/useQueueProgress', () => ({
} }
})) }))
vi.mock('@/utils/queueDisplay', () => ({ vi.mock('@/queue/utils/queueDisplay', () => ({
buildJobDisplay: vi.fn( buildJobDisplay: vi.fn(
(task: TaskItemImpl, state: JobState, options: BuildJobDisplayCtx) => ({ (task: TaskItemImpl, state: JobState, options: BuildJobDisplayCtx) => ({
primary: `Job ${task.promptId}`, primary: `Job ${task.promptId}`,
@@ -80,7 +80,7 @@ vi.mock('@/utils/queueDisplay', () => ({
) )
})) }))
vi.mock('@/utils/queueUtil', () => ({ vi.mock('@/queue/utils/queueUtil', () => ({
jobStateFromTask: vi.fn( jobStateFromTask: vi.fn(
(task: TestTask, isInitializing?: boolean): JobState => (task: TestTask, isInitializing?: boolean): JobState =>
task.mockState ?? (isInitializing ? 'running' : 'completed') task.mockState ?? (isInitializing ? 'running' : 'completed')
@@ -102,7 +102,7 @@ const ensureQueueStore = () => {
} }
return queueStoreMock return queueStoreMock
} }
vi.mock('@/stores/queueStore', () => ({ vi.mock('@/queue/stores/queueStore', () => ({
useQueueStore: () => { useQueueStore: () => {
return ensureQueueStore() return ensureQueueStore()
} }

View File

@@ -2,8 +2,8 @@ import { describe, it, expect, beforeEach, vi } from 'vitest'
import { nextTick, ref } from 'vue' import { nextTick, ref } from 'vue'
import type { Ref } from 'vue' import type { Ref } from 'vue'
import type { JobListItem } from '@/composables/queue/useJobList' import type { JobListItem } from '@/queue/composables/useJobList'
import type { MenuEntry } from '@/composables/queue/useJobMenu' import type { MenuEntry } from '@/queue/composables/useJobMenu'
const downloadFileMock = vi.fn() const downloadFileMock = vi.fn()
vi.mock('@/base/common/downloadUtil', () => ({ vi.mock('@/base/common/downloadUtil', () => ({
@@ -99,7 +99,7 @@ const queueStoreMock = {
update: vi.fn(), update: vi.fn(),
delete: vi.fn() delete: vi.fn()
} }
vi.mock('@/stores/queueStore', () => ({ vi.mock('@/queue/stores/queueStore', () => ({
useQueueStore: () => queueStoreMock useQueueStore: () => queueStoreMock
})) }))
@@ -116,7 +116,7 @@ vi.mock('@/utils/formatUtil', () => ({
appendJsonExtMock(...args) appendJsonExtMock(...args)
})) }))
import { useJobMenu } from '@/composables/queue/useJobMenu' import { useJobMenu } from '@/queue/composables/useJobMenu'
const createJobItem = (overrides: Partial<JobListItem> = {}): JobListItem => ({ const createJobItem = (overrides: Partial<JobListItem> = {}): JobListItem => ({
id: overrides.id ?? 'job-1', id: overrides.id ?? 'job-1',

View File

@@ -4,7 +4,7 @@ import { nextTick, ref } from 'vue'
import type { Ref } from 'vue' import type { Ref } from 'vue'
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest' import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'
import { useQueueProgress } from '@/composables/queue/useQueueProgress' import { useQueueProgress } from '@/queue/composables/useQueueProgress'
import { formatPercent0 } from '@/utils/numberUtil' import { formatPercent0 } from '@/utils/numberUtil'
type ProgressValue = number | null type ProgressValue = number | null

View File

@@ -1,7 +1,7 @@
import { describe, it, expect } from 'vitest' import { describe, it, expect } from 'vitest'
import { useResultGallery } from '@/composables/queue/useResultGallery' import { useResultGallery } from '@/queue/composables/useResultGallery'
import type { JobListItem } from '@/composables/queue/useJobList' import type { JobListItem } from '@/queue/composables/useJobList'
type PreviewLike = { url: string; supportsPreview: boolean } type PreviewLike = { url: string; supportsPreview: boolean }

View File

@@ -22,7 +22,7 @@ const {
WidgetToggleSwitch WidgetToggleSwitch
} = FOR_TESTING } = FOR_TESTING
vi.mock('@/stores/queueStore', () => ({ vi.mock('@/queue/stores/queueStore', () => ({
useQueueStore: vi.fn(() => ({ useQueueStore: vi.fn(() => ({
historyTasks: [] historyTasks: []
})) }))

View File

@@ -32,7 +32,7 @@ vi.mock('@/platform/distribution/types', () => ({
})) }))
// Mock TaskItemImpl // Mock TaskItemImpl
vi.mock('@/stores/queueStore', () => ({ vi.mock('@/queue/stores/queueStore', () => ({
TaskItemImpl: class { TaskItemImpl: class {
public flatOutputs: Array<{ public flatOutputs: Array<{
supportsPreview: boolean supportsPreview: boolean

View File

@@ -10,7 +10,7 @@ import type {
TaskStatus TaskStatus
} from '@/schemas/apiSchema' } from '@/schemas/apiSchema'
import { api } from '@/scripts/api' import { api } from '@/scripts/api'
import { TaskItemImpl, useQueueStore } from '@/stores/queueStore' import { TaskItemImpl, useQueueStore } from '@/queue/stores/queueStore'
// Fixture factories // Fixture factories
const createTaskPrompt = ( const createTaskPrompt = (

View File

@@ -3,7 +3,7 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'
import type { ComfyApp } from '@/scripts/app' import type { ComfyApp } from '@/scripts/app'
import type { ComfyWorkflowJSON } from '@/platform/workflow/validation/schemas/workflowSchema' import type { ComfyWorkflowJSON } from '@/platform/workflow/validation/schemas/workflowSchema'
import { TaskItemImpl } from '@/stores/queueStore' import { TaskItemImpl } from '@/queue/stores/queueStore'
import * as getWorkflowModule from '@/platform/workflow/cloud' import * as getWorkflowModule from '@/platform/workflow/cloud'
vi.mock('@/platform/distribution/types', () => ({ vi.mock('@/platform/distribution/types', () => ({