From 7eb0b4196ce15c8bfbb0514c54b51cf019c78d24 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Tue, 23 Jun 2026 13:15:33 +0800
Subject: [PATCH] Prepare 2.1.34 input settings QA build

---
 privatevoice.src/frontend/src/components/onboarding/OnboardingView.svelte |   22 +++++++++++++++++++---
 1 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/privatevoice.src/frontend/src/components/onboarding/OnboardingView.svelte b/privatevoice.src/frontend/src/components/onboarding/OnboardingView.svelte
index 5116ef5..6535a9a 100755
--- a/privatevoice.src/frontend/src/components/onboarding/OnboardingView.svelte
+++ b/privatevoice.src/frontend/src/components/onboarding/OnboardingView.svelte
@@ -9,11 +9,15 @@
   let detailText = $state('')
   let progress = $state(0)
   let failed = $state(false)
+  let downloadActive = $state(false)
 
   onMount(() => {
     Events.On('model:download-progress', (ev: any) => {
       const data = ev?.data
       if (data?.percent != null) {
+        downloadActive = true
+        failed = false
+        statusText = t('onboarding.syncModel')
         progress = data.percent
         const downloadedMB = Math.floor((data.downloaded || 0) / 1024 / 1024)
         const totalMB = Math.floor((data.total || 0) / 1024 / 1024)
@@ -24,13 +28,19 @@
     Events.On('engine:status', (ev: any) => {
       const data = ev?.data
       if (data?.status === 'ready') {
+        downloadActive = false
+        failed = false
         statusText = t('onboarding.complete')
         progress = 100
       } else if (data?.status === 'need_model') {
-        statusText = t('onboarding.failed')
-        detailText = data?.error || ''
-        failed = true
+        const error = typeof data?.error === 'string' ? data.error.trim() : ''
+        if (error && !downloadActive) {
+          statusText = t('onboarding.failed')
+          detailText = error
+          failed = true
+        }
       } else if (data?.status === 'error') {
+        downloadActive = false
         statusText = t('onboarding.failed')
         detailText = data?.error || ''
         failed = true
@@ -42,10 +52,16 @@
 
   async function triggerDownload() {
     try {
+      downloadActive = true
+      failed = false
+      statusText = t('onboarding.syncModel')
+      detailText = ''
       await Call.ByName('voicesnap/services.EngineService.DownloadCurrentModel')
+      downloadActive = false
       statusText = t('onboarding.optimizing')
       detailText = t('onboarding.extracting')
     } catch (err: any) {
+      downloadActive = false
       statusText = t('onboarding.failed')
       detailText = err?.message || String(err)
       failed = true

--
Gitblit v1.9.3