From 7143d22a83a92c3dc3bc32fa49ba3af4af3ecb76 Mon Sep 17 00:00:00 2001 From: Brooklyn Nicholson Date: Sun, 26 Apr 2026 04:49:56 -0500 Subject: [PATCH] fix(tui): keep queued sends in queue UI --- ui-tui/src/app/useMainApp.ts | 1 + ui-tui/src/app/useSubmission.ts | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/ui-tui/src/app/useMainApp.ts b/ui-tui/src/app/useMainApp.ts index 4d6dfc1957..d46744a032 100644 --- a/ui-tui/src/app/useMainApp.ts +++ b/ui-tui/src/app/useMainApp.ts @@ -395,6 +395,7 @@ export function useMainApp(gw: GatewayClient) { const next = composerActions.dequeue() if (next) { + patchUiState({ busy: true, status: 'running…' }) sendQueued(next) } }, [ui.sid, ui.busy, composerActions, composerRefs, sendQueued]) diff --git a/ui-tui/src/app/useSubmission.ts b/ui-tui/src/app/useSubmission.ts index 42129cb7f3..b499bfd8f7 100644 --- a/ui-tui/src/app/useSubmission.ts +++ b/ui-tui/src/app/useSubmission.ts @@ -74,10 +74,10 @@ export function useSubmission(opts: UseSubmissionOptions) { }, [composerState.input, composerState.inputBuf]) const send = useCallback( - (text: string) => { + (text: string, showUserMessage = true) => { const expand = expandSnips(composerState.pasteSnips) - const startSubmit = (displayText: string, submitText: string) => { + const startSubmit = (displayText: string, submitText: string, showUserMessage = true) => { const sid = getUiState().sid if (!sid) { @@ -87,7 +87,9 @@ export function useSubmission(opts: UseSubmissionOptions) { turnController.clearStatusTimer() maybeGoodVibes(submitText) setLastUserMsg(text) - appendMessage({ role: 'user', text: displayText }) + if (showUserMessage) { + appendMessage({ role: 'user', text: displayText }) + } patchUiState({ busy: true, status: 'running…' }) turnController.bufRef = '' turnController.interrupted = false @@ -114,7 +116,7 @@ export function useSubmission(opts: UseSubmissionOptions) { gw.request('input.detect_drop', { session_id: sid, text }) .then(r => { if (!r?.matched) { - return startSubmit(text, expand(text)) + return startSubmit(text, expand(text), showUserMessage) } if (r.is_image) { @@ -123,9 +125,9 @@ export function useSubmission(opts: UseSubmissionOptions) { turnController.pushActivity(`detected file: ${r.name}`) } - startSubmit(r.text || text, expand(r.text || text)) + startSubmit(r.text || text, expand(r.text || text), showUserMessage) }) - .catch(() => startSubmit(text, expand(text))) + .catch(() => startSubmit(text, expand(text), showUserMessage)) }, [appendMessage, composerActions, composerState.pasteSnips, gw, maybeGoodVibes, setLastUserMsg, sys] ) @@ -192,9 +194,9 @@ export function useSubmission(opts: UseSubmissionOptions) { return interpolate(text, send) } - send(text) + send(text, composerRefs.queueRef.current.length === 0) }, - [interpolate, send, shellExec] + [composerRefs, interpolate, send, shellExec] ) const dispatchSubmission = useCallback(