Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
b59ad87
migrate manager menu items
christian-byrne Apr 9, 2025
37a5add
Update locales [skip ci]
invalid-email-address Apr 9, 2025
2fc6ae0
switch to v2 manager API endpoints
christian-byrne Apr 9, 2025
aeb948a
re-arrange menu items
christian-byrne Apr 11, 2025
799f13a
await promises. update settings schema
christian-byrne Apr 14, 2025
0f282cc
move legacy option to startup arg
christian-byrne Apr 14, 2025
5733156
Add banner indicating how to use legacy manager UI
christian-byrne Apr 14, 2025
b4e4f45
Update locales [skip ci]
invalid-email-address Apr 14, 2025
3f598e4
add "Check for Updates", "Install Missing" menu items
christian-byrne Apr 14, 2025
f5744d2
Update locales [skip ci]
invalid-email-address Apr 14, 2025
becf55d
use correct response shape
christian-byrne Apr 14, 2025
40bdc9f
improve command names
christian-byrne Apr 14, 2025
450c3b0
dont show missing nodes button in legacy manager mode
christian-byrne Apr 15, 2025
62a33a6
[Update to v2 API] update WS done message
christian-byrne Apr 15, 2025
a29019f
Update locales [skip ci]
invalid-email-address Jul 19, 2025
84d6352
[fix] Fix json syntax error from rebase (#4607)
christian-byrne Jul 30, 2025
2827e78
Fix errors from rebase (removed `Tag` component import and duplicated…
christian-byrne Jul 30, 2025
2a8c474
Update locales [skip ci]
invalid-email-address Jul 30, 2025
2cf4dab
[Manager] "Restarting" state after clicking restart button (#4637)
viva-jinyi Aug 1, 2025
424f6de
[feat] Add reactive feature flags foundation (#4817)
christian-byrne Aug 7, 2025
08f25dd
[feat] Add v2/ prefix to manager service base URL (#4872)
christian-byrne Aug 9, 2025
574a1db
[cleanup] Remove unused manager route enums (#4875)
christian-byrne Aug 9, 2025
f82c4ce
[feat] Add manager capability feature flags
christian-byrne Aug 18, 2025
a257cd5
[feat] Add managerStateStore for three-state manager UI logic
christian-byrne Aug 18, 2025
6bf9fa6
[feat] Address PR review comments for managerStateStore
christian-byrne Aug 18, 2025
5fd1d17
[fix] Remove unnecessary @types/lodash dependency
christian-byrne Aug 21, 2025
08a11d0
[fix] Replace lodash import with es-toolkit/compat in api.ts
christian-byrne Aug 25, 2025
f18c70b
[feat] Apply manager state handling to all entry points
christian-byrne Aug 25, 2025
7e76637
[cleanup] Remove unnecessary comments and files
christian-byrne Aug 25, 2025
ceb54bb
[fix] Fix API URL prefix slash and add error handling
christian-byrne Sep 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[Update to v2 API] update WS done message
  • Loading branch information
christian-byrne committed Aug 17, 2025
commit 62a33a661fc55fea1db555610a97b0590858b127
2 changes: 1 addition & 1 deletion src/types/comfyManagerTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export const IsInstallingKey: InjectionKey<Ref<boolean>> =
Symbol('isInstalling')

export enum ManagerWsQueueStatus {
DONE = 'done',
DONE = 'all-done',
IN_PROGRESS = 'in_progress'
}

Expand Down
42 changes: 21 additions & 21 deletions tests-ui/tests/composables/widgets/useManagerQueue.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ describe('useManagerQueue', () => {
const getEventListenerCallback = () =>
vi.mocked(api.addEventListener).mock.calls[0][1]

const simulateServerStatus = async (status: 'done' | 'in_progress') => {
const simulateServerStatus = async (status: 'all-done' | 'in_progress') => {
const event = new CustomEvent('cm-queue-status', {
detail: { status }
})
Expand All @@ -49,7 +49,7 @@ describe('useManagerQueue', () => {
const queue = useManagerQueue()

expect(queue.queueLength.value).toBe(0)
expect(queue.statusMessage.value).toBe('done')
expect(queue.statusMessage.value).toBe('all-done')
expect(queue.allTasksDone.value).toBe(true)
})
})
Expand Down Expand Up @@ -104,7 +104,7 @@ describe('useManagerQueue', () => {
await nextTick()

// Should maintain the default status
expect(queue.statusMessage.value).toBe('done')
expect(queue.statusMessage.value).toBe('all-done')
})

it('should handle missing status property gracefully', async () => {
Expand All @@ -119,15 +119,15 @@ describe('useManagerQueue', () => {
await nextTick()

// Should maintain the default status
expect(queue.statusMessage.value).toBe('done')
expect(queue.statusMessage.value).toBe('all-done')
})
})

describe('task execution', () => {
it('should start the next task when server is idle and queue has items', async () => {
const { queue, mockTask } = createQueueWithMockTask()

await simulateServerStatus('done')
await simulateServerStatus('all-done')

// Task should have been started
expect(mockTask.task).toHaveBeenCalled()
Expand All @@ -138,7 +138,7 @@ describe('useManagerQueue', () => {
const { mockTask } = createQueueWithMockTask()

// Start the task
await simulateServerStatus('done')
await simulateServerStatus('all-done')
expect(mockTask.task).toHaveBeenCalled()

// Simulate task completion
Expand All @@ -148,7 +148,7 @@ describe('useManagerQueue', () => {
await simulateServerStatus('in_progress')
expect(mockTask.onComplete).not.toHaveBeenCalled()

await simulateServerStatus('done')
await simulateServerStatus('all-done')
expect(mockTask.onComplete).toHaveBeenCalled()
})

Expand All @@ -159,15 +159,15 @@ describe('useManagerQueue', () => {
queue.enqueueTask(mockTask)

// Start the task
await simulateServerStatus('done')
await simulateServerStatus('all-done')
expect(mockTask.task).toHaveBeenCalled()

// Simulate task completion
await mockTask.task.mock.results[0].value

// Simulate server cycle
await simulateServerStatus('in_progress')
await simulateServerStatus('done')
await simulateServerStatus('all-done')

// Should not throw errors even without onComplete
expect(queue.allTasksDone.value).toBe(true)
Expand All @@ -184,14 +184,14 @@ describe('useManagerQueue', () => {
expect(queue.queueLength.value).toBe(2)

// Process first task
await simulateServerStatus('done')
await simulateServerStatus('all-done')
expect(mockTask1.task).toHaveBeenCalled()
expect(queue.queueLength.value).toBe(1)

// Complete first task
await mockTask1.task.mock.results[0].value
await simulateServerStatus('in_progress')
await simulateServerStatus('done')
await simulateServerStatus('all-done')
expect(mockTask1.onComplete).toHaveBeenCalled()

// Process second task
Expand All @@ -201,7 +201,7 @@ describe('useManagerQueue', () => {
// Complete second task
await mockTask2.task.mock.results[0].value
await simulateServerStatus('in_progress')
await simulateServerStatus('done')
await simulateServerStatus('all-done')
expect(mockTask2.onComplete).toHaveBeenCalled()

// Queue should be empty and all tasks done
Expand All @@ -219,7 +219,7 @@ describe('useManagerQueue', () => {
queue.enqueueTask(mockTask)

// Start the task
await simulateServerStatus('done')
await simulateServerStatus('all-done')
expect(mockTask.task).toHaveBeenCalled()

// Let the promise rejection happen
Expand All @@ -231,7 +231,7 @@ describe('useManagerQueue', () => {

// Simulate server cycle
await simulateServerStatus('in_progress')
await simulateServerStatus('done')
await simulateServerStatus('all-done')

// onComplete should still be called for failed tasks
expect(mockTask.onComplete).toHaveBeenCalled()
Expand All @@ -252,7 +252,7 @@ describe('useManagerQueue', () => {
])

// Task 1
await simulateServerStatus('done')
await simulateServerStatus('all-done')
expect(mockTask1.task).toHaveBeenCalled()

// Verify state of onComplete callbacks
Expand All @@ -266,7 +266,7 @@ describe('useManagerQueue', () => {

// Task 2
await simulateServerStatus('in_progress')
await simulateServerStatus('done')
await simulateServerStatus('all-done')
expect(mockTask2.task).toHaveBeenCalled()

// Verify state of onComplete callbacks
Expand All @@ -279,7 +279,7 @@ describe('useManagerQueue', () => {

// Task 3
await simulateServerStatus('in_progress')
await simulateServerStatus('done')
await simulateServerStatus('all-done')

// Verify state of onComplete callbacks
expect(mockTask3.task).toHaveBeenCalled()
Expand All @@ -297,7 +297,7 @@ describe('useManagerQueue', () => {

// Add first task and start processing
queue.enqueueTask(mockTask1)
await simulateServerStatus('done')
await simulateServerStatus('all-done')
expect(mockTask1.task).toHaveBeenCalled()

// Add second task while first is processing
Expand All @@ -307,7 +307,7 @@ describe('useManagerQueue', () => {
// Complete first task
await mockTask1.task.mock.results[0].value
await simulateServerStatus('in_progress')
await simulateServerStatus('done')
await simulateServerStatus('all-done')

// Second task should now be processed
expect(mockTask2.task).toHaveBeenCalled()
Expand All @@ -318,9 +318,9 @@ describe('useManagerQueue', () => {

// Cycle server status without any tasks
await simulateServerStatus('in_progress')
await simulateServerStatus('done')
await simulateServerStatus('all-done')
await simulateServerStatus('in_progress')
await simulateServerStatus('done')
await simulateServerStatus('all-done')

// Should not cause any errors
expect(queue.allTasksDone.value).toBe(true)
Expand Down