Ariver
2026-06-24 e533a8cd34995af9aaeeb321b41969a260fef882
privatevoice.src/internal/modelselection/selection.go
@@ -27,15 +27,20 @@
   if selectionMode == config.ModelSelectionModeManual {
      if profile, err := model.GetModelProfile(cfg.SelectedModelID); err == nil {
         return CurrentModel{
            ModelID:          profile.ID,
            Profile:          profile,
            SelectionMode:    selectionMode,
            LanguageSettings: settings,
         if isModelAvailableForLanguage(profile.ID, settings.EffectiveLanguageID) {
            return CurrentModel{
               ModelID:          profile.ID,
               Profile:          profile,
               SelectionMode:    selectionMode,
               LanguageSettings: settings,
            }
         }
         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)
      }
      fallbackReason = "invalid manual model selection"
      logger.Info("Invalid manual SelectedModelID %q, falling back to language default %q", cfg.SelectedModelID, modelID)
   }
   profile, err := model.GetModelProfile(modelID)
@@ -54,3 +59,19 @@
      FallbackReason:   fallbackReason,
   }
}
func isModelAvailableForLanguage(modelID, languageID string) bool {
   profile, err := model.GetLanguageProfile(languageID)
   if err != nil {
      return false
   }
   if profile.DefaultModelID == modelID {
      return true
   }
   for _, upgradeModelID := range profile.UpgradeModelIDs {
      if upgradeModelID == modelID {
         return true
      }
   }
   return false
}