hermes-agent-features/ui-tui/src/app
Brooklyn Nicholson fb06bc67de fix(tui): Ctrl+C with input selection actually preserves input (lift handler to app level)
Previous fix in 9dbf1ec6 handled Ctrl+C inside textInput but the APP-level
useInputHandlers fires the same keypress in a separate React hook and ran
clearIn() regardless. Net effect: the OSC 52 copy succeeded but the input
wiped right after, so Brooklyn only noticed the wipe.

Lift the selection-aware Ctrl+C to a single place by threading input
selection state through a new nanostore (src/app/inputSelectionStore.ts).
textInput syncs its derived `selected` range + a clear() callback to the
store on every selection change, and the app-level Ctrl+C handler reads
the store before its clear/interrupt/die chain:

  - terminal-level selection (scrollback) → copy, existing behavior
  - in-input selection present → copy + clear selection, preserve input
  - input has text, no selection → clearIn(), existing behavior
  - empty + busy → interrupt turn
  - empty + idle → die

textInput no longer has its own Ctrl+C block; keypress falls through to
app-level like it did before 9dbf1ec6.
2026-04-18 16:28:51 -05:00
..
slash fix(tui): render /skills browse as a formatted Panel instead of raw JSON 2026-04-18 15:22:43 -05:00
createGatewayEventHandler.ts feat(tui): honor display.* flags in turn renderer, status bar, and event handler 2026-04-18 09:42:57 -05:00
createSlashHandler.ts fix(tui): slash.exec _pending_input commands, tool ANSI, terminal title 2026-04-18 09:30:48 -07:00
gatewayContext.tsx feat: add inline token count etc and fix venv 2026-04-15 10:20:56 -05:00
inputSelectionStore.ts fix(tui): Ctrl+C with input selection actually preserves input (lift handler to app level) 2026-04-18 16:28:51 -05:00
interfaces.ts feat(tui): add skillsHub overlay state wiring 2026-04-18 09:42:57 -05:00
overlayStore.ts feat(tui): add skillsHub overlay state wiring 2026-04-18 09:42:57 -05:00
setupHandoff.ts feat(tui): /model and /setup slash commands with in-place CLI handoff 2026-04-17 10:58:18 -05:00
turnController.ts fix(tui): strip <think>…</think> tags from assistant content and route to reasoning panel 2026-04-18 14:46:38 -05:00
turnStore.ts feat(tui): interleave tool rows into live assistant turns 2026-04-17 11:33:29 -05:00
uiStore.ts feat(tui): read display.streaming / show_reasoning / show_cost / inline_diffs from config 2026-04-18 09:42:57 -05:00
useComposerState.ts feat(tui): persist large pastes to ~/.hermes/pastes/ via paste.collapse 2026-04-18 09:42:57 -05:00
useConfigSync.ts feat(tui): read display.streaming / show_reasoning / show_cost / inline_diffs from config 2026-04-18 09:42:57 -05:00
useInputHandlers.ts fix(tui): Ctrl+C with input selection actually preserves input (lift handler to app level) 2026-04-18 16:28:51 -05:00
useLongRunToolCharms.ts refactor(tui): /clean pass across ui-tui — 49 files, −217 LOC 2026-04-16 22:32:53 -05:00
useMainApp.ts fix(tui): slash.exec _pending_input commands, tool ANSI, terminal title 2026-04-18 09:30:48 -07:00
useSessionLifecycle.ts fix(tui): tighten /resume render, follow-up to 42721dbe 2026-04-17 11:33:14 -05:00
useSubmission.ts refactor(tui): /clean pass across ui-tui — 49 files, −217 LOC 2026-04-16 22:32:53 -05:00