From a41b8a6d4f62f31ec70ad201b685671942117049 Mon Sep 17 00:00:00 2001 From: Jin Yi Date: Fri, 19 Sep 2025 03:45:07 +0900 Subject: [PATCH] refactor: Change manager flag from --disable-manager to --enable-manager (#5635) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Updated frontend to align with backend changes in ComfyUI core PR #7555 - Changed manager startup argument from `--disable-manager` (opt-out) to `--enable-manager` (opt-in) - Manager is now disabled by default unless explicitly enabled ## Changes - Modified `useManagerState.ts` to check for `--enable-manager` flag presence - Inverted logic: manager is disabled when the flag is NOT present - Updated all related tests to reflect the new opt-in behavior - Fixed edge case where `systemStats` is null ## Related - Backend PR: https://github.com/comfyanonymous/ComfyUI/pull/7555 ## Test Plan - [x] All unit tests pass - [x] Verified manager state logic with different flag combinations - [x] TypeScript type checking passes - [x] Linting passes 🤖 Generated with [Claude Code](https://claude.ai/code) ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5635-refactor-Change-manager-flag-from-disable-manager-to-enable-manager-2726d73d36508153a88bd9f152132b2a) by [Unito](https://www.unito.io) --- src/composables/useManagerState.ts | 7 ++- .../tests/composables/useManagerState.test.ts | 63 ++++++++++++++----- 2 files changed, 54 insertions(+), 16 deletions(-) diff --git a/src/composables/useManagerState.ts b/src/composables/useManagerState.ts index 10a7f4819..56d7e7233 100644 --- a/src/composables/useManagerState.ts +++ b/src/composables/useManagerState.ts @@ -42,7 +42,12 @@ export function useManagerState() { ) // Check command line args first (highest priority) - if (systemStats.value?.system?.argv?.includes('--disable-manager')) { + // --enable-manager flag enables the manager (opposite of old --disable-manager) + const hasEnableManager = + systemStats.value?.system?.argv?.includes('--enable-manager') + + // If --enable-manager is NOT present, manager is disabled + if (!hasEnableManager) { return ManagerUIState.DISABLED } diff --git a/tests-ui/tests/composables/useManagerState.test.ts b/tests-ui/tests/composables/useManagerState.test.ts index dafb48a6f..a870a408b 100644 --- a/tests-ui/tests/composables/useManagerState.test.ts +++ b/tests-ui/tests/composables/useManagerState.test.ts @@ -56,10 +56,10 @@ describe('useManagerState', () => { }) describe('managerUIState property', () => { - it('should return DISABLED state when --disable-manager is present', () => { + it('should return DISABLED state when --enable-manager is NOT present', () => { vi.mocked(useSystemStatsStore).mockReturnValue({ systemStats: ref({ - system: { argv: ['python', 'main.py', '--disable-manager'] } + system: { argv: ['python', 'main.py'] } // No --enable-manager flag }), isInitialized: ref(true) } as any) @@ -76,7 +76,14 @@ describe('useManagerState', () => { it('should return LEGACY_UI state when --enable-manager-legacy-ui is present', () => { vi.mocked(useSystemStatsStore).mockReturnValue({ systemStats: ref({ - system: { argv: ['python', 'main.py', '--enable-manager-legacy-ui'] } + system: { + argv: [ + 'python', + 'main.py', + '--enable-manager', + '--enable-manager-legacy-ui' + ] + } // Both flags needed }), isInitialized: ref(true) } as any) @@ -92,7 +99,9 @@ describe('useManagerState', () => { it('should return NEW_UI state when client and server both support v4', () => { vi.mocked(useSystemStatsStore).mockReturnValue({ - systemStats: ref({ system: { argv: ['python', 'main.py'] } }), + systemStats: ref({ + system: { argv: ['python', 'main.py', '--enable-manager'] } + }), // Need --enable-manager isInitialized: ref(true) } as any) vi.mocked(api.getClientFeatureFlags).mockReturnValue({ @@ -114,7 +123,9 @@ describe('useManagerState', () => { it('should return LEGACY_UI state when server supports v4 but client does not', () => { vi.mocked(useSystemStatsStore).mockReturnValue({ - systemStats: ref({ system: { argv: ['python', 'main.py'] } }), + systemStats: ref({ + system: { argv: ['python', 'main.py', '--enable-manager'] } + }), // Need --enable-manager isInitialized: ref(true) } as any) vi.mocked(api.getClientFeatureFlags).mockReturnValue({ @@ -136,7 +147,9 @@ describe('useManagerState', () => { it('should return LEGACY_UI state when legacy manager extension exists', () => { vi.mocked(useSystemStatsStore).mockReturnValue({ - systemStats: ref({ system: { argv: ['python', 'main.py'] } }), + systemStats: ref({ + system: { argv: ['python', 'main.py', '--enable-manager'] } + }), // Need --enable-manager isInitialized: ref(true) } as any) vi.mocked(api.getClientFeatureFlags).mockReturnValue({}) @@ -155,7 +168,9 @@ describe('useManagerState', () => { it('should return NEW_UI state when server feature flags are undefined', () => { vi.mocked(useSystemStatsStore).mockReturnValue({ - systemStats: ref({ system: { argv: ['python', 'main.py'] } }), + systemStats: ref({ + system: { argv: ['python', 'main.py', '--enable-manager'] } + }), // Need --enable-manager isInitialized: ref(true) } as any) vi.mocked(api.getClientFeatureFlags).mockReturnValue({}) @@ -175,7 +190,9 @@ describe('useManagerState', () => { it('should return LEGACY_UI state when server does not support v4', () => { vi.mocked(useSystemStatsStore).mockReturnValue({ - systemStats: ref({ system: { argv: ['python', 'main.py'] } }), + systemStats: ref({ + system: { argv: ['python', 'main.py', '--enable-manager'] } + }), // Need --enable-manager isInitialized: ref(true) } as any) vi.mocked(api.getClientFeatureFlags).mockReturnValue({}) @@ -212,14 +229,17 @@ describe('useManagerState', () => { const managerState = useManagerState() - expect(managerState.managerUIState.value).toBe(ManagerUIState.NEW_UI) + // When systemStats is null, we can't check for --enable-manager flag, so manager is disabled + expect(managerState.managerUIState.value).toBe(ManagerUIState.DISABLED) }) }) describe('helper properties', () => { it('isManagerEnabled should return true when state is not DISABLED', () => { vi.mocked(useSystemStatsStore).mockReturnValue({ - systemStats: ref({ system: { argv: ['python', 'main.py'] } }), + systemStats: ref({ + system: { argv: ['python', 'main.py', '--enable-manager'] } + }), // Need --enable-manager isInitialized: ref(true) } as any) vi.mocked(api.getClientFeatureFlags).mockReturnValue({ @@ -237,7 +257,7 @@ describe('useManagerState', () => { it('isManagerEnabled should return false when state is DISABLED', () => { vi.mocked(useSystemStatsStore).mockReturnValue({ systemStats: ref({ - system: { argv: ['python', 'main.py', '--disable-manager'] } + system: { argv: ['python', 'main.py'] } // No --enable-manager flag means disabled }), isInitialized: ref(true) } as any) @@ -252,7 +272,9 @@ describe('useManagerState', () => { it('isNewManagerUI should return true when state is NEW_UI', () => { vi.mocked(useSystemStatsStore).mockReturnValue({ - systemStats: ref({ system: { argv: ['python', 'main.py'] } }), + systemStats: ref({ + system: { argv: ['python', 'main.py', '--enable-manager'] } + }), // Need --enable-manager isInitialized: ref(true) } as any) vi.mocked(api.getClientFeatureFlags).mockReturnValue({ @@ -270,7 +292,14 @@ describe('useManagerState', () => { it('isLegacyManagerUI should return true when state is LEGACY_UI', () => { vi.mocked(useSystemStatsStore).mockReturnValue({ systemStats: ref({ - system: { argv: ['python', 'main.py', '--enable-manager-legacy-ui'] } + system: { + argv: [ + 'python', + 'main.py', + '--enable-manager', + '--enable-manager-legacy-ui' + ] + } // Both flags needed }), isInitialized: ref(true) } as any) @@ -285,7 +314,9 @@ describe('useManagerState', () => { it('shouldShowInstallButton should return true only for NEW_UI', () => { vi.mocked(useSystemStatsStore).mockReturnValue({ - systemStats: ref({ system: { argv: ['python', 'main.py'] } }), + systemStats: ref({ + system: { argv: ['python', 'main.py', '--enable-manager'] } + }), // Need --enable-manager isInitialized: ref(true) } as any) vi.mocked(api.getClientFeatureFlags).mockReturnValue({ @@ -302,7 +333,9 @@ describe('useManagerState', () => { it('shouldShowManagerButtons should return true when not DISABLED', () => { vi.mocked(useSystemStatsStore).mockReturnValue({ - systemStats: ref({ system: { argv: ['python', 'main.py'] } }), + systemStats: ref({ + system: { argv: ['python', 'main.py', '--enable-manager'] } + }), // Need --enable-manager isInitialized: ref(true) } as any) vi.mocked(api.getClientFeatureFlags).mockReturnValue({