summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNicholas Hamilton <[email protected]>2025-07-14 09:04:43 -0500
committerGitHub <[email protected]>2025-07-14 09:04:43 -0500
commit8d0350d92300d33603463fe089e43c66854e1817 (patch)
treedb704c61555f8c02ee6f1455c0c139dfca9e3e9d
parent4192d7eacc9c2b128ae2fa810c7d44cfda60ff61 (diff)
downloadopencode-8d0350d92300d33603463fe089e43c66854e1817.tar.gz
opencode-8d0350d92300d33603463fe089e43c66854e1817.zip
feat: ability to create new session from session dialog (#920)
-rw-r--r--packages/tui/internal/components/dialog/session.go28
1 files changed, 24 insertions, 4 deletions
diff --git a/packages/tui/internal/components/dialog/session.go b/packages/tui/internal/components/dialog/session.go
index 6f18dba0e..eb3d4bef7 100644
--- a/packages/tui/internal/components/dialog/session.go
+++ b/packages/tui/internal/components/dialog/session.go
@@ -110,6 +110,15 @@ func (s *sessionDialog) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
util.CmdHandler(app.SessionSelectedMsg(&selectedSession)),
)
}
+ case "n":
+ return s, tea.Sequence(
+ util.CmdHandler(modal.CloseModalMsg{}),
+ func() tea.Msg {
+ s.app.Session = &opencode.Session{}
+ s.app.Messages = []opencode.MessageUnion{}
+ return app.SessionClearedMsg{}
+ },
+ )
case "x", "delete", "backspace":
if _, idx := s.list.GetSelectedItem(); idx >= 0 && idx < len(s.sessions) {
if s.deleteConfirmation == idx {
@@ -150,10 +159,21 @@ func (s *sessionDialog) Render(background string) string {
listView := s.list.View()
t := theme.CurrentTheme()
- helpStyle := styles.NewStyle().PaddingLeft(1).PaddingTop(1)
- helpText := styles.NewStyle().Foreground(t.Text()).Render("x/del")
- helpText = helpText + styles.NewStyle().Background(t.BackgroundElement()).Foreground(t.TextMuted()).Render(" delete session")
- helpText = helpStyle.Render(helpText)
+ keyStyle := styles.NewStyle().Foreground(t.Text()).Background(t.BackgroundPanel()).Render
+ mutedStyle := styles.NewStyle().Foreground(t.TextMuted()).Background(t.BackgroundPanel()).Render
+
+ leftHelp := keyStyle("n") + mutedStyle(" new session")
+ rightHelp := keyStyle("x/del") + mutedStyle(" delete session")
+
+ bgColor := t.BackgroundPanel()
+ helpText := layout.Render(layout.FlexOptions{
+ Direction: layout.Row,
+ Justify: layout.JustifySpaceBetween,
+ Width: layout.Current.Container.Width - 14,
+ Background: &bgColor,
+ }, layout.FlexItem{View: leftHelp}, layout.FlexItem{View: rightHelp})
+
+ helpText = styles.NewStyle().PaddingLeft(1).PaddingTop(1).Render(helpText)
content := strings.Join([]string{listView, helpText}, "\n")