From 57868a8279e371e71c1600f6bc12c40e18d8bb04 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Tue, 23 Jun 2026 14:37:01 +0800
Subject: [PATCH] Polish input settings layout
---
privatevoice.src/frontend/src/components/onboarding/OnboardingView.svelte | 34 ++++++++++++++++++++++------------
1 files changed, 22 insertions(+), 12 deletions(-)
diff --git a/privatevoice.src/frontend/src/components/onboarding/OnboardingView.svelte b/privatevoice.src/frontend/src/components/onboarding/OnboardingView.svelte
index 566b118..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,16 +52,16 @@
async function triggerDownload() {
try {
- const config: any = await Call.ByName('voicesnap/services.ConfigService.GetConfig')
- if (config) {
- await Call.ByName('voicesnap/services.EngineService.DownloadModel',
- config.ModelDownloadUrl,
- config.FallbackModelDownloadUrl
- )
- statusText = t('onboarding.optimizing')
- detailText = t('onboarding.extracting')
- }
+ 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