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 { AutoQueueMode } from '../../src/stores/queueStore'
import type { AutoQueueMode } from '../../src/queue/stores/queueStore'
export class ComfyActionbar {
public readonly root: Locator

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -234,7 +234,7 @@ import { isCloud } from '@/platform/distribution/types'
import { useSettingStore } from '@/platform/settings/settingStore'
import { useCommandStore } from '@/stores/commandStore'
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 { cn } from '@/utils/tailwindUtil'

View File

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

View File

@@ -5,7 +5,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { createApp, nextTick } from 'vue'
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'

View File

@@ -45,7 +45,7 @@ import Galleria from 'primevue/galleria'
import { computed, onMounted, onUnmounted, ref, watch } from '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 ResultVideo from './ResultVideo.vue'

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
import type { Meta, StoryObj } from '@storybook/vue3-vite'
import Button from '@/components/ui/button/Button.vue'
import { iconForJobState } from '@/utils/queueDisplay'
import { iconForJobState } from '@/queue/utils/queueDisplay'
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 { AssetContext } from '@/platform/assets/schemas/mediaAssetSchema'
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

View File

@@ -1,12 +1,12 @@
import { createPinia, setActivePinia } from 'pinia'
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 { useMediaAssetGalleryStore } from './useMediaAssetGalleryStore'
vi.mock('@/stores/queueStore', () => ({
vi.mock('@/queue/stores/queueStore', () => ({
ResultItemImpl: vi
.fn<typeof ResultItemImpl>()
.mockImplementation(function (data) {

View File

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

View File

@@ -1,5 +1,5 @@
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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -47,7 +47,7 @@ import Popover from 'primevue/popover'
import { ref } from '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[] }>()

View File

@@ -2,7 +2,7 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite'
import type { TaskStatus } from '@/schemas/apiSchema'
import { useExecutionStore } from '@/stores/executionStore'
import { TaskItemImpl, useQueueStore } from '@/stores/queueStore'
import { TaskItemImpl, useQueueStore } from '@/queue/stores/queueStore'
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 { useDialogService } from '@/services/dialogService'
import { useExecutionStore } from '@/stores/executionStore'
import { useQueueStore } from '@/stores/queueStore'
import type { TaskItemImpl } from '@/stores/queueStore'
import { useQueueStore } from '@/queue/stores/queueStore'
import type { TaskItemImpl } from '@/queue/stores/queueStore'
import { formatClockTime } from '@/utils/dateTimeUtil'
import { jobStateFromTask } from '@/utils/queueUtil'
import { jobStateFromTask } from '@/queue/utils/queueUtil'
import { useJobErrorReporting } from './useJobErrorReporting'
import { formatElapsedTime, useQueueEstimates } from './useQueueEstimates'

View File

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

View File

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

View File

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

View File

@@ -2,7 +2,7 @@ import { computed } from 'vue'
import type { ComputedRef } from 'vue'
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>

View File

@@ -1,8 +1,8 @@
import { computed, ref } from 'vue'
import { describe, expect, it } from 'vitest'
import type { TaskItemImpl } from '@/stores/queueStore'
import type { JobState } from '@/types/queue'
import type { TaskItemImpl } from '@/queue/stores/queueStore'
import type { JobState } from '@/queue/types/queue'
import { formatElapsedTime, useQueueEstimates } 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 { useExecutionStore } from '@/stores/executionStore'
import type { TaskItemImpl, useQueueStore } from '@/stores/queueStore'
import type { JobState } from '@/types/queue'
import type { TaskItemImpl, useQueueStore } from '@/queue/stores/queueStore'
import type { JobState } from '@/queue/types/queue'
type QueueStore = ReturnType<typeof useQueueStore>
type ExecutionStore = ReturnType<typeof useExecutionStore>

View File

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

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
import { computed } from 'vue'
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 { st, t } from '@/i18n'
import { mapTaskOutputToAssetItem } from '@/platform/assets/composables/media/assetMappers'
@@ -19,8 +19,8 @@ import { downloadBlob } from '@/scripts/utils'
import { useDialogService } from '@/services/dialogService'
import { useLitegraphService } from '@/services/litegraphService'
import { useNodeDefStore } from '@/stores/nodeDefStore'
import { useQueueStore } from '@/stores/queueStore'
import type { ResultItemImpl, TaskItemImpl } from '@/stores/queueStore'
import { useQueueStore } from '@/queue/stores/queueStore'
import type { ResultItemImpl, TaskItemImpl } from '@/queue/stores/queueStore'
import { createAnnotatedPath } from '@/utils/createAnnotatedPath'
import { appendJsonExt } from '@/utils/formatUtil'

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
import type { TaskItemImpl } from '@/stores/queueStore'
import type { JobState } from '@/types/queue'
import type { TaskItemImpl } from '@/queue/stores/queueStore'
import type { JobState } from '@/queue/types/queue'
/**
* 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 { api } from '@/scripts/api'
import { useAssetsStore } from '@/stores/assetsStore'
import { useQueueStore } from '@/stores/queueStore'
import { useQueueStore } from '@/queue/stores/queueStore'
import type { SimplifiedWidget } from '@/types/simplifiedWidget'
import type { AssetKind } from '@/types/widgetTypes'
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 |
| nodeDefStore.ts | useNodeDefStore | Manages node definitions and schemas | 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 |
| serverConfigStore.ts | useServerConfigStore | Handles server configuration | 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 |
| workspaceStore.ts | useWorkspaceStore | Manages overall workspace state | Workspace |
Note: queue stores live in `src/queue/stores/queueStore.ts`.
### Workspace Stores
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 { api } from '@/scripts/api'
import { TaskItemImpl } from './queueStore'
import { TaskItemImpl } from '@/queue/stores/queueStore'
const INPUT_LIMIT = 100

View File

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

View File

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

View File

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

View File

@@ -58,7 +58,7 @@ import { useCanvasStore } from '@/renderer/core/canvas/canvasStore'
import type { StatusWsMessageStatus } from '@/schemas/apiSchema'
import { api } from '@/scripts/api'
import { app } from '@/scripts/app'
import { setupAutoQueueHandler } from '@/services/autoQueueService'
import { setupAutoQueueHandler } from '@/queue/services/autoQueueService'
import { useKeybindingService } from '@/services/keybindingService'
import { useAssetsStore } from '@/stores/assetsStore'
import { useCommandStore } from '@/stores/commandStore'
@@ -70,7 +70,7 @@ import { useNodeDefStore, useNodeFrequencyStore } from '@/stores/nodeDefStore'
import {
useQueuePendingTaskCountStore,
useQueueStore
} from '@/stores/queueStore'
} from '@/queue/stores/queueStore'
import { useServerConfigStore } from '@/stores/serverConfigStore'
import { useBottomPanelStore } from '@/stores/workspace/bottomPanelStore'
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 { useCommandStore } from '@/stores/commandStore'
import { useNodeOutputStore } from '@/stores/imagePreviewStore'
import { useQueueSettingsStore } from '@/stores/queueStore'
import { useQueueSettingsStore } from '@/queue/stores/queueStore'
import { isElectron } from '@/utils/envUtil'
const nodeOutputStore = useNodeOutputStore()

View File

@@ -2,8 +2,8 @@ import { mount } from '@vue/test-utils'
import { afterEach, describe, expect, it, vi } from 'vitest'
import { defineComponent, nextTick } from 'vue'
import JobGroupsList from '@/components/queue/job/JobGroupsList.vue'
import type { JobGroup, JobListItem } from '@/composables/queue/useJobList'
import JobGroupsList from '@/queue/components/job/JobGroupsList.vue'
import type { JobGroup, JobListItem } from '@/queue/composables/useJobList'
const QueueJobItemStub = defineComponent({
name: 'QueueJobItemStub',
@@ -22,7 +22,6 @@ const QueueJobItemStub = defineComponent({
runningNodeName: { type: String, default: undefined },
activeDetailsId: { type: String, default: null }
},
emits: ['cancel', 'delete', 'menu', 'view', 'details-enter', 'details-leave'],
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 { ExecutionErrorWsMessage } from '@/schemas/apiSchema'
import type { TaskItemImpl } from '@/stores/queueStore'
import type { TaskItemImpl } from '@/queue/stores/queueStore'
import type {
JobErrorDialogService,
UseJobErrorReportingOptions
} from '@/components/queue/job/useJobErrorReporting'
import * as jobErrorReporting from '@/components/queue/job/useJobErrorReporting'
} from '@/queue/components/job/useJobErrorReporting'
import * as jobErrorReporting from '@/queue/components/job/useJobErrorReporting'
const createExecutionErrorMessage = (
overrides: Partial<ExecutionErrorWsMessage> = {}

View File

@@ -1,9 +1,9 @@
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { nextTick, reactive } from 'vue'
import { useCompletionSummary } from '@/composables/queue/useCompletionSummary'
import { useCompletionSummary } from '@/queue/composables/useCompletionSummary'
import { useExecutionStore } from '@/stores/executionStore'
import { useQueueStore } from '@/stores/queueStore'
import { useQueueStore } from '@/queue/stores/queueStore'
type MockTask = {
displayStatus: 'Completed' | 'Failed' | 'Cancelled' | 'Running' | 'Pending'
@@ -14,7 +14,7 @@ type MockTask = {
}
}
vi.mock('@/stores/queueStore', () => {
vi.mock('@/queue/stores/queueStore', () => {
const state = reactive({
runningTasks: [] 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 type { Ref } from 'vue'
import { useJobList } from '@/composables/queue/useJobList'
import type { JobState } from '@/types/queue'
import { buildJobDisplay } from '@/utils/queueDisplay'
import type { BuildJobDisplayCtx } from '@/utils/queueDisplay'
import type { TaskItemImpl } from '@/stores/queueStore'
import { useJobList } from '@/queue/composables/useJobList'
import type { JobState } from '@/queue/types/queue'
import { buildJobDisplay } from '@/queue/utils/queueDisplay'
import type { BuildJobDisplayCtx } from '@/queue/utils/queueDisplay'
import type { TaskItemImpl } from '@/queue/stores/queueStore'
type TestTask = {
promptId: string
@@ -57,7 +57,7 @@ const ensureProgressRefs = () => {
if (!currentNodePercent) currentNodePercent = ref(0) as Ref<number>
return { totalPercent, currentNodePercent }
}
vi.mock('@/composables/queue/useQueueProgress', () => ({
vi.mock('@/queue/composables/useQueueProgress', () => ({
useQueueProgress: () => {
ensureProgressRefs()
return {
@@ -67,7 +67,7 @@ vi.mock('@/composables/queue/useQueueProgress', () => ({
}
}))
vi.mock('@/utils/queueDisplay', () => ({
vi.mock('@/queue/utils/queueDisplay', () => ({
buildJobDisplay: vi.fn(
(task: TaskItemImpl, state: JobState, options: BuildJobDisplayCtx) => ({
primary: `Job ${task.promptId}`,
@@ -80,7 +80,7 @@ vi.mock('@/utils/queueDisplay', () => ({
)
}))
vi.mock('@/utils/queueUtil', () => ({
vi.mock('@/queue/utils/queueUtil', () => ({
jobStateFromTask: vi.fn(
(task: TestTask, isInitializing?: boolean): JobState =>
task.mockState ?? (isInitializing ? 'running' : 'completed')
@@ -102,7 +102,7 @@ const ensureQueueStore = () => {
}
return queueStoreMock
}
vi.mock('@/stores/queueStore', () => ({
vi.mock('@/queue/stores/queueStore', () => ({
useQueueStore: () => {
return ensureQueueStore()
}

View File

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

View File

@@ -4,7 +4,7 @@ import { nextTick, ref } from 'vue'
import type { Ref } from 'vue'
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'
type ProgressValue = number | null

View File

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

View File

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

View File

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

View File

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

View File

@@ -3,7 +3,7 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'
import type { ComfyApp } from '@/scripts/app'
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'
vi.mock('@/platform/distribution/types', () => ({