From 42837e44b80f1d97b0d0ca908c8e587b6dbfd2f5 Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Mon, 18 Nov 2024 23:08:09 -0500 Subject: [PATCH] Write comfy desktop install options to settings (#290) --- src/config/comfyConfigManager.ts | 20 -------------------- src/config/comfySettings.ts | 7 ++++++- src/main-process/comfyDesktopApp.ts | 15 ++++++++++++++- tests/unit/comfyConfigManager.test.ts | 11 ----------- 4 files changed, 20 insertions(+), 33 deletions(-) diff --git a/src/config/comfyConfigManager.ts b/src/config/comfyConfigManager.ts index 64753690..118b058a 100644 --- a/src/config/comfyConfigManager.ts +++ b/src/config/comfyConfigManager.ts @@ -47,31 +47,11 @@ export class ComfyConfigManager { ], ]; - private static readonly DEFAULT_CONFIG = { - 'Comfy.ColorPalette': 'dark', - 'Comfy.UseNewMenu': 'Top', - 'Comfy.Workflow.WorkflowTabsPosition': 'Topbar', - 'Comfy.Workflow.ShowMissingModelsWarning': true, - }; - public static setUpComfyUI(localComfyDirectory: string) { if (fs.existsSync(localComfyDirectory)) { throw new Error(`Selected directory ${localComfyDirectory} already exists`); } this.createComfyDirectories(localComfyDirectory); - const userSettingsPath = path.join(localComfyDirectory, 'user', 'default'); - this.createComfyConfigFile(userSettingsPath); - } - - public static createComfyConfigFile(userSettingsPath: string): void { - const configFilePath = path.join(userSettingsPath, 'comfy.settings.json'); - - try { - fs.writeFileSync(configFilePath, JSON.stringify(this.DEFAULT_CONFIG, null, 2)); - log.info(`Created new ComfyUI config file at: ${configFilePath}`); - } catch (error) { - log.error(`Failed to create new ComfyUI config file: ${error}`); - } } public static isComfyUIDirectory(directory: string): boolean { diff --git a/src/config/comfySettings.ts b/src/config/comfySettings.ts index ed4ba295..a96e16f1 100644 --- a/src/config/comfySettings.ts +++ b/src/config/comfySettings.ts @@ -2,14 +2,19 @@ import * as fs from 'fs'; import * as path from 'path'; import log from 'electron-log/main'; -const DEFAULT_SETTINGS: ComfySettingsData = { +export const DEFAULT_SETTINGS: ComfySettingsData = { 'Comfy-Desktop.AutoUpdate': true, 'Comfy-Desktop.SendStatistics': true, + 'Comfy.ColorPalette': 'dark', + 'Comfy.UseNewMenu': 'Top', + 'Comfy.Workflow.WorkflowTabsPosition': 'Topbar', + 'Comfy.Workflow.ShowMissingModelsWarning': true, } as const; export interface ComfySettingsData { 'Comfy-Desktop.AutoUpdate': boolean; 'Comfy-Desktop.SendStatistics': boolean; + [key: string]: unknown; } /** diff --git a/src/main-process/comfyDesktopApp.ts b/src/main-process/comfyDesktopApp.ts index e5619b58..67dcac6d 100644 --- a/src/main-process/comfyDesktopApp.ts +++ b/src/main-process/comfyDesktopApp.ts @@ -4,7 +4,7 @@ import * as Sentry from '@sentry/electron/main'; import { graphics } from 'systeminformation'; import todesktop from '@todesktop/runtime'; import { IPC_CHANNELS, ProgressStatus, ServerArgs } from '../constants'; -import { ComfySettings } from '../config/comfySettings'; +import { ComfySettings, DEFAULT_SETTINGS } from '../config/comfySettings'; import { AppWindow } from './appWindow'; import { ComfyServer } from './comfyServer'; import { ComfyServerConfig } from '../config/comfyServerConfig'; @@ -117,8 +117,21 @@ export class ComfyDesktopApp { const migrationItemIds = new Set(installOptions.migrationItemIds ?? []); const basePath = path.join(installOptions.installPath, 'ComfyUI'); + // Setup folder structures. ComfyConfigManager.setUpComfyUI(basePath); + // Setup comfy.settings.json file + const settings = { + ...DEFAULT_SETTINGS, + 'Comfy-Desktop.AutoUpdate': installOptions.autoUpdate, + 'Comfy-Desktop.SendStatistics': installOptions.allowMetrics, + }; + const settingsJson = JSON.stringify(settings, null, 2); + const settingsPath = path.join(basePath, 'user', 'default', 'comfy.settings.json'); + fs.writeFileSync(settingsPath, settingsJson); + log.info(`Wrote settings to ${settingsPath}: ${settingsJson}`); + + // Setup extra_model_paths.yaml file const { comfyui: comfyuiConfig, ...extraConfigs } = await ComfyServerConfig.getMigrationConfig( migrationSource, migrationItemIds diff --git a/tests/unit/comfyConfigManager.test.ts b/tests/unit/comfyConfigManager.test.ts index b5bdb5fc..e547b946 100644 --- a/tests/unit/comfyConfigManager.test.ts +++ b/tests/unit/comfyConfigManager.test.ts @@ -85,17 +85,6 @@ describe('ComfyConfigManager', () => { }); }); - describe('createComfyConfigFile', () => { - it('should create new config file when none exists', () => { - (fs.existsSync as jest.Mock).mockReturnValue(false); - - ComfyConfigManager.createComfyConfigFile('/fake/path'); - - expect(fs.writeFileSync).toHaveBeenCalledTimes(1); - expect(fs.renameSync).not.toHaveBeenCalled(); - }); - }); - describe('createNestedDirectories', () => { it('should create nested directory structure correctly', () => { (fs.existsSync as jest.Mock).mockReturnValue(false);