tui: remove language from transcription edit flow, use Language menu

This commit is contained in:
leonardotrapani
2026-02-01 13:23:16 +01:00
parent cc8c0c8a11
commit 87e4e27c3b
3 changed files with 28 additions and 29 deletions
+17 -28
View File
@@ -114,7 +114,13 @@ func editTranscription(cfg *config.Config, configuredProviders []string) ([]stri
} }
cfg.Transcription.Provider = selectedProvider cfg.Transcription.Provider = selectedProvider
modelOptions := getTranscriptionModelOptions(selectedProvider, cfg.Transcription.Language) // use effective language for model compatibility display
effectiveLanguage := cfg.General.Language
if cfg.Transcription.Language != "" {
effectiveLanguage = cfg.Transcription.Language
}
modelOptions := getTranscriptionModelOptions(selectedProvider, effectiveLanguage)
selectedModel := cfg.Transcription.Model selectedModel := cfg.Transcription.Model
if selectedModel == "" && len(modelOptions) > 0 { if selectedModel == "" && len(modelOptions) > 0 {
selectedModel = modelOptions[0].Value selectedModel = modelOptions[0].Value
@@ -125,17 +131,6 @@ func editTranscription(cfg *config.Config, configuredProviders []string) ([]stri
modelDesc = fmt.Sprintf("Currently: %s", cfg.Transcription.Model) modelDesc = fmt.Sprintf("Currently: %s", cfg.Transcription.Model)
} }
selectedLanguage := cfg.Transcription.Language
// get current model for language compatibility warnings
var currentModel *provider.Model
registryName := mapConfigProviderToRegistry(selectedProvider)
if m, err := provider.GetModel(registryName, selectedModel); err == nil {
currentModel = m
}
languageOptions := getLanguageOptions(currentModel)
modelForm := huh.NewForm( modelForm := huh.NewForm(
huh.NewGroup( huh.NewGroup(
huh.NewSelect[string](). huh.NewSelect[string]().
@@ -143,12 +138,6 @@ func editTranscription(cfg *config.Config, configuredProviders []string) ([]stri
Description(modelDesc). Description(modelDesc).
Options(modelOptions...). Options(modelOptions...).
Value(&selectedModel), Value(&selectedModel),
huh.NewSelect[string]().
Title("Language").
Description("Select language for transcription").
Options(languageOptions...).
Filtering(true).
Value(&selectedLanguage),
), ),
).WithTheme(getTheme()) ).WithTheme(getTheme())
@@ -157,17 +146,16 @@ func editTranscription(cfg *config.Config, configuredProviders []string) ([]stri
} }
// validate language-model compatibility before saving // validate language-model compatibility before saving
registryName = mapConfigProviderToRegistry(selectedProvider) registryName := mapConfigProviderToRegistry(selectedProvider)
if err := provider.ValidateModelLanguage(registryName, selectedModel, selectedLanguage); err != nil { if err := provider.ValidateModelLanguage(registryName, selectedModel, effectiveLanguage); err != nil {
// show error dialog and let user fix // show error dialog - user needs to change language in Language menu
fmt.Println() fmt.Println()
fmt.Println(StyleError.Render("Language-Model Incompatibility")) fmt.Println(StyleError.Render("Language-Model Incompatibility"))
fmt.Println(StyleMuted.Render(err.Error())) fmt.Println(StyleMuted.Render(err.Error()))
fmt.Println() fmt.Println()
fmt.Println(StyleMuted.Render("You can:")) fmt.Println(StyleMuted.Render("You can:"))
fmt.Println(StyleMuted.Render(" - Change to a different model")) fmt.Println(StyleMuted.Render(" - Choose a different model that supports your language"))
fmt.Println(StyleMuted.Render(" - Select 'Auto-detect' for language")) fmt.Println(StyleMuted.Render(" - Change language to 'Auto-detect' in the Language menu"))
fmt.Println(StyleMuted.Render(" - Choose a supported language"))
fmt.Println() fmt.Println()
var retry bool var retry bool
@@ -175,8 +163,8 @@ func editTranscription(cfg *config.Config, configuredProviders []string) ([]stri
huh.NewGroup( huh.NewGroup(
huh.NewConfirm(). huh.NewConfirm().
Title("Try again?"). Title("Try again?").
Description("Return to fix the incompatibility"). Description("Choose a different model").
Affirmative("Yes, let me fix it"). Affirmative("Yes, let me pick another model").
Negative("Cancel"). Negative("Cancel").
Value(&retry), Value(&retry),
), ),
@@ -187,7 +175,7 @@ func editTranscription(cfg *config.Config, configuredProviders []string) ([]stri
} }
if retry { if retry {
// recurse to let user fix the issue // recurse to let user pick another model
return editTranscription(cfg, configuredProviders) return editTranscription(cfg, configuredProviders)
} }
return configuredProviders, nil return configuredProviders, nil
@@ -245,7 +233,8 @@ func editTranscription(cfg *config.Config, configuredProviders []string) ([]stri
} }
cfg.Transcription.Model = selectedModel cfg.Transcription.Model = selectedModel
cfg.Transcription.Language = selectedLanguage // language is now set in the Language menu (cfg.General.Language)
// cfg.Transcription.Language can still be used as override but not set here
return configuredProviders, nil return configuredProviders, nil
} }
+10
View File
@@ -547,3 +547,13 @@ Started: Sun Feb 1 12:22:47 AM CET 2026
- Shows warning dialog with 3 options: keep incompatible language, use auto-detect, or choose different language - Shows warning dialog with 3 options: keep incompatible language, use auto-detect, or choose different language
- Recursive retry flow if user chooses "Choose a different language" - Recursive retry flow if user chooses "Choose a different language"
- All tests passing, typecheck passes - All tests passing, typecheck passes
### Task 6: Remove language from transcription edit flow
- Removed language select from `editTranscription()` model form in configure_transcription.go
- Model form now only shows model selection (no language picker)
- Added `effectiveLanguage` calculation: `cfg.Transcription.Language || cfg.General.Language`
- Language validation still happens using effective language before saving
- Updated error message to point users to Language menu: "Change language to 'Auto-detect' in the Language menu"
- Only `cfg.Transcription.Model` saved now, not language
- `cfg.Transcription.Language` can still be used as manual override but not set via TUI
- All tests passing, typecheck passes
+1 -1
View File
@@ -97,7 +97,7 @@
"Language validation still occurs using effective language", "Language validation still occurs using effective language",
"Typecheck passes" "Typecheck passes"
], ],
"passes": false "passes": true
}, },
{ {
"title": "Enable streaming models in TUI model picker", "title": "Enable streaming models in TUI model picker",