diff --git a/internal/tui/configure.go b/internal/tui/configure.go index abbb948..a8c9653 100644 --- a/internal/tui/configure.go +++ b/internal/tui/configure.go @@ -37,6 +37,7 @@ type ConfigSection string const ( SectionProviders ConfigSection = "providers" + SectionLanguage ConfigSection = "language" SectionTranscription ConfigSection = "transcription" SectionLLM ConfigSection = "llm" SectionKeywords ConfigSection = "keywords" @@ -110,6 +111,11 @@ func runEditExisting(cfg *config.Config) (*ConfigureResult, error) { } configuredProviders = getConfiguredProviders(cfg) + case SectionLanguage: + if err := editLanguage(cfg); err != nil { + continue + } + case SectionTranscription: var err error configuredProviders, err = editTranscription(cfg, configuredProviders) @@ -154,6 +160,7 @@ func runEditExisting(cfg *config.Config) (*ConfigureResult, error) { func selectSection(cfg *config.Config) (ConfigSection, error) { options := []huh.Option[ConfigSection]{ huh.NewOption(formatProvidersLabel(cfg), SectionProviders), + huh.NewOption(formatLanguageMenuLabel(cfg), SectionLanguage), huh.NewOption(formatTranscriptionLabel(cfg), SectionTranscription), huh.NewOption(formatLLMLabel(cfg), SectionLLM), huh.NewOption(formatKeywordsLabel(cfg), SectionKeywords), diff --git a/internal/tui/configure_helpers.go b/internal/tui/configure_helpers.go index 454529b..cf10adb 100644 --- a/internal/tui/configure_helpers.go +++ b/internal/tui/configure_helpers.go @@ -6,6 +6,7 @@ import ( "github.com/charmbracelet/huh" "github.com/leonardotrapani/hyprvoice/internal/config" + "github.com/leonardotrapani/hyprvoice/internal/language" ) // formatProvidersLabel formats the providers menu option @@ -13,6 +14,16 @@ func formatProvidersLabel(cfg *config.Config) string { return "Providers" } +// formatLanguageMenuLabel formats the language menu option showing current setting +func formatLanguageMenuLabel(cfg *config.Config) string { + langCode := cfg.General.Language + if langCode == "" { + return "Language (Auto-detect)" + } + lang := language.FromCode(langCode) + return fmt.Sprintf("Language (%s)", lang.Name) +} + // formatTranscriptionLabel formats the transcription menu option func formatTranscriptionLabel(cfg *config.Config) string { return "Transcription" diff --git a/internal/tui/configure_language.go b/internal/tui/configure_language.go new file mode 100644 index 0000000..c719be6 --- /dev/null +++ b/internal/tui/configure_language.go @@ -0,0 +1,11 @@ +package tui + +import ( + "github.com/leonardotrapani/hyprvoice/internal/config" +) + +// editLanguage allows the user to select the global transcription language +func editLanguage(cfg *config.Config) error { + // implementation in task 5 + return nil +} diff --git a/progress.txt b/progress.txt index 7b78d9d..bea5a80 100644 --- a/progress.txt +++ b/progress.txt @@ -527,4 +527,13 @@ Started: Sun Feb 1 12:22:47 AM CET 2026 - Added `language = ""` with comment about ISO 639-1 codes and auto-detect - Removed `language = ""` from `[transcription]` section - Added commented `# language = ""` in transcription section with note about override +- All tests passing, typecheck passes + +### Task 4: Add SectionLanguage to TUI configure menu +- Added `SectionLanguage ConfigSection = "language"` constant in configure.go +- Added Language option to selectSection() options list after Providers +- Created `formatLanguageMenuLabel(cfg)` helper in configure_helpers.go (renamed from formatLanguageLabel to avoid collision with languages.go) +- Shows "Language (Auto-detect)" when empty, "Language ({name})" when set +- Added case SectionLanguage in runEditExisting switch calling editLanguage() +- Created stub configure_language.go with editLanguage() function (implementation in Task 5) - All tests passing, typecheck passes \ No newline at end of file diff --git a/tasks/prd.jsonc b/tasks/prd.jsonc index 7d0ec10..7785601 100644 --- a/tasks/prd.jsonc +++ b/tasks/prd.jsonc @@ -62,7 +62,7 @@ "Selecting Language enters language edit flow", "Typecheck passes" ], - "passes": false + "passes": true }, { "title": "Create editLanguage function in TUI",