diff options
| author | adamdottv <[email protected]> | 2025-06-17 07:09:04 -0500 |
|---|---|---|
| committer | adamdottv <[email protected]> | 2025-06-17 07:09:04 -0500 |
| commit | a5da5127faffacd7703fc0dde061ef1f490d3dce (patch) | |
| tree | ab9c65d0eb45ab9fdc326187ca5881dc9b10936e /packages/tui/internal/components | |
| parent | b5a4439704c70a17d661f1984bb030d5325d141a (diff) | |
| download | opencode-a5da5127faffacd7703fc0dde061ef1f490d3dce.tar.gz opencode-a5da5127faffacd7703fc0dde061ef1f490d3dce.zip | |
chore: consolidate chat page into tui.go
Diffstat (limited to 'packages/tui/internal/components')
| -rw-r--r-- | packages/tui/internal/components/chat/editor.go | 13 | ||||
| -rw-r--r-- | packages/tui/internal/components/chat/messages.go | 21 | ||||
| -rw-r--r-- | packages/tui/internal/components/dialog/complete.go | 4 | ||||
| -rw-r--r-- | packages/tui/internal/components/dialog/models.go | 3 | ||||
| -rw-r--r-- | packages/tui/internal/components/dialog/permission.go | 4 | ||||
| -rw-r--r-- | packages/tui/internal/components/dialog/session.go | 3 | ||||
| -rw-r--r-- | packages/tui/internal/components/dialog/theme.go | 6 | ||||
| -rw-r--r-- | packages/tui/internal/components/list/list.go | 4 | ||||
| -rw-r--r-- | packages/tui/internal/components/status/status.go (renamed from packages/tui/internal/components/core/status.go) | 6 |
9 files changed, 38 insertions, 26 deletions
diff --git a/packages/tui/internal/components/chat/editor.go b/packages/tui/internal/components/chat/editor.go index 349087fbe..a2d33f172 100644 --- a/packages/tui/internal/components/chat/editor.go +++ b/packages/tui/internal/components/chat/editor.go @@ -16,12 +16,17 @@ import ( "github.com/sst/opencode/internal/commands" "github.com/sst/opencode/internal/components/dialog" "github.com/sst/opencode/internal/image" - "github.com/sst/opencode/internal/layout" "github.com/sst/opencode/internal/styles" "github.com/sst/opencode/internal/theme" "github.com/sst/opencode/internal/util" ) +type EditorComponent interface { + tea.Model + tea.ViewModel + Value() string +} + type editorComponent struct { width int height int @@ -99,7 +104,7 @@ func (m *editorComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) { var cmds []tea.Cmd var cmd tea.Cmd switch msg := msg.(type) { - case dialog.ThemeChangedMsg: + case dialog.ThemeSelectedMsg: m.textarea = createTextArea(&m.textarea) m.spinner = createSpinner() return m, m.spinner.Tick @@ -434,11 +439,11 @@ func createSpinner() spinner.Model { ) } -func (m *editorComponent) GetValue() string { +func (m *editorComponent) Value() string { return m.textarea.Value() } -func NewEditorComponent(app *app.App) layout.ModelWithView { +func NewEditorComponent(app *app.App) EditorComponent { s := createSpinner() ta := createTextArea(nil) diff --git a/packages/tui/internal/components/chat/messages.go b/packages/tui/internal/components/chat/messages.go index d0d839845..37e3380ca 100644 --- a/packages/tui/internal/components/chat/messages.go +++ b/packages/tui/internal/components/chat/messages.go @@ -12,12 +12,16 @@ import ( "github.com/sst/opencode/internal/app" "github.com/sst/opencode/internal/components/dialog" "github.com/sst/opencode/internal/layout" - "github.com/sst/opencode/internal/state" "github.com/sst/opencode/internal/styles" "github.com/sst/opencode/internal/theme" "github.com/sst/opencode/pkg/client" ) +type MessagesComponent interface { + tea.Model + tea.ViewModel +} + type messagesComponent struct { app *app.App width, height int @@ -69,7 +73,7 @@ func (m *messagesComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.viewport.GotoBottom() m.tail = true return m, nil - case dialog.ThemeChangedMsg: + case dialog.ThemeSelectedMsg: m.cache.Clear() m.renderView() return m, nil @@ -77,12 +81,12 @@ func (m *messagesComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.showToolResults = !m.showToolResults m.renderView() return m, nil - case state.SessionSelectedMsg: + case app.SessionSelectedMsg: m.cache.Clear() cmd := m.Reload() m.viewport.GotoBottom() return m, cmd - case state.SessionClearedMsg: + case app.SessionClearedMsg: m.cache.Clear() cmd := m.Reload() return m, cmd @@ -101,7 +105,12 @@ func (m *messagesComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) { if m.tail { m.viewport.GotoBottom() } - case state.StateUpdatedMsg: + case client.EventSessionUpdated: + m.renderView() + if m.tail { + m.viewport.GotoBottom() + } + case client.EventMessageUpdated: m.renderView() if m.tail { m.viewport.GotoBottom() @@ -389,7 +398,7 @@ func (m *messagesComponent) Reload() tea.Cmd { } } -func NewMessagesComponent(app *app.App) layout.ModelWithView { +func NewMessagesComponent(app *app.App) MessagesComponent { customSpinner := spinner.Spinner{ Frames: []string{" ", "┃", "┃"}, FPS: time.Second / 3, diff --git a/packages/tui/internal/components/dialog/complete.go b/packages/tui/internal/components/dialog/complete.go index d87a331cf..ca86b00e6 100644 --- a/packages/tui/internal/components/dialog/complete.go +++ b/packages/tui/internal/components/dialog/complete.go @@ -6,7 +6,6 @@ import ( tea "github.com/charmbracelet/bubbletea/v2" "github.com/charmbracelet/lipgloss/v2" "github.com/sst/opencode/internal/components/list" - "github.com/sst/opencode/internal/layout" "github.com/sst/opencode/internal/styles" "github.com/sst/opencode/internal/theme" "github.com/sst/opencode/internal/util" @@ -76,7 +75,8 @@ type CompletionDialogCompleteItemMsg struct { type CompletionDialogCloseMsg struct{} type CompletionDialog interface { - layout.ModelWithView + tea.Model + tea.ViewModel SetWidth(width int) IsEmpty() bool SetProvider(provider CompletionProvider) diff --git a/packages/tui/internal/components/dialog/models.go b/packages/tui/internal/components/dialog/models.go index 616347088..dfb11dffb 100644 --- a/packages/tui/internal/components/dialog/models.go +++ b/packages/tui/internal/components/dialog/models.go @@ -13,7 +13,6 @@ import ( "github.com/sst/opencode/internal/app" "github.com/sst/opencode/internal/components/modal" "github.com/sst/opencode/internal/layout" - "github.com/sst/opencode/internal/state" "github.com/sst/opencode/internal/styles" "github.com/sst/opencode/internal/theme" "github.com/sst/opencode/internal/util" @@ -115,7 +114,7 @@ func (m *modelDialog) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return m, tea.Sequence( util.CmdHandler(modal.CloseModalMsg{}), util.CmdHandler( - state.ModelSelectedMsg{ + app.ModelSelectedMsg{ Provider: m.provider, Model: models[m.selectedIdx], }), diff --git a/packages/tui/internal/components/dialog/permission.go b/packages/tui/internal/components/dialog/permission.go index ba82c876b..1f573e59d 100644 --- a/packages/tui/internal/components/dialog/permission.go +++ b/packages/tui/internal/components/dialog/permission.go @@ -6,7 +6,6 @@ import ( "github.com/charmbracelet/bubbles/v2/viewport" tea "github.com/charmbracelet/bubbletea/v2" "github.com/charmbracelet/lipgloss/v2" - "github.com/sst/opencode/internal/layout" "github.com/sst/opencode/internal/styles" "github.com/sst/opencode/internal/theme" "github.com/sst/opencode/internal/util" @@ -30,7 +29,8 @@ type PermissionResponseMsg struct { // PermissionDialogComponent interface for permission dialog component type PermissionDialogComponent interface { - layout.ModelWithView + tea.Model + tea.ViewModel // SetPermissions(permission permission.PermissionRequest) tea.Cmd } diff --git a/packages/tui/internal/components/dialog/session.go b/packages/tui/internal/components/dialog/session.go index 48278d85e..b59ebe3d5 100644 --- a/packages/tui/internal/components/dialog/session.go +++ b/packages/tui/internal/components/dialog/session.go @@ -8,7 +8,6 @@ import ( "github.com/sst/opencode/internal/components/list" "github.com/sst/opencode/internal/components/modal" "github.com/sst/opencode/internal/layout" - "github.com/sst/opencode/internal/state" "github.com/sst/opencode/internal/styles" "github.com/sst/opencode/internal/theme" "github.com/sst/opencode/internal/util" @@ -69,7 +68,7 @@ func (s *sessionDialog) Update(msg tea.Msg) (tea.Model, tea.Cmd) { s.selectedSessionID = selectedSession.Id return s, tea.Sequence( util.CmdHandler(modal.CloseModalMsg{}), - util.CmdHandler(state.SessionSelectedMsg(&selectedSession)), + util.CmdHandler(app.SessionSelectedMsg(&selectedSession)), ) } } diff --git a/packages/tui/internal/components/dialog/theme.go b/packages/tui/internal/components/dialog/theme.go index 50472428b..63135bc81 100644 --- a/packages/tui/internal/components/dialog/theme.go +++ b/packages/tui/internal/components/dialog/theme.go @@ -10,8 +10,8 @@ import ( "github.com/sst/opencode/internal/util" ) -// ThemeChangedMsg is sent when the theme is changed -type ThemeChangedMsg struct { +// ThemeSelectedMsg is sent when the theme is changed +type ThemeSelectedMsg struct { ThemeName string } @@ -75,7 +75,7 @@ func (t *themeDialog) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } return t, tea.Sequence( util.CmdHandler(modal.CloseModalMsg{}), - util.CmdHandler(ThemeChangedMsg{ThemeName: selectedTheme}), + util.CmdHandler(ThemeSelectedMsg{ThemeName: selectedTheme}), ) } } diff --git a/packages/tui/internal/components/list/list.go b/packages/tui/internal/components/list/list.go index fea77e902..cefcaabef 100644 --- a/packages/tui/internal/components/list/list.go +++ b/packages/tui/internal/components/list/list.go @@ -4,7 +4,6 @@ import ( "github.com/charmbracelet/bubbles/v2/key" tea "github.com/charmbracelet/bubbletea/v2" "github.com/charmbracelet/lipgloss/v2" - "github.com/sst/opencode/internal/layout" ) type ListItem interface { @@ -12,7 +11,8 @@ type ListItem interface { } type List[T ListItem] interface { - layout.ModelWithView + tea.Model + tea.ViewModel SetMaxWidth(maxWidth int) GetSelectedItem() (item T, idx int) SetItems(items []T) diff --git a/packages/tui/internal/components/core/status.go b/packages/tui/internal/components/status/status.go index 9540c6c2b..01a2659c6 100644 --- a/packages/tui/internal/components/core/status.go +++ b/packages/tui/internal/components/status/status.go @@ -1,4 +1,4 @@ -package core +package status import ( "fmt" @@ -7,13 +7,13 @@ import ( tea "github.com/charmbracelet/bubbletea/v2" "github.com/charmbracelet/lipgloss/v2" "github.com/sst/opencode/internal/app" - "github.com/sst/opencode/internal/layout" "github.com/sst/opencode/internal/styles" "github.com/sst/opencode/internal/theme" ) type StatusComponent interface { - layout.ModelWithView + tea.Model + tea.ViewModel } type statusComponent struct { |
