Commit Graph

4 Commits

  • feat(tui): hardware cursor positioning for IME support
    - Add Focusable interface for components that need hardware cursor positioning
    - Add CURSOR_MARKER (APC escape sequence) for marking cursor position in render output
    - Editor and Input components implement Focusable and emit marker when focused
    - TUI extracts cursor position from rendered output and positions hardware cursor
    - Track hardwareCursorRow separately from cursorRow for differential rendering
    - visibleWidth() and extractAnsiCode() now handle APC sequences
    - Update overlay-test.ts example to demonstrate Focusable usage
    - Add documentation for Focusable interface in docs/tui.md
    
    Closes #719, closes #525
  • feat(tui): add overlay compositing for ctx.ui.custom() (#558)
    Adds overlay rendering capability to the TUI, enabling floating modal
    components that render on top of existing content without clearing the screen.
    
    - Add showOverlay(), hideOverlay(), hasOverlay() methods to TUI
    - Implement ANSI-aware line compositing via extractSegments()
    - Support overlay stack (multiple overlays, later on top)
    - Add { overlay: true } option to ctx.ui.custom()
    - Add overlay-test.ts example extension
    
    Also fixes pre-existing bug where bash tool output cached visual lines
    at fixed terminal width, causing crashes on terminal resize.
    
    Co-authored-by: Nico Bailon <nico.bailon@gmail.com>