Skip to content

refactor: migrate TUI from Ink to OpenTUI with Bun runtime#114

Open
avoidwork wants to merge 5 commits into
mainfrom
feat/refactor-tui-to-opentui
Open

refactor: migrate TUI from Ink to OpenTUI with Bun runtime#114
avoidwork wants to merge 5 commits into
mainfrom
feat/refactor-tui-to-opentui

Conversation

@avoidwork
Copy link
Copy Markdown
Owner

Description

Migrate the TUI (Terminal User Interface) from Ink to OpenTUI. Replaces ink, ink-scroll-view, marked, and marked-terminal with @opentui/core and @opentui/react (plus react peer dependency). The interactive TUI now requires Bun at runtime.

Type of Change

  • Breaking change (fix or feature which would cause existing functionality to not work as expected)

Breaking Changes

  • node index.js --mode interactive no longer works; use bun index.js --mode interactive
  • Removed dependencies: ink, ink-scroll-view, marked, marked-terminal
  • Added dependencies: @opentui/core, @opentui/react, react
  • JSX element names changed from PascalCase (<Box>, <Text>) to lowercase (<box>, <text>)
  • Color props changed from named strings ("green") to hex values ("#00FF00")
  • Key bindings changed from boolean props (key.upArrow) to canonical names (key.name === "up")
  • Hand-rolled scroll utilities removed (replaced by native <scrollbox stickyScroll>)
  • Blinking cursor animation removed (static cursor display only)
  • marked + marked-terminal replaced by native <markdown> component

Testing

  • 832 unit tests pass via node --test (Node.js for tooling/lint)
  • TUI component tests run via bun test (Bun for JSX support)
  • oxlint and oxfmt pass with no warnings

Coverage

  • 100% line coverage maintained (TUI files excluded from Node coverage run)

@avoidwork avoidwork self-assigned this Jun 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant