on main help sign in
fix(ui): dialog sessions refactor and close commands dialog on select
commit9899424bb063ddb626a6de6df603cfbdcb1118e0 authorAyman Bagabas <ayman.bagabas@gmail.com> dateThu 18 Dec 2025, 17:06 (1 year ago) parenteed0b49
3 files changed+14−7
internal/ui/dialog/commands.go+2−1 internal/ui/dialog/sessions.go+10−3 internal/ui/model/ui.go+2−3
internal/ui/dialog/commands.go+2−1
@@ -331,7 +331,8 @@ func (c *Commands) defaultCommands() []uicmd.Command {
331331 ID: "switch_model",
332332 Title: "Switch Model",
333333 Description: "Switch to a different model",
334− Shortcut: "ctrl+l",
334+ // FIXME: The shortcut might get updated if enhanced keyboard is supported.
335+ Shortcut: "ctrl+l",
335336 Handler: func(cmd uicmd.Command) tea.Cmd {
336337 return uiutil.CmdHandler(OpenDialogMsg{ModelsID})
337338 },
internal/ui/dialog/sessions.go+10−3
@@ -1,11 +1,12 @@
11package dialog
22
33import (
4+ "context"
5+
46 "charm.land/bubbles/v2/help"
57 "charm.land/bubbles/v2/key"
68 "charm.land/bubbles/v2/textinput"
79 tea "charm.land/bubbletea/v2"
8− "github.com/charmbracelet/crush/internal/session"
910 "github.com/charmbracelet/crush/internal/ui/common"
1011 "github.com/charmbracelet/crush/internal/ui/list"
1112)
@@ -32,9 +33,14 @@ type Session struct {
3233var _ Dialog = (*Session)(nil)
3334
3435// NewSessions creates a new Session dialog.
35−func NewSessions(com *common.Common, sessions ...session.Session) *Session {
36+func NewSessions(com *common.Common) (*Session, error) {
3637 s := new(Session)
3738 s.com = com
39+ sessions, err := com.App.Sessions.List(context.TODO())
40+ if err != nil {
41+ return nil, err
42+ }
43+
3844 help := help.New()
3945 help.Styles = com.Styles.DialogHelpStyles()
4046
@@ -62,7 +68,8 @@ func NewSessions(com *common.Common, sessions ...session.Session) *Session {
6268 key.WithHelp("↑", "previous item"),
6369 )
6470 s.keyMap.Close = CloseKey
65− return s
71+
72+ return s, nil
6673}
6774
6875// SetSize sets the size of the dialog.
internal/ui/model/ui.go+2−3
@@ -540,7 +540,7 @@ func (m *UI) handleKeyPressMsg(msg tea.KeyPressMsg) tea.Cmd {
540540 break
541541 }
542542
543− m.dialog.CloseDialog(msg.DialogID)
543+ m.dialog.CloseDialog(dialog.CommandsID)
544544
545545 // Command dialog messages
546546 case dialog.ToggleYoloModeMsg:
@@ -1436,12 +1436,11 @@ func (m *UI) openSessionsDialog() tea.Cmd {
14361436 return nil
14371437 }
14381438
1439− sessions, err := m.com.App.Sessions.List(context.TODO())
1439+ dialog, err := dialog.NewSessions(m.com)
14401440 if err != nil {
14411441 return uiutil.ReportError(err)
14421442 }
14431443
1444− dialog := dialog.NewSessions(m.com, sessions...)
14451444 // TODO: Get. Rid. Of. Magic numbers!
14461445 dialog.SetSize(min(120, m.width-8), 30)
14471446 m.dialog.OpenDialog(dialog)