hermes-agent/ui-tui/src/app
Ben e71f9ad0bb fix(tui): close busy-flag race that stuck queue-mode back-to-back sends
Under display.busy_input_mode: queue, sending two messages back-to-back
hung the session on 'Analyzing…' until a manual Ctrl+C.

The submit path only marked the session busy inside the .then of an
async input.detect_drop RPC. dispatchSubmission routes queue-vs-send on
getUiState().busy, so a second Enter inside that RPC window read
busy===false and raced a second prompt.submit down the send path
instead of enqueuing locally. The gateway accepts the mid-turn submit
as a success ({status:'queued'}, not an error), and the client's only
re-queue recovery is gated on catching a 'session busy' error — which
never fires — so the message became invisible to the client-side drain
effect and the UI stayed busy forever.

Extract the ready-prompt submit into a pure submissionCore module and
mark the session busy synchronously at the choke point, before the
detect_drop round-trip, closing the gap for every caller (mainline
submit, queue-edit picks, drain, interpolation). Verified the real
gateway already queues+drains both turns correctly, so the fix is
purely client-side. Adds submissionCore.test.ts whose regression
assertions fail without the synchronous busy and pass with it.
2026-07-01 00:24:40 -07:00
..
slash feat(journey): CLI + TUI learning timeline (/journey) 2026-06-30 04:44:58 -05:00
createGatewayEventHandler.ts feat(moa): render reference-model blocks in TUI and desktop, not just CLI (#53855) 2026-06-27 18:46:20 -07:00
createSlashHandler.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
delegationStore.ts feat(tui): subagent spawn observability overlay 2026-04-22 10:38:17 -05:00
gatewayContext.tsx feat: add inline token count etc and fix venv 2026-04-15 10:20:56 -05:00
gatewayRecovery.ts fix(tui): auto-recover session on unexpected gateway death (+ persist lifecycle breadcrumbs) (#35893) 2026-05-31 10:36:57 -05:00
inputSelectionStore.ts fix(tui): mouse + keyboard text selection in the composer (#16732) 2026-04-27 16:43:48 -07:00
interfaces.ts feat(journey): CLI + TUI learning timeline (/journey) 2026-06-30 04:44:58 -05:00
overlayStore.ts feat(journey): CLI + TUI learning timeline (/journey) 2026-06-30 04:44:58 -05:00
petFlashStore.ts feat(tui): add $petBox store for the pet's footprint 2026-06-30 15:41:44 -05:00
scroll.ts fix(tui): refresh scroll height at cached bottom 2026-05-07 05:48:19 -07:00
setupHandoff.ts feat(tui): /model and /setup slash commands with in-place CLI handoff 2026-04-17 10:58:18 -05:00
spawnHistoryStore.ts fix(tui): handle timeout/error subagent statuses in /agents (#26687) 2026-05-15 20:19:02 -05:00
submissionCore.ts fix(tui): close busy-flag race that stuck queue-mode back-to-back sends 2026-07-01 00:24:40 -07:00
turnController.ts feat(moa): render reference-model blocks in TUI and desktop, not just CLI (#53855) 2026-06-27 18:46:20 -07:00
turnStore.ts chore(tui): remove dead branch cleanup code 2026-04-26 21:54:24 -05:00
uiStore.ts fix: stop reporting cache-hit rate and cost across all UI surfaces (#52717) 2026-06-25 15:21:22 -07:00
useComposerState.ts fix(cli): restore fallback paste collapse + handle long single-line pastes (#32447) 2026-05-25 23:49:01 -07:00
useConfigSync.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
useInputHandlers.ts feat(journey): CLI + TUI learning timeline (/journey) 2026-06-30 04:44:58 -05:00
useLongRunToolCharms.ts chore(tui): clean live progress lint 2026-04-26 15:42:07 -05:00
useMainApp.ts fix(tui): coalesce drag-resize reflow + harden resize-burst heal coverage 2026-06-30 16:47:39 -07:00
usePet.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
useSessionLifecycle.ts Settle TUI resume scroll after hydration 2026-06-26 01:05:26 -07:00
useSubmission.ts fix(tui): close busy-flag race that stuck queue-mode back-to-back sends 2026-07-01 00:24:40 -07:00