From fdc5c43b2cf8ebc3d67099cfba9936c838281561 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Tue, 30 Jun 2026 03:36:45 +0800
Subject: [PATCH] Add Windows QA evidence verifier

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

diff --git a/privatevoice.src/services/engine_service.go b/privatevoice.src/services/engine_service.go
index a428a79..ecfb3ac 100755
--- a/privatevoice.src/services/engine_service.go
+++ b/privatevoice.src/services/engine_service.go
@@ -171,6 +171,7 @@
 func (s *EngineService) modelStatusMap(profile model.ModelProfile, current modelselection.CurrentModel) map[string]interface{} {
 	resolved, err := model.ResolveModel(profile.ID)
 	installed := err == nil && resolved.IsUsable()
+	supportedInBuild := model.IsModelSupportedInCurrentBuild(profile.ID)
 	status := model.ModelNotInstalled
 	var missing []string
 	var problems []string
@@ -198,6 +199,8 @@
 		"supportedLanguages":  profile.SupportedLanguageIDs,
 		"recommendedLanguage": profile.RecommendedFor,
 		"description":         profile.Description,
+		"supportedInBuild":    supportedInBuild,
+		"unsupportedReason":   model.ModelUnsupportedReason(profile.ID),
 	}
 }
 
@@ -370,6 +373,15 @@
 	if err != nil {
 		return model.ModelProfile{}, err
 	}
+	switch model.ModelUnsupportedReason(profile.ID) {
+	case "":
+	case model.UnsupportedReasonRequiresMacOS14:
+		return model.ModelProfile{}, fmt.Errorf("model %s requires macOS 14 or later", profile.ID)
+	case model.UnsupportedReasonWindowsPreview:
+		return model.ModelProfile{}, fmt.Errorf("model %s is not supported in the Windows preview build; use SenseVoice", profile.ID)
+	default:
+		return model.ModelProfile{}, fmt.Errorf("model %s is not supported in this build", profile.ID)
+	}
 
 	current := s.currentModel()
 	languageProfile, err := model.GetLanguageProfile(current.LanguageSettings.EffectiveLanguageID)

--
Gitblit v1.9.3