From 89587395199a950158602ffa87e7ac9af1b44a8a Mon Sep 17 00:00:00 2001 From: Tohrusky <65994850+Tohrusky@users.noreply.github.com> Date: Mon, 16 Feb 2026 22:43:15 +0800 Subject: [PATCH 1/6] chore: user hint --- src/renderer/src/views/ZImageGenerate.vue | 36 ++++++++++++++--------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/src/renderer/src/views/ZImageGenerate.vue b/src/renderer/src/views/ZImageGenerate.vue index 2674bd0..5dd3b7a 100644 --- a/src/renderer/src/views/ZImageGenerate.vue +++ b/src/renderer/src/views/ZImageGenerate.vue @@ -60,11 +60,33 @@ const galleryRef = ref(null) const containerWidth = ref(1200) // Default start width let resizeObserver: ResizeObserver | null = null +// Validation +const canGenerate = computed(() => { + if (isGenerating.value) + return true // Allow stopping + return !!modelFolder.value && !!outputFolder.value +}) + +const validationMessage = computed(() => { + if (!modelFolder.value) + return t('validation.modelFolderRequired') + if (!outputFolder.value) + return t('validation.outputFolderRequired') + return '' +}) + // Lifecycle onMounted(async () => { await fetchModels() checkAllModels() // Check all zoo models status + // Initial validation check to guide user + if (validationMessage.value) { + message.warning(validationMessage.value, { duration: 5000 }) + // Optional: Auto-open settings if critical config missing? + // showSettings.value = true + } + // If we have a selected model, check it specifically (in case it's local custom) if (selectedModel.value && !availableModels.value.includes(selectedModel.value)) { checkModel(selectedModel.value) @@ -117,20 +139,6 @@ watch(logs, () => { }) // Actions -// Validation -const canGenerate = computed(() => { - if (isGenerating.value) - return true // Allow stopping - return !!modelFolder.value && !!outputFolder.value -}) - -const validationMessage = computed(() => { - if (!modelFolder.value) - return t('validation.modelFolderRequired') - if (!outputFolder.value) - return t('validation.outputFolderRequired') - return '' -}) function handleGenerate(): void { if (!prompt.value) From 3989989aa1ef1afddd16a86a38c4b90c674a72f3 Mon Sep 17 00:00:00 2001 From: Tohrusky <65994850+Tohrusky@users.noreply.github.com> Date: Mon, 16 Feb 2026 22:55:45 +0800 Subject: [PATCH 2/6] fix: download --- src/renderer/src/views/ZImageGenerate.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/renderer/src/views/ZImageGenerate.vue b/src/renderer/src/views/ZImageGenerate.vue index 5dd3b7a..0b3c67c 100644 --- a/src/renderer/src/views/ZImageGenerate.vue +++ b/src/renderer/src/views/ZImageGenerate.vue @@ -512,7 +512,7 @@ const gridStyle = computed(() => { > { align-items: center; margin-bottom: 8px; font-size: 13px; - color: rgba(255, 255, 255, 0.9); + color: #333; } .download-size { font-variant-numeric: tabular-nums; font-weight: 600; - color: white; + color: #000; } } From 2774fdf8f374fd87f179484473e9dee7df50fef8 Mon Sep 17 00:00:00 2001 From: Tohrusky <65994850+Tohrusky@users.noreply.github.com> Date: Mon, 16 Feb 2026 23:12:38 +0800 Subject: [PATCH 3/6] fastcheck hash --- src/renderer/src/store/zimageStore.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/renderer/src/store/zimageStore.ts b/src/renderer/src/store/zimageStore.ts index d0f326c..2f71663 100644 --- a/src/renderer/src/store/zimageStore.ts +++ b/src/renderer/src/store/zimageStore.ts @@ -1,7 +1,7 @@ import type { ZImageModelDownloadProgress, ZImageOptions } from '@shared/type/zimage' import { IpcChannelInvoke, IpcChannelOn, IpcChannelSend } from '@shared/const/ipc' import { defineStore } from 'pinia' -import { ref, watch } from 'vue' +import { nextTick, ref, watch } from 'vue' import i18n from '../plugins/i18n' const { ipcRenderer } = window.electron @@ -42,12 +42,12 @@ export const useZImageStore = defineStore( // Future models can be added here ]) - const checkModel = async (modelName = 'z-image-turbo'): Promise => { - console.log(`[Store] Checking model status for: ${modelName}`) + const checkModel = async (modelName = 'z-image-turbo', fastCheck = true): Promise => { + console.log(`[Store] Checking model status for: ${modelName} (Fast: ${fastCheck})`) try { // Pass modelFolder if available - const result = await ipcRenderer.invoke(IpcChannelInvoke.CHECK_MODEL_STATUS, modelName, false, modelFolder.value) + const result = await ipcRenderer.invoke(IpcChannelInvoke.CHECK_MODEL_STATUS, modelName, fastCheck, modelFolder.value) console.log(`[Store] Check result:`, result) modelStatus.value[modelName] = result From b9be92801ef242f876b3ac1b6b53f6eddfc8838e Mon Sep 17 00:00:00 2001 From: Tohrusky <65994850+Tohrusky@users.noreply.github.com> Date: Mon, 16 Feb 2026 23:16:54 +0800 Subject: [PATCH 4/6] dl --- src/renderer/src/views/ZImageGenerate.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/views/ZImageGenerate.vue b/src/renderer/src/views/ZImageGenerate.vue index 0b3c67c..ce1054e 100644 --- a/src/renderer/src/views/ZImageGenerate.vue +++ b/src/renderer/src/views/ZImageGenerate.vue @@ -511,8 +511,8 @@ const gridStyle = computed(() => { transform-origin="center" > Date: Mon, 16 Feb 2026 23:18:49 +0800 Subject: [PATCH 5/6] chore --- src/renderer/src/App.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/App.vue b/src/renderer/src/App.vue index e154b68..fc965b0 100644 --- a/src/renderer/src/App.vue +++ b/src/renderer/src/App.vue @@ -49,8 +49,8 @@ const themeOverrides = { Select: { peers: { InternalSelectMenu: { - color: 'rgba(20, 20, 20, 0.9)', // Darker menu for contrast - optionTextColor: 'white', + color: 'rgba(255, 255, 255, 0.95)', // Darker menu for contrast + optionTextColor: 'black', optionTextColorActive: '#007AFF', borderRadius: '16px', padding: '8px', From 95521efa2c7f6952a6a34c8febf975385167dc1f Mon Sep 17 00:00:00 2001 From: Tohrusky <65994850+Tohrusky@users.noreply.github.com> Date: Mon, 16 Feb 2026 23:19:13 +0800 Subject: [PATCH 6/6] chore --- src/renderer/src/store/zimageStore.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/src/store/zimageStore.ts b/src/renderer/src/store/zimageStore.ts index 2f71663..f7f7eb2 100644 --- a/src/renderer/src/store/zimageStore.ts +++ b/src/renderer/src/store/zimageStore.ts @@ -1,7 +1,7 @@ import type { ZImageModelDownloadProgress, ZImageOptions } from '@shared/type/zimage' import { IpcChannelInvoke, IpcChannelOn, IpcChannelSend } from '@shared/const/ipc' import { defineStore } from 'pinia' -import { nextTick, ref, watch } from 'vue' +import { ref, watch } from 'vue' import i18n from '../plugins/i18n' const { ipcRenderer } = window.electron