23 Commits

  • test: converge smoke checks into xunit suite
    - migrate remaining text and component smoke assertions into TinyTUI.Tests
    
    - remove legacy TextChecks and ComponentChecks projects from solution
    
    - update README test guidance to use the unified xUnit suite
  • feat: add slash command argument autocomplete
    - support argument completion callbacks on slash commands
    
    - apply selected argument suggestions without rewriting command names
    
    - add autocomplete provider regression tests
  • feat: add file path autocomplete provider
    - support regular and attachment path completions
    
    - preserve quoted path prefixes and directory suffixes
    
    - add regression coverage for path autocomplete application
  • feat: support key release opt-in dispatch
    - keep parsed Kitty release events available to runtime listeners
    
    - filter key release before focused component dispatch unless component opts in
    
    - cover default filtering, opt-in dispatch, and keybinding non-match behavior
  • feat: add settings list component
    - add SettingsList with search, value cycling and submenu delegation
    
    - add fuzzy filtering helper for settings search
    
    - cover settings list rendering and input behavior with regression tests
  • feat: add owned component disposal lifecycle
    - add explicit runtime APIs for owned root and overlay components
    
    - dispose owned IDisposable component subtrees once after final unmount
    
    - cover owned and non-owned lifecycle behavior with runtime tests
  • fix: clear focus when removing focused component subtree
    - detect focused components inside removed runtime subtrees
    
    - clear stale focus for dynamic composite removals
    
    - add runtime regression tests for removed focused children
  • feat: add mutable composite component lifecycle contract
    - add generic child change events for dynamic composite components
    
    - update runtime mount tracking to subscribe through the common contract
    
    - cover third-party dynamic composite keybinding theme and context injection
  • feat: add runtime component lifecycle context
    - add mount unmount and runtime context change callbacks for components
    
    - route theme and keybinding runtime injection through the lifecycle path
    
    - cover root overlay dynamic container and duplicate mount behavior with tests
  • feat: add generic component child traversal
    - add a component child enumeration contract for composite components
    
    - make runtime mount context recurse through the shared contract
    
    - cover third-party composite keybinding and theme injection
  • feat: add runtime theme context
    - add runtime-level theme ownership and change notification
    
    - inject shared theme into mounted and dynamically added components
    
    - cover theme injection and switching with regression tests
  • feat: inject runtime keybindings into dynamic container children
    - add runtime-aware keybinding injection for children added after mount
    
    - keep recursive injection for built-in Container and Box component trees
    
    - cover dynamic container child keybinding behavior with runtime tests
  • feat: add terminal keyboard protocol negotiation
    - negotiate Kitty keyboard protocol during terminal session startup
    
    - fallback to modifyOtherKeys when Kitty protocol is unavailable
    
    - cover protocol startup and restore behavior with terminal session tests
  • feat: expand terminal key protocol parsing
    - add key event phase metadata for parsed input events
    
    - parse Kitty CSI-u and modifyOtherKeys style key sequences
    
    - filter release events from keybinding dispatch by default
    
    - cover Shift+Tab and Kitty key parsing with xUnit regressions
  • feat: share runtime keybindings with components
    - add component-level keybinding injection contract
    
    - inject runtime keybinding registry when components enter runtime or overlay
    
    - cover focused component behavior with shared runtime keybindings
  • feat: add runtime input listeners
    - add runtime-level input listener registration with consume support
    
    - expose runtime keybinding registry for global shortcuts
    
    - cover input interception and focus dispatch behavior with tests
  • feat: add tui test infrastructure
    - add xunit regression project with virtual terminal output
    
    - cover text input overlay rendering and component checks
  • feat: add terminal image foundation
    - add terminal image service and image component
    
    - protect image lines and clean up kitty image ids
  • feat: add autocomplete foundation
    - add reusable autocomplete provider contracts
    
    - integrate slash command completions with editor select list
  • feat: add component infrastructure
    - add focusable runtime state and invalidate entry
    
    - add theme primitives and reusable components
    
    - add component checks for focus and cancellation
  • feat: improve ansi text utilities
    - measure text with grapheme-aware terminal widths
    
    - add ansi-aware truncate slice and wrap checks
  • revert: remove early component tests
    - remove temporary TinyTUI.Tests project
    
    - keep example as the current manual verification surface
  • test: add component behavior coverage
    - add lightweight component test runner
    
    - cover markdown loader select list and editor behavior