From ac31349b32d89b2798cd20224fcdede91d6bfe05 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Tue, 30 Jun 2026 03:30:51 +0800
Subject: [PATCH] Capture Windows QA target text

---
 privatevoice.src/internal/config/config.go |   39 +++++++++++++++++++++++++++++++++++++--
 1 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/privatevoice.src/internal/config/config.go b/privatevoice.src/internal/config/config.go
index 62b4673..e3e15c8 100755
--- a/privatevoice.src/internal/config/config.go
+++ b/privatevoice.src/internal/config/config.go
@@ -9,8 +9,12 @@
 )
 
 const (
-	HotkeyModeTap  = "tap"
-	HotkeyModeHold = "hold"
+	HotkeyModeTap            = "tap"
+	HotkeyModeHold           = "hold"
+	LanguageModeAuto         = "auto"
+	LanguageModeManual       = "manual"
+	ModelSelectionModeAuto   = "auto"
+	ModelSelectionModeManual = "manual"
 )
 
 // Config holds the application configuration, compatible with the WPF version's config.json.
@@ -25,6 +29,9 @@
 	IndicatorX               int    `json:"IndicatorX,omitempty"`
 	IndicatorY               int    `json:"IndicatorY,omitempty"`
 	SelectedModelID          string `json:"SelectedModelID,omitempty"`
+	ModelSelectionMode       string `json:"ModelSelectionMode,omitempty"`
+	LanguageMode             string `json:"LanguageMode,omitempty"`
+	LanguageID               string `json:"LanguageID,omitempty"`
 	ModelDownloadUrl         string `json:"ModelDownloadUrl"`
 	FallbackModelDownloadUrl string `json:"FallbackModelDownloadUrl"`
 }
@@ -39,6 +46,9 @@
 		HideDockIcon:             true,
 		CopyToClipboard:          true,
 		SelectedModelID:          model.DefaultModelID,
+		ModelSelectionMode:       ModelSelectionModeAuto,
+		LanguageMode:             LanguageModeAuto,
+		LanguageID:               model.DefaultLanguageID,
 		ModelDownloadUrl:         "http://www.maikami.com/voicesnap/sensevoice.zip",
 		FallbackModelDownloadUrl: "https://modelscope.cn/models/sherpa-onnx/sherpa-onnx-sense-voice-zh-en-ja-ko-yue/resolve/master/sherpa-onnx-sense-voice-zh-en-ja-ko-yue-int8-2024-07-17.tar.bz2",
 	}
@@ -66,6 +76,13 @@
 		return nil, err
 	}
 	cfg.HotkeyMode = NormalizeHotkeyMode(cfg.HotkeyMode)
+	cfg.LanguageMode = NormalizeLanguageMode(cfg.LanguageMode)
+	cfg.ModelSelectionMode = NormalizeModelSelectionMode(cfg.ModelSelectionMode)
+	languageID := cfg.LanguageID
+	cfg.LanguageID = model.NormalizeLanguageID(cfg.LanguageID)
+	if languageID != "" && languageID != cfg.LanguageID {
+		logger.Info("Unknown LanguageID %q, falling back to %q", languageID, cfg.LanguageID)
+	}
 	selectedModelID := cfg.SelectedModelID
 	cfg.SelectedModelID = model.NormalizeModelID(cfg.SelectedModelID)
 	if selectedModelID != "" && selectedModelID != cfg.SelectedModelID {
@@ -74,6 +91,24 @@
 	return cfg, nil
 }
 
+func NormalizeLanguageMode(mode string) string {
+	switch mode {
+	case LanguageModeAuto, LanguageModeManual:
+		return mode
+	default:
+		return LanguageModeAuto
+	}
+}
+
+func NormalizeModelSelectionMode(mode string) string {
+	switch mode {
+	case ModelSelectionModeAuto, ModelSelectionModeManual:
+		return mode
+	default:
+		return ModelSelectionModeAuto
+	}
+}
+
 func NormalizeHotkeyMode(mode string) string {
 	switch mode {
 	case HotkeyModeTap, HotkeyModeHold:

--
Gitblit v1.9.3