From 0ffbf1935c9d091cce22a5583275ac0902f7a693 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Thu, 02 Jul 2026 03:04:51 +0800
Subject: [PATCH] Add Cantonese language model support

---
 privatevoice.src/services/engine_service_windows_test.go |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/privatevoice.src/services/engine_service_windows_test.go b/privatevoice.src/services/engine_service_windows_test.go
index 9700ba3..b18a37d 100644
--- a/privatevoice.src/services/engine_service_windows_test.go
+++ b/privatevoice.src/services/engine_service_windows_test.go
@@ -41,3 +41,31 @@
 		t.Fatalf("error = %q, want Windows preview reason", err.Error())
 	}
 }
+
+func TestWindowsPreviewSupportsSenseVoiceYue(t *testing.T) {
+	cfg := config.Default()
+	cfg.LanguageMode = config.LanguageModeManual
+	cfg.LanguageID = model.CantoneseLanguageID
+	service := NewEngineService(cfg)
+	profile, err := model.GetModelProfile(model.SenseVoiceYueModelID)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	status := service.modelStatusMap(profile, modelselection.CurrentModel{
+		ModelID:          model.SenseVoiceYueModelID,
+		Profile:          profile,
+		SelectionMode:    config.ModelSelectionModeAuto,
+		LanguageSettings: language.Resolve(config.LanguageModeManual, model.CantoneseLanguageID, nil),
+	})
+
+	if got := status["supportedInBuild"]; got != true {
+		t.Fatalf("supportedInBuild = %v, want true", got)
+	}
+	if got := status["unsupportedReason"]; got != "" {
+		t.Fatalf("unsupportedReason = %v, want empty", got)
+	}
+	if _, err := service.allowedModelProfile(model.SenseVoiceYueModelID); err != nil {
+		t.Fatalf("allowedModelProfile returned error: %v", err)
+	}
+}

--
Gitblit v1.9.3