summaryrefslogtreecommitdiffhomepage
path: root/packages/tui/internal/components
diff options
context:
space:
mode:
authoradamdotdevin <[email protected]>2025-08-11 11:58:40 -0500
committeradamdotdevin <[email protected]>2025-08-11 11:58:46 -0500
commit5e777fd2a2d821003bfc7aa39bf5c5cd158b6c5b (patch)
tree0e68ca9beaba0715219e1e1c1d20479b5d708d9a /packages/tui/internal/components
parent3c71fda6481bcadcf62278478f0678002ff9029a (diff)
downloadopencode-5e777fd2a2d821003bfc7aa39bf5c5cd158b6c5b.tar.gz
opencode-5e777fd2a2d821003bfc7aa39bf5c5cd158b6c5b.zip
feat: toggle tool details visible
Diffstat (limited to 'packages/tui/internal/components')
-rw-r--r--packages/tui/internal/components/chat/messages.go114
1 files changed, 70 insertions, 44 deletions
diff --git a/packages/tui/internal/components/chat/messages.go b/packages/tui/internal/components/chat/messages.go
index 84c3b9830..bbfd557a6 100644
--- a/packages/tui/internal/components/chat/messages.go
+++ b/packages/tui/internal/components/chat/messages.go
@@ -33,6 +33,7 @@ type MessagesComponent interface {
HalfPageUp() (tea.Model, tea.Cmd)
HalfPageDown() (tea.Model, tea.Cmd)
ToolDetailsVisible() bool
+ ThinkingBlocksVisible() bool
GotoTop() (tea.Model, tea.Cmd)
GotoBottom() (tea.Model, tea.Cmd)
CopyLastMessage() (tea.Model, tea.Cmd)
@@ -41,20 +42,21 @@ type MessagesComponent interface {
}
type messagesComponent struct {
- width, height int
- app *app.App
- header string
- viewport viewport.Model
- clipboard []string
- cache *PartCache
- loading bool
- showToolDetails bool
- rendering bool
- dirty bool
- tail bool
- partCount int
- lineCount int
- selection *selection
+ width, height int
+ app *app.App
+ header string
+ viewport viewport.Model
+ clipboard []string
+ cache *PartCache
+ loading bool
+ showToolDetails bool
+ showThinkingBlocks bool
+ rendering bool
+ dirty bool
+ tail bool
+ partCount int
+ lineCount int
+ selection *selection
}
type selection struct {
@@ -94,6 +96,7 @@ func (s selection) coords(offset int) *selection {
}
type ToggleToolDetailsMsg struct{}
+type ToggleThinkingBlocksMsg struct{}
func (m *messagesComponent) Init() tea.Cmd {
return tea.Batch(m.viewport.Init())
@@ -160,7 +163,12 @@ func (m *messagesComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return m, m.renderView()
case ToggleToolDetailsMsg:
m.showToolDetails = !m.showToolDetails
- return m, m.renderView()
+ m.app.State.ShowToolDetails = &m.showToolDetails
+ return m, tea.Batch(m.renderView(), m.app.SaveState())
+ case ToggleThinkingBlocksMsg:
+ m.showThinkingBlocks = !m.showThinkingBlocks
+ m.app.State.ShowThinkingBlocks = &m.showThinkingBlocks
+ return m, tea.Batch(m.renderView(), m.app.SaveState())
case app.SessionLoadedMsg, app.SessionClearedMsg:
m.cache.Clear()
m.tail = true
@@ -561,32 +569,34 @@ func (m *messagesComponent) renderView() tea.Cmd {
if reverted {
continue
}
- text := "..."
+ if !m.showThinkingBlocks {
+ continue
+ }
if part.Text != "" {
- text = part.Text
+ text := part.Text
+ content = renderText(
+ m.app,
+ message.Info,
+ text,
+ casted.ModelID,
+ m.showToolDetails,
+ width,
+ "",
+ true,
+ []opencode.FilePart{},
+ []opencode.AgentPart{},
+ )
+ content = lipgloss.PlaceHorizontal(
+ m.width,
+ lipgloss.Center,
+ content,
+ styles.WhitespaceStyle(t.Background()),
+ )
+ partCount++
+ lineCount += lipgloss.Height(content) + 1
+ blocks = append(blocks, content)
+ hasContent = true
}
- content = renderText(
- m.app,
- message.Info,
- text,
- casted.ModelID,
- m.showToolDetails,
- width,
- "",
- true,
- []opencode.FilePart{},
- []opencode.AgentPart{},
- )
- content = lipgloss.PlaceHorizontal(
- m.width,
- lipgloss.Center,
- content,
- styles.WhitespaceStyle(t.Background()),
- )
- partCount++
- lineCount += lipgloss.Height(content) + 1
- blocks = append(blocks, content)
- hasContent = true
}
}
@@ -1006,6 +1016,10 @@ func (m *messagesComponent) ToolDetailsVisible() bool {
return m.showToolDetails
}
+func (m *messagesComponent) ThinkingBlocksVisible() bool {
+ return m.showThinkingBlocks
+}
+
func (m *messagesComponent) GotoTop() (tea.Model, tea.Cmd) {
m.viewport.GotoTop()
return m, nil
@@ -1202,11 +1216,23 @@ func NewMessagesComponent(app *app.App) MessagesComponent {
vp.MouseWheelDelta = 4
}
+ // Default to showing tool details, hidden thinking blocks
+ showToolDetails := true
+ if app.State.ShowToolDetails != nil {
+ showToolDetails = *app.State.ShowToolDetails
+ }
+
+ showThinkingBlocks := false
+ if app.State.ShowThinkingBlocks != nil {
+ showThinkingBlocks = *app.State.ShowThinkingBlocks
+ }
+
return &messagesComponent{
- app: app,
- viewport: vp,
- showToolDetails: true,
- cache: NewPartCache(),
- tail: true,
+ app: app,
+ viewport: vp,
+ showToolDetails: showToolDetails,
+ showThinkingBlocks: showThinkingBlocks,
+ cache: NewPartCache(),
+ tail: true,
}
}