From 084cdd26d0f2bfa96d165c0a77a0697406919634 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Mon, 29 Jun 2026 01:19:28 +0800
Subject: [PATCH] Add Monterey compatibility build line

---
 privatevoice.src/internal/modelselection/selection.go |   18 +++++++++++++++---
 1 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/privatevoice.src/internal/modelselection/selection.go b/privatevoice.src/internal/modelselection/selection.go
index 48f1a9a..15b8d2b 100644
--- a/privatevoice.src/internal/modelselection/selection.go
+++ b/privatevoice.src/internal/modelselection/selection.go
@@ -27,16 +27,20 @@
 
 	if selectionMode == config.ModelSelectionModeManual {
 		if profile, err := model.GetModelProfile(cfg.SelectedModelID); err == nil {
-			if isModelAvailableForLanguage(profile.ID, settings.EffectiveLanguageID) {
+			if !model.IsModelSupportedInCurrentBuild(profile.ID) {
+				fallbackReason = "manual model not supported in current build"
+				logger.Info("Manual SelectedModelID %q is not supported in this build, falling back to language default %q", cfg.SelectedModelID, modelID)
+			} else if isModelAvailableForLanguage(profile.ID, settings.EffectiveLanguageID) {
 				return CurrentModel{
 					ModelID:          profile.ID,
 					Profile:          profile,
 					SelectionMode:    selectionMode,
 					LanguageSettings: settings,
 				}
+			} else {
+				fallbackReason = "manual model not available for language"
+				logger.Info("Manual SelectedModelID %q is not available for language %q, falling back to language default %q", cfg.SelectedModelID, settings.EffectiveLanguageID, modelID)
 			}
-			fallbackReason = "manual model not available for language"
-			logger.Info("Manual SelectedModelID %q is not available for language %q, falling back to language default %q", cfg.SelectedModelID, settings.EffectiveLanguageID, modelID)
 		} else {
 			fallbackReason = "invalid manual model selection"
 			logger.Info("Invalid manual SelectedModelID %q, falling back to language default %q", cfg.SelectedModelID, modelID)
@@ -47,6 +51,11 @@
 	if err != nil {
 		fallbackReason = "invalid language default model"
 		logger.Info("Invalid default model %q for language %q, falling back to %q", modelID, settings.EffectiveLanguageID, model.DefaultModelID)
+		profile = model.DefaultModelProfile()
+		modelID = profile.ID
+	} else if !model.IsModelSupportedInCurrentBuild(profile.ID) {
+		fallbackReason = "language default model not supported in current build"
+		logger.Info("Default model %q for language %q is not supported in this build, falling back to %q", modelID, settings.EffectiveLanguageID, model.DefaultModelID)
 		profile = model.DefaultModelProfile()
 		modelID = profile.ID
 	}
@@ -61,6 +70,9 @@
 }
 
 func isModelAvailableForLanguage(modelID, languageID string) bool {
+	if !model.IsModelSupportedInCurrentBuild(modelID) {
+		return false
+	}
 	profile, err := model.GetLanguageProfile(languageID)
 	if err != nil {
 		return false

--
Gitblit v1.9.3