From 936f4cb0c661cd48718fb5cd7dace646f9e10715 Mon Sep 17 00:00:00 2001 From: adamdotdevin <2363879+adamdottv@users.noreply.github.com> Date: Thu, 31 Jul 2025 11:36:08 -0500 Subject: [PATCH] fix: permission state hangs --- packages/tui/internal/app/app.go | 3 +++ packages/tui/internal/components/chat/messages.go | 3 +++ packages/tui/internal/tui/tui.go | 3 +-- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/tui/internal/app/app.go b/packages/tui/internal/app/app.go index 672bc0ee..7ef31fd5 100644 --- a/packages/tui/internal/app/app.go +++ b/packages/tui/internal/app/app.go @@ -75,6 +75,9 @@ type SetEditorContentMsg struct { type FileRenderedMsg struct { FilePath string } +type PermissionRespondedToMsg struct { + Response opencode.SessionPermissionRespondParamsResponse +} func New( ctx context.Context, diff --git a/packages/tui/internal/components/chat/messages.go b/packages/tui/internal/components/chat/messages.go index 412d2c4c..db8e7cf6 100644 --- a/packages/tui/internal/components/chat/messages.go +++ b/packages/tui/internal/components/chat/messages.go @@ -200,6 +200,9 @@ func (m *messagesComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) { case opencode.EventListResponseEventPermissionUpdated: m.tail = true return m, m.renderView() + case app.PermissionRespondedToMsg: + m.tail = true + return m, m.renderView() case renderCompleteMsg: m.partCount = msg.partCount m.lineCount = msg.lineCount diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go index 0b87872f..3d08c2af 100644 --- a/packages/tui/internal/tui/tui.go +++ b/packages/tui/internal/tui/tui.go @@ -121,7 +121,6 @@ func (a Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } else { a.app.CurrentPermission = opencode.Permission{} } - response := opencode.SessionPermissionRespondParamsResponseOnce switch keyString { case "enter": @@ -144,7 +143,7 @@ func (a Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return toast.NewErrorToast("Failed to respond to permission request") } slog.Debug("Responded to permission request", "response", resp) - return nil + return app.PermissionRespondedToMsg{Response: response} } } }