From f7abcb4f018839177fb2c8e96353a5cf5d0ccffb Mon Sep 17 00:00:00 2001 From: Brooklyn Nicholson Date: Wed, 29 Apr 2026 15:50:02 -0500 Subject: [PATCH] fix(tui): ignore hidden reasoning stream segments Only keep the live progress area mounted for stream segments that can render under the current detail section visibility. --- ui-tui/src/app/useMainApp.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/ui-tui/src/app/useMainApp.ts b/ui-tui/src/app/useMainApp.ts index 7a4633a324..39b7c652ab 100644 --- a/ui-tui/src/app/useMainApp.ts +++ b/ui-tui/src/app/useMainApp.ts @@ -712,6 +712,7 @@ export function useMainApp(gw: GatewayClient) { s => sectionMode(s, ui.detailsMode, ui.sections, ui.detailsModeCommandOverride) !== 'hidden' ) const thinkingPanelVisible = sectionMode('thinking', ui.detailsMode, ui.sections, ui.detailsModeCommandOverride) !== 'hidden' + const toolsPanelVisible = sectionMode('tools', ui.detailsMode, ui.sections, ui.detailsModeCommandOverride) !== 'hidden' const showProgressArea = useTurnSelector(state => anyPanelVisible @@ -719,7 +720,16 @@ export function useMainApp(gw: GatewayClient) { ui.busy || state.outcome || state.streamPendingTools.length || - state.streamSegments.length || + state.streamSegments.some(segment => { + const thinking = Boolean(segment.thinking?.trim()) + const tools = Boolean(segment.tools?.length) + + if (segment.kind === 'trail' && !segment.text) { + return (thinkingPanelVisible && thinking) || (toolsPanelVisible && tools) + } + + return Boolean(segment.text?.trim()) || (thinkingPanelVisible && thinking) || (toolsPanelVisible && tools) + }) || state.subagents.length || state.tools.length || state.todos.length ||