From 87e4e27c3ba6e71101e587b6876cfed38de23149 Mon Sep 17 00:00:00 2001 From: leonardotrapani Date: Sun, 1 Feb 2026 13:23:16 +0100 Subject: [PATCH] tui: remove language from transcription edit flow, use Language menu --- internal/tui/configure_transcription.go | 45 ++++++++++--------------- progress.txt | 10 ++++++ tasks/prd.jsonc | 2 +- 3 files changed, 28 insertions(+), 29 deletions(-) diff --git a/internal/tui/configure_transcription.go b/internal/tui/configure_transcription.go index b01b0bd..e3fa52a 100644 --- a/internal/tui/configure_transcription.go +++ b/internal/tui/configure_transcription.go @@ -114,7 +114,13 @@ func editTranscription(cfg *config.Config, configuredProviders []string) ([]stri } 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 if selectedModel == "" && len(modelOptions) > 0 { selectedModel = modelOptions[0].Value @@ -125,17 +131,6 @@ func editTranscription(cfg *config.Config, configuredProviders []string) ([]stri 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( huh.NewGroup( huh.NewSelect[string](). @@ -143,12 +138,6 @@ func editTranscription(cfg *config.Config, configuredProviders []string) ([]stri Description(modelDesc). Options(modelOptions...). Value(&selectedModel), - huh.NewSelect[string](). - Title("Language"). - Description("Select language for transcription"). - Options(languageOptions...). - Filtering(true). - Value(&selectedLanguage), ), ).WithTheme(getTheme()) @@ -157,17 +146,16 @@ func editTranscription(cfg *config.Config, configuredProviders []string) ([]stri } // validate language-model compatibility before saving - registryName = mapConfigProviderToRegistry(selectedProvider) - if err := provider.ValidateModelLanguage(registryName, selectedModel, selectedLanguage); err != nil { - // show error dialog and let user fix + registryName := mapConfigProviderToRegistry(selectedProvider) + if err := provider.ValidateModelLanguage(registryName, selectedModel, effectiveLanguage); err != nil { + // show error dialog - user needs to change language in Language menu fmt.Println() fmt.Println(StyleError.Render("Language-Model Incompatibility")) fmt.Println(StyleMuted.Render(err.Error())) fmt.Println() fmt.Println(StyleMuted.Render("You can:")) - fmt.Println(StyleMuted.Render(" - Change to a different model")) - fmt.Println(StyleMuted.Render(" - Select 'Auto-detect' for language")) - fmt.Println(StyleMuted.Render(" - Choose a supported language")) + fmt.Println(StyleMuted.Render(" - Choose a different model that supports your language")) + fmt.Println(StyleMuted.Render(" - Change language to 'Auto-detect' in the Language menu")) fmt.Println() var retry bool @@ -175,8 +163,8 @@ func editTranscription(cfg *config.Config, configuredProviders []string) ([]stri huh.NewGroup( huh.NewConfirm(). Title("Try again?"). - Description("Return to fix the incompatibility"). - Affirmative("Yes, let me fix it"). + Description("Choose a different model"). + Affirmative("Yes, let me pick another model"). Negative("Cancel"). Value(&retry), ), @@ -187,7 +175,7 @@ func editTranscription(cfg *config.Config, configuredProviders []string) ([]stri } if retry { - // recurse to let user fix the issue + // recurse to let user pick another model return editTranscription(cfg, configuredProviders) } return configuredProviders, nil @@ -245,7 +233,8 @@ func editTranscription(cfg *config.Config, configuredProviders []string) ([]stri } 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 } diff --git a/progress.txt b/progress.txt index d07c265..1a3706c 100644 --- a/progress.txt +++ b/progress.txt @@ -546,4 +546,14 @@ Started: Sun Feb 1 12:22:47 AM CET 2026 - Checks if current transcription model supports selected language via `provider.GetModel()` + `model.SupportsLanguage()` - 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" +- 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 \ No newline at end of file diff --git a/tasks/prd.jsonc b/tasks/prd.jsonc index cbe0adb..2718388 100644 --- a/tasks/prd.jsonc +++ b/tasks/prd.jsonc @@ -97,7 +97,7 @@ "Language validation still occurs using effective language", "Typecheck passes" ], - "passes": false + "passes": true }, { "title": "Enable streaming models in TUI model picker",