- useInput now calls app.exit() for kitty Ctrl+C when exitOnCtrlC=true
- Add PTY test and fixture branch for kittyCtrlCExit scenario
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Fix lifecycle test imports to use @vue-tui/runtime/internal
- Add internal.ts exports for kitty-keyboard functions (Task 3.6b)
- Fix capslock-empty fixture to not check key.capsLock modifier flag
- Add render-level mount/unmount integration tests (createApp path)
- Add query response suppression PTY test with queryThenKey fixture
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Note uppercase test uses Ink's codepoint-65 form (terminal variant)
- Specify ignore?: boolean on Keypress type
- Update late-response description to use ignore flag path
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Filter \x1b[?<digits>u in parseKeypress to swallow terminal capability
responses that leak to useInput via late-response or dual-listener race.
Add 2 unit tests for the filter.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Controller does not acquire/release raw mode — matches Ink's approach.
Detection may time out in cooked mode; auto mode degrades gracefully.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Fix test file paths to match co-located convention (src/io/, not tests/io/)
- Remove contradictory "no conflict" wording before race condition note
- Fix late-response test description: bytes flow to input (harmless), not "discarded"
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>