- getTranscriptionModelOptions now uses provider.ModelsOfType() instead of hardcoded switch
- getLLMModelOptions now uses provider.ModelsOfType() instead of hardcoded switch
- added currentLang param to show language compatibility warnings on models
- buildModelLabel adds [size] for local models, [streaming] for streaming
- mapConfigProviderToRegistry maps config names to registry names
- factory now looks up Model via provider.GetModel()
- switches on model.AdapterType instead of provider name
- uses model.Endpoint for adapter configuration
- streaming models return clear error (not yet implemented)
- empty model falls back to provider default
- added tests for streaming and unknown model errors
- OpenAIAdapter now accepts EndpointConfig for custom endpoints
- added language code conversion via ToProviderFormat
- backward-compatible NewOpenAIAdapterFromConfig for migration
- works with OpenAI, Groq, and Mistral endpoints
- replaced old TranscriptionModels/LLMModels/SupportsX methods with Models() []Model
- added DefaultModel(t ModelType), IsLocal() to interface
- added helpers: GetModel, ModelsOfType, FindModelByID, ModelsForLanguage, ValidateModelLanguage
- all providers now return full Model metadata with SupportedLanguages, AdapterType, Endpoint
- groq distil-whisper-large-v3-en marked as english-only
- updated TUI to use new interface
- add Providers map for centralized API key storage
- add Keywords global field for transcription/LLM hints
- add LLMConfig with Enabled, Provider, Model
- add LLMPostProcessingConfig (RemoveStutters, AddPunctuation, FixGrammar, RemoveFillerWords)
- add LLMCustomPromptConfig (Enabled, Prompt)
- add ToLLMConfig() and IsLLMEnabled() methods
- add auto-migration from old transcription.api_key format
- unified API key resolution: providers -> legacy -> env var
- backward compatible with existing configs