Improve install path validation and i18n (#2042)

Co-authored-by: huchenlei <huchenlei@proton.me>
Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
filtered
2024-12-25 06:36:32 +11:00
committed by GitHub
parent 467b35f98d
commit 006d544ac5
8 changed files with 54 additions and 11 deletions

8
package-lock.json generated
View File

@@ -10,7 +10,7 @@
"license": "GPL-3.0-only",
"dependencies": {
"@atlaskit/pragmatic-drag-and-drop": "^1.3.1",
"@comfyorg/comfyui-electron-types": "^0.3.34",
"@comfyorg/comfyui-electron-types": "^0.4.3",
"@comfyorg/litegraph": "^0.8.48",
"@primevue/themes": "^4.0.5",
"@vueuse/core": "^11.0.0",
@@ -1951,9 +1951,9 @@
"dev": true
},
"node_modules/@comfyorg/comfyui-electron-types": {
"version": "0.3.34",
"resolved": "https://registry.npmjs.org/@comfyorg/comfyui-electron-types/-/comfyui-electron-types-0.3.34.tgz",
"integrity": "sha512-l4+llMrUh/nUxuBC1A1Zicu6EAZ74pDJPm14zQpyLleNeyj71FKIkgX/hIpbCegv5CwRgYXEdEN8FqTTKugf/A==",
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@comfyorg/comfyui-electron-types/-/comfyui-electron-types-0.4.3.tgz",
"integrity": "sha512-hSM3mchpsYN0e7oZ7XLWjEvFDvE1rgzaB9YkCeqIiZYZgLL78T79ssM0n5ra17Zv7Mqwl6ErZblXvbQE/36RPw==",
"license": "GPL-3.0-only"
},
"node_modules/@comfyorg/litegraph": {

View File

@@ -82,7 +82,7 @@
},
"dependencies": {
"@atlaskit/pragmatic-drag-and-drop": "^1.3.1",
"@comfyorg/comfyui-electron-types": "^0.3.34",
"@comfyorg/comfyui-electron-types": "^0.4.3",
"@comfyorg/litegraph": "^0.8.48",
"@primevue/themes": "^4.0.5",
"@vueuse/core": "^11.0.0",

View File

@@ -26,9 +26,12 @@
<Button icon="pi pi-folder" @click="browsePath" class="w-12" />
</div>
<Message v-if="pathError" severity="error">
<Message v-if="pathError" severity="error" class="whitespace-pre-line">
{{ pathError }}
</Message>
<Message v-if="pathExists" severity="warn">
{{ $t('install.pathExists') }}
</Message>
</div>
<!-- System Paths Info -->
@@ -74,6 +77,7 @@ const { t } = useI18n()
const installPath = defineModel<string>('installPath', { required: true })
const pathError = defineModel<string>('pathError', { required: true })
const pathExists = ref(false)
const appData = ref('')
const appPath = ref('')
@@ -92,11 +96,25 @@ onMounted(async () => {
const validatePath = async (path: string) => {
try {
pathError.value = ''
pathExists.value = false
const validation = await electron.validateInstallPath(path)
// Create a pre-formatted list of errors
if (!validation.isValid) {
pathError.value = validation.error
const errors: string[] = []
if (validation.cannotWrite) errors.push(t('install.cannotWrite'))
if (validation.freeSpace < validation.requiredSpace) {
const requiredGB = validation.requiredSpace / 1024 / 1024 / 1024
errors.push(`${t('install.insufficientFreeSpace')}: ${requiredGB} GB`)
}
if (validation.parentMissing) errors.push(t('install.parentMissing'))
if (validation.error)
errors.push(`${t('install.unhandledError')}: ${validation.error}`)
pathError.value = errors.join('\n')
}
// Display the path exists warning
if (validation.exists) pathExists.value = true
} catch (error) {
pathError.value = t('install.pathValidationFailed')
}

View File

@@ -128,6 +128,11 @@
"systemLocations": "System Locations",
"failedToSelectDirectory": "Failed to select directory",
"pathValidationFailed": "Failed to validate path",
"pathExists": "Directory already exists - please ensure you have backed up all data",
"cannotWrite": "Unable to write to the selected path",
"insufficientFreeSpace": "Insufficient space - minimum free space",
"parentMissing": "Path does not exist - create the containing directory first",
"unhandledError": "Unknown error",
"installLocationDescription": "Select the directory for ComfyUI's user data. A python environment will be installed to the selected location. Please make sure the selected disk has enough space (~15GB) left.",
"installLocationTooltip": "ComfyUI's user data directory. Stores:\n- Python Environment\n- Models\n- Custom nodes\n",
"appDataLocationTooltip": "ComfyUI's app data directory. Stores:\n- Logs\n- Server configs",

View File

@@ -159,6 +159,7 @@
"install": {
"appDataLocationTooltip": "ComfyUIのアプリデータディレクトリ。保存内容:\n- ログ\n- サーバー設定",
"appPathLocationTooltip": "ComfyUIのアプリ資産ディレクトリ。ComfyUIのコードとアセットを保存します",
"cannotWrite": "選択したパスに書き込むことができません",
"chooseInstallationLocation": "インストール先を選択",
"customNodes": "カスタムノード",
"customNodesDescription": "既存のComfyUIインストールからカスタムードを再インストールします。",
@@ -185,6 +186,7 @@
"installLocation": "インストール先",
"installLocationDescription": "ComfyUIのユーザーデータを保存するディレクトリを選択してください。Python環境が選択した場所にインストールされます。選択したディスクに約15GBの空き容量が必要です。",
"installLocationTooltip": "ComfyUIのユーザーデータディレクトリ。保存内容:\n- Python環境\n- モデル\n- カスタムノード\n",
"insufficientFreeSpace": "空き容量が不足しています - 最低限の空き容量",
"manualConfiguration": {
"createVenv": "次のディレクトリに仮想環境を作成する必要があります",
"requirements": "要件",
@@ -196,6 +198,8 @@
"migration": "移行",
"migrationOptional": "移行は任意です。既存のインストールがない場合、このステップをスキップできます。",
"migrationSourcePathDescription": "既存のComfyUIインストールがある場合、既存のユーザーファイルやモデルを新しいインストールにコピー/リンクできます。",
"parentMissing": "パスが存在しません - 最初に含まれるディレクトリを作成してください",
"pathExists": "ディレクトリはすでに存在します - すべてのデータをバックアップしたことを確認してください",
"pathValidationFailed": "パスの検証に失敗しました",
"selectItemsToMigrate": "移行する項目を選択",
"settings": {
@@ -217,7 +221,8 @@
},
"learnMoreAboutData": "データ収集の詳細を見る"
},
"systemLocations": "システムの場所"
"systemLocations": "システムの場所",
"unhandledError": "未知のエラー"
},
"menu": {
"autoQueue": "自動キュー",

View File

@@ -159,6 +159,7 @@
"install": {
"appDataLocationTooltip": "ComfyUI의 앱 데이터 디렉토리. 저장소:\n- 로그\n- 서버 구성",
"appPathLocationTooltip": "ComfyUI의 앱 에셋 디렉토리. ComfyUI 코드 및 에셋을 저장합니다.",
"cannotWrite": "선택한 경로에 쓸 수 없습니다",
"chooseInstallationLocation": "설치 위치 선택",
"customNodes": "사용자 정의 노드",
"customNodesDescription": "기존 ComfyUI 설치에서 사용자 정의 노드를 다시 설치합니다.",
@@ -185,6 +186,7 @@
"installLocation": "설치 위치",
"installLocationDescription": "ComfyUI의 사용자 데이터 디렉토리를 선택하십시오. 선택한 위치에 Python 환경이 설치됩니다. 선택한 디스크에 충분한 공간(~15GB)이 남아 있는지 확인하십시오.",
"installLocationTooltip": "ComfyUI의 사용자 데이터 디렉토리. 저장소:\n- Python 환경\n- 모델\n- 사용자 정의 노드\n",
"insufficientFreeSpace": "공간이 부족합니다 - 최소한의 여유 공간",
"manualConfiguration": {
"createVenv": "다음 디렉토리에 가상 환경을 생성해야 합니다",
"requirements": "요구 사항",
@@ -196,6 +198,8 @@
"migration": "마이그레이션",
"migrationOptional": "마이그레이션은 선택 사항입니다. 기존에 설치된 것이 없다면, 이 단계를 건너뛸 수 있습니다.",
"migrationSourcePathDescription": "기존에 설치된 ComfyUI가 있는 경우, 기존 사용자 파일과 모델을 새 설치에 복사하거나 링크할 수 있습니다",
"parentMissing": "경로가 존재하지 않습니다 - 먼저 포함하는 디렉토리를 생성하세요",
"pathExists": "디렉토리가 이미 존재합니다 - 모든 데이터를 백업했는지 확인해 주세요",
"pathValidationFailed": "경로 유효성 검사 실패",
"selectItemsToMigrate": "마이그레이션 항목 선택",
"settings": {
@@ -217,7 +221,8 @@
},
"learnMoreAboutData": "데이터 수집에 대해 더 알아보기"
},
"systemLocations": "시스템 위치"
"systemLocations": "시스템 위치",
"unhandledError": "알 수 없는 오류"
},
"menu": {
"autoQueue": "자동 큐",

View File

@@ -159,6 +159,7 @@
"install": {
"appDataLocationTooltip": "Директория данных приложения ComfyUI. Хранит:\n- Логи\n- Конфигурации сервера",
"appPathLocationTooltip": "Директория активов приложения ComfyUI. Хранит код и активы ComfyUI",
"cannotWrite": "Невозможно записать в выбранный путь",
"chooseInstallationLocation": "Выберите место установки",
"customNodes": "Пользовательские узлы",
"customNodesDescription": "Переустановите пользовательские узлы из существующих установок ComfyUI.",
@@ -185,6 +186,7 @@
"installLocation": "Место установки",
"installLocationDescription": "Выберите директорию для пользовательских данных ComfyUI. В выбранном месте будет установлена среда Python. Пожалуйста, убедитесь, что на выбранном диске достаточно места (~15 ГБ).",
"installLocationTooltip": "Директория пользовательских данных ComfyUI. Хранит:\n- Среда Python\n- Модели\n- Пользовательские узлы\n",
"insufficientFreeSpace": "Недостаточно места - минимально необходимое свободное место",
"manualConfiguration": {
"createVenv": "Вам потребуется создать виртуальное окружение в следующем каталоге",
"requirements": "Требования",
@@ -196,6 +198,8 @@
"migration": "Миграция",
"migrationOptional": "Миграция является необязательной. Если у вас нет существующей установки, вы можете пропустить этот шаг.",
"migrationSourcePathDescription": "Если у вас есть существующая установка ComfyUI, мы можем скопировать/связать ваши существующие пользовательские файлы и модели в новую установку.",
"parentMissing": "Путь не существует - сначала создайте родительский каталог",
"pathExists": "Директория уже существует - пожалуйста, убедитесь, что вы сделали резервное копирование всех данных",
"pathValidationFailed": "Не удалось проверить путь",
"selectItemsToMigrate": "Выберите элементы для миграции",
"settings": {
@@ -217,7 +221,8 @@
},
"learnMoreAboutData": "Узнать больше о сборе данных"
},
"systemLocations": "Системные места"
"systemLocations": "Системные места",
"unhandledError": "Неизвестная ошибка"
},
"menu": {
"autoQueue": "Автоочередь",

View File

@@ -159,6 +159,7 @@
"install": {
"appDataLocationTooltip": "ComfyUI 的应用数据目录。存储:\n- 日志\n- 服务器配置",
"appPathLocationTooltip": "ComfyUI 的应用资产目录。存储 ComfyUI 代码和资产",
"cannotWrite": "无法写入所选路径",
"chooseInstallationLocation": "选择安装位置",
"customNodes": "自定义节点",
"customNodesDescription": "从现有的ComfyUI安装中重新安装自定义节点。",
@@ -185,6 +186,7 @@
"installLocation": "安装位置",
"installLocationDescription": "选择 ComfyUI 用户数据的目录。将安装一个 Python 环境到所选位置。请确保所选磁盘有足够的空间(约 15GB。",
"installLocationTooltip": "ComfyUI 的用户数据目录。存储:\n- Python 环境\n- 模型\n- 自定义节点\n",
"insufficientFreeSpace": "空间不足 - 最小可用空间",
"manualConfiguration": {
"createVenv": "您需要在以下目录中创建虚拟环境",
"requirements": "需求",
@@ -196,6 +198,8 @@
"migration": "迁移",
"migrationOptional": "迁移是可选的。如果您没有现有安装,可以跳过此步骤。",
"migrationSourcePathDescription": "如果您有现有的 ComfyUI 安装,我们可以将您的现有用户文件和模型复制/链接到新安装。",
"parentMissing": "路径不存在 - 首先创建包含目录",
"pathExists": "目录已存在 - 请确保您已备份所有数据",
"pathValidationFailed": "路径验证失败",
"selectItemsToMigrate": "选择要迁移的项目",
"settings": {
@@ -217,7 +221,8 @@
},
"learnMoreAboutData": "了解更多关于数据收集的信息"
},
"systemLocations": "系统位置"
"systemLocations": "系统位置",
"unhandledError": "未知错误"
},
"menu": {
"autoQueue": "自动执行",