These docs describe the main branch, including unreleased changes. Read the 0.8.0 docs.

Releases

Each release page has the release notes and the API changes of the published type declarations. Release notes start at 0.5.0. The API history starts at 0.3.0.

0.8#

  • 0.8.0A small change repaints only the rows around it, animations share one clock, and ScrollBox scrolls in native code.

0.7#

  • 0.7.0Edits in Textarea, Input, and text views lay out only the lines that they change, and the native scene work budget and reflected hooks are removed.

0.6#

  • 0.6.8Sideways wheel steps no longer shift truncated text with `wrapMode` set to `"none"` by one column.
  • 0.6.7Bidirectional marks and other default-ignorable code points take no cell, so rows that contain them stay aligned with the terminal.
  • 0.6.6Assigning `null` or `undefined` to a layout property restores its default, also when React or Solid removes a style prop.
  • 0.6.5Renderables add the Yoga style getters, such as `getMaxWidth()` and `getPadding(edge)`, that replace `getLayoutNode()` style reads.
  • 0.6.4Kitty images in iTerm2 no longer go black or blank when they move, scroll, or change position in the layout.
  • 0.6.3The renderer sends OSC 7501 program status reports, so a terminal can show if a program is working, blocked, done, or failed.
  • 0.6.2The renderer resets text attributes at the end of a row, so bold or underlined text at the right edge no longer leaks into later cells.
  • 0.6.1Editors keep control characters and show them as notation, such as `^L`, instead of throwing `NativeError`.
  • 0.6.0Layout, hit testing, and painting move into a native scene, and native rendering resources now belong to an owner Context.

0.5#

  • 0.5.17OpenTUI now enables OSC 8 hyperlinks in xterm.js, VS Code, Zed, mintty, and VTE 0.52.2 or newer.
  • 0.5.16Updates the pinned @babel/core in @opentui/solid to 7.29.7, which fixes GHSA-4x5r-pxfx-6jf8.
  • 0.5.15Adds a `preserve` option to runtime plugin support so host-provided modules keep their bare specifiers.
  • 0.5.14Fixes a missing repaint after a terminal resize that returns to its original size.
  • 0.5.13Fixes a text buffer memory leak, a layout rerender loop, and tmux capability replies reaching the wrong pane.
  • 0.5.12Adds `textAlign` for text renderables and more mouse pointer styles, and fixes several rendering and cleanup issues.
  • 0.5.11Core plays raw PCM audio streams, and markdown links stay clickable in terminals that support OSC 8.
  • 0.5.10Kitty image streaming uses less CPU, and native libraries now ship stripped with separate debug symbols.
  • 0.5.9Wrapped text layout is faster and splits CJK and emoji correctly, and `EditBuffer` gains tab width methods.
  • 0.5.8Adds the `"unicode-wide"` width method to match Ghostty 1.3 wide grapheme widths.
  • 0.5.7Double-click selects a word, triple-click selects a line, and selection gains configurable cell or boundary occupancy.
  • 0.5.6Adds `EmbeddedTerminalRenderable`, which renders a Ghostty-backed terminal inside an OpenTUI layout.
  • 0.5.4Fixes stale mouse input after shutdown, GNU Screen clipboard copies, and forced Sixel images on Kitty.
  • 0.5.3Fixes a crash in core when text with a transparent background is drawn one column to the left of the buffer.
  • 0.5.2Adds a cross-platform clipboard API for the host and the terminal, and lets ImageRenderable accept a NativeImage.
  • 0.5.1Core converts PNG images with embedded ICC profiles to sRGB and accepts trailing whitespace after PNG data.
  • 0.5.0Adds native image rendering with `ImageRenderable` and `NativeImage`, plus audio input capture and renderer error events.

0.4#

  • 0.4.5API: 5 added, 1 removed.
  • 0.4.4API: 146 added, 0 removed.
  • 0.4.3API: 23 added, 13 removed.
  • 0.4.2API: 13 added, 1 removed.
  • 0.4.1API: 726 added, 1 removed.
  • 0.4.0API: 26 added, 17 removed.

0.3#

  • 0.3.4API: 2 added, 0 removed.
  • 0.3.3API: 279 added, 266 removed.
  • 0.3.2API: 9 added, 0 removed.
  • 0.3.1API: 3 added, 0 removed.
  • 0.3.0API: 4839 added, 0 removed.