From 98df293310d9d86cb416647f2f526c1907e4d377 Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Thu, 18 Dec 2025 16:48:07 -0500 Subject: [PATCH] fix(ui): handle model selection in models dialog --- internal/ui/dialog/messages.go | 7 +++++++ internal/ui/dialog/models.go | 15 +++++++++++++-- internal/ui/model/ui.go | 7 +++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/internal/ui/dialog/messages.go b/internal/ui/dialog/messages.go index b3981ce382ea8712e93bd075600b3455748cb579..ca44d1118a57bd1506d5f35bb47d5f56bbe9fa6f 100644 --- a/internal/ui/dialog/messages.go +++ b/internal/ui/dialog/messages.go @@ -2,6 +2,7 @@ package dialog import ( tea "charm.land/bubbletea/v2" + "github.com/charmbracelet/catwalk/pkg/catwalk" "github.com/charmbracelet/crush/internal/session" ) @@ -16,6 +17,12 @@ type SessionSelectedMsg struct { Session session.Session } +// ModelSelectedMsg is a message indicating a model has been selected. +type ModelSelectedMsg struct { + Provider catwalk.Provider + Model catwalk.Model +} + // Messages for commands type ( SwitchSessionsMsg struct{} diff --git a/internal/ui/dialog/models.go b/internal/ui/dialog/models.go index b87edba2cac4cd3927d3845a06dad3dca7c27bcd..47b50cd758d68e84c1b0615b0b98b237ebbbcdb6 100644 --- a/internal/ui/dialog/models.go +++ b/internal/ui/dialog/models.go @@ -169,8 +169,19 @@ func (m *Models) Update(msg tea.Msg) tea.Msg { m.list.SelectNext() m.list.ScrollToSelected() case key.Matches(msg, m.keyMap.Select): - if selectedItem := m.list.SelectedItem(); selectedItem != nil { - // TODO: Handle model selection confirmation. + selectedItem := m.list.SelectedItem() + if selectedItem == nil { + break + } + + modelItem, ok := selectedItem.(*ModelItem) + if !ok { + break + } + + return ModelSelectedMsg{ + Provider: modelItem.prov, + Model: modelItem.model, } case key.Matches(msg, m.keyMap.Tab): if m.modelType == ModelTypeLarge { diff --git a/internal/ui/model/ui.go b/internal/ui/model/ui.go index 817c2ad5340f760f246e47aafe1f226998bf1659..a8f80fe1f03f947ee11d05853f62e69927897afa 100644 --- a/internal/ui/model/ui.go +++ b/internal/ui/model/ui.go @@ -562,6 +562,13 @@ func (m *UI) handleKeyPressMsg(msg tea.KeyPressMsg) tea.Cmd { m.dialog.CloseDialog(dialog.CommandsID) case dialog.QuitMsg: cmds = append(cmds, tea.Quit) + case dialog.SwitchModelMsg: + m.dialog.CloseDialog(dialog.CommandsID) + if cmd := m.openModelsDialog(); cmd != nil { + cmds = append(cmds, cmd) + } + case dialog.ModelSelectedMsg: + // TODO: Handle model switching } return tea.Batch(cmds...)