52 Commits
Author SHA1 Message Date
chuan c435df9fcd test: converge smoke checks into xunit suite
ci / restore build format test pack (push) Failing after 22s
- 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
2026-06-04 10:15:57 +08:00
chuan d930e46bd3 chore: add TinyTUI benchmark pressure scenarios
- add benchmark project for rendering text overlay markdown and image-line paths

- document benchmark usage in README

- include benchmark project in solution
2026-06-04 10:06:22 +08:00
chuan 602e271f6c 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
2026-06-04 09:59:11 +08:00
chuan f03d269bb6 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
2026-06-04 09:50:04 +08:00
chuan a93233456f 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
2026-06-04 09:43:42 +08:00
chuan 334e98f596 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
2026-06-04 09:39:40 +08:00
chuan 0425585637 feat: add owned component disposal lifecycle
ci / restore build format test pack (push) Failing after 21s
- 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
2026-06-04 04:00:43 +08:00
chuan 1bcb8d0b5e 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
2026-06-04 03:52:37 +08:00
chuan 7c254fd9d7 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
2026-06-04 03:47:00 +08:00
chuan 3154cc4ebf 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
2026-06-04 03:40:03 +08:00
chuan 49a234ba7c 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
2026-06-04 03:32:19 +08:00
chuan d877612354 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
2026-06-04 03:27:07 +08:00
chuan a0d9d6c323 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
2026-06-04 03:20:00 +08:00
chuan af9ad109e1 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
2026-06-04 03:14:05 +08:00
chuan e78ce2badf 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
2026-06-04 03:05:38 +08:00
chuan d84ca3a313 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
2026-06-04 02:54:07 +08:00
chuan 60bce3c12c 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
2026-06-04 02:47:25 +08:00
chuan 54a71c1645 chore: add package and ci foundation
- add README and public API boundary documentation

- configure package metadata and CI validation
2026-06-04 02:40:53 +08:00
chuan b26104fe95 feat: add tui test infrastructure
- add xunit regression project with virtual terminal output

- cover text input overlay rendering and component checks
2026-06-04 02:35:52 +08:00
chuan e2d534170f feat: add terminal image foundation
- add terminal image service and image component

- protect image lines and clean up kitty image ids
2026-06-04 02:28:58 +08:00
chuan 41c0d91d77 feat: add autocomplete foundation
- add reusable autocomplete provider contracts

- integrate slash command completions with editor select list
2026-06-04 02:23:06 +08:00
chuan 83967fa691 feat: add component infrastructure
- add focusable runtime state and invalidate entry

- add theme primitives and reusable components

- add component checks for focus and cancellation
2026-06-04 02:17:07 +08:00
chuan 0be34a9c16 feat: improve ansi text utilities
- measure text with grapheme-aware terminal widths

- add ansi-aware truncate slice and wrap checks
2026-06-04 02:10:46 +08:00
chuan 48fa673daf feat: improve overlay composition
- preserve base content around overlay regions

- add ANSI-aware column slicing for overlay segments

- align overlay rows with bottom viewport
2026-06-04 01:55:13 +08:00
chuan b22030c76d feat: improve render pipeline
- add render frame viewport state

- wrap render writes in synchronized output

- reset terminal styles per rendered line
2026-06-04 01:51:17 +08:00
chuan 9cef923d55 feat: add keybinding registry
- add key id and keybinding registry defaults

- route input components through action matching
2026-06-04 01:45:26 +08:00
chuan e7b659fb8f feat: add terminal session lifecycle
- add replaceable terminal session abstraction

- manage terminal modes on start and stop

- route runtime and example through terminal session
2026-06-04 01:39:45 +08:00
chuan 31766b2a78 feat: improve editor layout flow
- split editor implementation by responsibility

- add editor submit events and soft wrap layout

- support modified enter input for editor submission
2026-06-04 01:24:22 +08:00
chuan 895d7401fe feat: update editor keyboard 2026-06-04 01:13:45 +08:00
chuan 18e1f90f62 feat: upgrade select list items
- add SelectItem model with labels and descriptions

- support filtering, wrap-around, scroll info, and selection change

- demonstrate select list filtering in Example
2026-06-04 01:01:28 +08:00
chuan ea8a5b08d7 chore: move core file to new folder 2026-06-04 00:58:25 +08:00
chuan 47ce443327 feat: improve editor interactions
- add editor history, word navigation, and undo redo

- preserve overlay cursor focus when editor is open

- demonstrate editor shortcuts in Example
2026-06-04 00:56:38 +08:00
chuan 8a71a27944 feat: add overlay layout options
- add configurable overlay sizing and anchors

- support non-capturing overlays and focus handles

- demonstrate overlay options in Example
2026-06-04 00:44:28 +08:00
chuan 2ab090d724 feat: buffer terminal input sequences
- add stdin buffer for escape sequences and bracketed paste

- parse control keys and CSI modifier combinations

- simplify example to focus on interactive components
2026-06-04 00:37:20 +08:00
chuan 02ef36eff5 chore: udpate target 2026-06-04 00:24:48 +08:00
chuan e1ca256a07 revert: remove early component tests
- remove temporary TinyTUI.Tests project

- keep example as the current manual verification surface
2026-06-04 00:21:13 +08:00
chuan 7ffda66f7d test: add component behavior coverage
- add lightweight component test runner

- cover markdown loader select list and editor behavior
2026-06-04 00:14:38 +08:00
chuan a9297ba5cd feat: add advanced components
- add editor select list markdown and loader components

- update example to preview advanced components and overlay interactions
2026-06-04 00:12:01 +08:00
chuan d49c7644d0 chore: add some comments 2026-06-03 23:29:26 +08:00
chuan 1d8ad20315 feat: add overlay manager
- compose visible overlays into rendered lines

- add runtime APIs for showing and hiding overlays

- restore focus when overlays close

- add help overlay example
2026-06-03 23:19:48 +08:00
chuan 6da88b6a67 feat: position hardware cursor
- add cursor marker extraction for rendered lines

- move the terminal cursor after full and differential renders

- update input to use the real cursor instead of a block glyph
2026-06-03 23:07:28 +08:00
chuan e2311f6e99 feat: add basic components
- add text, box, and single-line input components

- support input change, submit, and cancel callbacks

- update example to compose the page from library components
2026-06-03 22:46:18 +08:00
chuan 9ec681b724 feat: add differential renderer
- track previous rendered lines and terminal size

- redraw only changed rows after the initial full render

- expose redraw counters in the example
2026-06-03 22:19:47 +08:00
chuan 7103f8acc0 feat: add terminal text measurer
- measure terminal display width for text and escape sequences

- truncate rendered lines to terminal columns

- add width and truncation examples
2026-06-03 22:14:35 +08:00
chuan d385348c62 feat: add full screen renderer
- implement renderer that clears and redraws all lines

- switch example to the library renderer
2026-06-03 22:03:42 +08:00
chuan ac1985bc5c feat: add tui runtime
- wire terminal input parsing to focused components

- render the root component tree through the renderer

- update example to exercise runtime dispatch
2026-06-03 22:00:24 +08:00
chuan 0fd4465aa8 feat: add default input parser
- define standard key names for normalized input events

- parse common terminal key sequences and bracketed paste

- update example to display parsed input events
2026-06-03 21:53:18 +08:00
chuan 0d9a36b6a6 feat: add console terminal io
- implement console-backed terminal input and resize polling

- implement console-backed terminal output helpers

- add example program for manual IO verification
2026-06-03 21:48:00 +08:00
chuan 3e60aa16ab docs: update agent instructions
- document commit message expectations

- require implementation summaries after code changes
2026-06-03 21:47:36 +08:00
chuan 49e368de72 feat: initialize interfaces and model 2026-06-03 21:35:48 +08:00