hermes-agent-features/ui-tui/src/components
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
..
appChrome.tsx feat(tui): honor display.* flags in turn renderer, status bar, and event handler 2026-04-18 09:42:57 -05:00
appLayout.tsx feat(tui): honor display.* flags in turn renderer, status bar, and event handler 2026-04-18 09:42:57 -05:00
appOverlays.tsx feat(tui): add two-step SkillsHub overlay component 2026-04-18 09:42:57 -05:00
branding.tsx feat(tui): render per-MCP-server status block in SessionPanel 2026-04-18 09:42:57 -05:00
markdown.tsx fix(tui): wrap markdown links in Link so Ghostty/iTerm/kitty get real OSC 8 hyperlinks 2026-04-18 14:39:24 -05:00
maskedPrompt.tsx refactor(tui): /clean pass across ui-tui — 49 files, −217 LOC 2026-04-16 22:32:53 -05:00
messageLine.tsx chore: uptick 2026-04-18 15:17:42 -05:00
modelPicker.tsx refactor(tui): /clean pass across ui-tui — 49 files, −217 LOC 2026-04-16 22:32:53 -05:00
prompts.tsx chore(tui): prettier whitespace on files touched in this branch 2026-04-18 15:13:31 -05:00
queuedMessages.tsx refactor(tui): /clean pass across ui-tui — 49 files, −217 LOC 2026-04-16 22:32:53 -05:00
sessionPicker.tsx refactor(tui): /clean pass across ui-tui — 49 files, −217 LOC 2026-04-16 22:32:53 -05:00
skillsHub.tsx fix(tui): route /skills subcommands through skills.manage instead of curses slash.exec 2026-04-18 09:46:36 -05:00
textInput.tsx fix(tui): Ctrl+C with input selection actually preserves input (lift handler to app level) 2026-04-18 16:28:51 -05:00
themed.tsx refactor(tui): /clean pass across ui-tui — 49 files, −217 LOC 2026-04-16 22:32:53 -05:00
thinking.tsx fix(tui): approval flow + input ergonomics + selection perf 2026-04-17 10:37:48 -05:00