From 8780fa6ccfa37377f822591dbd2dacd15e627d21 Mon Sep 17 00:00:00 2001 From: spoons-and-mirrors <212802214+spoons-and-mirrors@users.noreply.github.com> Date: Mon, 11 Aug 2025 15:51:35 +0200 Subject: [PATCH] Fix: Respect agent's preferred model at TUI startup (#1683) Co-authored-by: opencode --- packages/tui/internal/app/app.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/tui/internal/app/app.go b/packages/tui/internal/app/app.go index 48f4684f..a0763779 100644 --- a/packages/tui/internal/app/app.go +++ b/packages/tui/internal/app/app.go @@ -417,7 +417,18 @@ func (a *App) InitializeProvider() tea.Cmd { } } - // Priority 3: Recent model usage (most recently used model) + // Priority 3: Current agent's preferred model + if selectedProvider == nil && a.Agent().Model.ModelID != "" { + if provider, model := findModelByProviderAndModelID(providers, a.Agent().Model.ProviderID, a.Agent().Model.ModelID); provider != nil && model != nil { + selectedProvider = provider + selectedModel = model + slog.Debug("Selected model from current agent", "provider", provider.ID, "model", model.ID, "agent", a.Agent().Name) + } else { + slog.Debug("Agent model not found", "provider", a.Agent().Model.ProviderID, "model", a.Agent().Model.ModelID, "agent", a.Agent().Name) + } + } + + // Priority 4: Recent model usage (most recently used model) if selectedProvider == nil && len(a.State.RecentlyUsedModels) > 0 { recentUsage := a.State.RecentlyUsedModels[0] // Most recent is first if provider, model := findModelByProviderAndModelID(providers, recentUsage.ProviderID, recentUsage.ModelID); provider != nil && @@ -436,7 +447,7 @@ func (a *App) InitializeProvider() tea.Cmd { } } - // Priority 4: State-based model (backwards compatibility) + // Priority 5: State-based model (backwards compatibility) if selectedProvider == nil && a.State.Provider != "" && a.State.Model != "" { if provider, model := findModelByProviderAndModelID(providers, a.State.Provider, a.State.Model); provider != nil && model != nil { @@ -448,7 +459,7 @@ func (a *App) InitializeProvider() tea.Cmd { } } - // Priority 5: Internal priority fallback (Anthropic preferred, then first available) + // Priority 6: Internal priority fallback (Anthropic preferred, then first available) if selectedProvider == nil { // Try Anthropic first as internal priority if provider := findProviderByID(providers, "anthropic"); provider != nil {