All Versions
Latest Version
Avg Release Cycle
4 days
Latest Release

Changelog History

  • v3.0.0 Changes

    ๐Ÿ— Build

    • ๐Ÿ’ฅ breaking: The library prefix is now back to "lib" (the default). This means non-cmake users should not link against "libftxui-dom" for instance.


    • Animations module! Components can implement the OnAnimation method and the animation::Animator to define some animated properties.
      • Menu now support animations.
      • Button now supports animations.
    • ๐Ÿ‘Œ Support SIGTSTP. (ctrl+z).
    • ๐Ÿ‘Œ Support task posting. ScreenInteractive::Post(Task).
    • Menu can now be used in the 4 directions, using MenuOption.direction.
    • Menu can display an animated underline, using MenuOption.underline.enabled.
    • Button is now taking the focus in frame.
    • ๐Ÿ’ฅ breaking All the options are now using a transform function.
    • ๐Ÿ’ฅ breaking The Toggle component is now implemented using Menu.
    • ๐Ÿ›  bugfix Container::Tab implements Focusable().
    • ๐Ÿ›  bugfix Improved default implementations of ComponentBase Focusable() and ActiveChild() methods.
    • ๐Ÿ›  bugfix Automatically convert '\r' keys into '\n' for Linux programs that do not send the correct code for the return key, like the 'bind'.
    • โž• Add decorator for components:
      • operator|(Component, ComponentDecorator)
      • operator|(Component, ElementDecorator)
      • operator|=(Component, ComponentDecorator)
      • operator|=(Component, ElementDecorator)
      • Add the Maybe decorator.
      • Add the CatchEvent decorator.
      • Add the Renderer decorator.
    • ๐Ÿ’ฅ breaking remove the "deprectated.hpp" header and Input support for wide string.


    • ๐Ÿ’ฅ breaking: The inverted decorator now toggle in the inverted attribute.
    • โž• Add gauge for the 4 directions. Expose the following API: cpp Element gauge(float ratio); Element gaugeLeft(float ratio); Element gaugeRight(float ratio); Element gaugeUp(float ratio); Element gaugeDown(float ratio); Element gaugeDirection(float ratio, GaugeDirection);
    • โž• Add separatorHSelector and separatorVSelector elements. This can be used to highlight an area.
    • โž• Add the automerge decorator. This makes separator characters to be merged with others nearby.
    • ๐Ÿ›  Fix the Table rendering function, to allow automerging characters.
    • ๐Ÿ›  Bugfix: The vscroll_indicator now computes its offset and size correctly.
    • โž• Add the operator|=(Element, Decorator)


    • Add: Color::Interpolate(lambda, color_a, color_b).
  • v2.0.0 Changes

    ๐Ÿ”‹ Features:


    • โž• Add the automerge to the Pixel bit field. This now controls which pixels are automatically merged.


    • โž• Add the Canvas class and ElementFrom('canvas') function. Together users of the library can draw using braille and block characters.
    • ๐Ÿ‘Œ Support flexbox dom elements. This is build symmetrically to the HTML one. All the following attributes are supported: direction, wrap, justify-content, align-items, align-content, gap
    • โž• Add the dom elements helper based on flexbox:
      • paragraph
      • paragraphAlignLeft
      • paragraphAlignCenter
      • paragraphAlignRight
      • paragraphAlignJustify
    • โž• Add the helper elements based on flexbox: hflow(), vflow().
    • โž• Add: focusPositionRelative and focusPosition
    • โž• Add Table constructor from 2D vector of Element, instead of string.


    • โž• Add the collapsible component.
    • โž• Add the ScreenInteractive::WithRestoredIO. This decorates a callback. This runs it with the terminal hooks temporarilly uninstalled. This is useful if you want to execute command using directly stdin/stdout/sterr.

    ๐Ÿ› Bug


    • The table horizontal and vertical separator are now correctly expanded.


    • Input shouldn't take focus when hovered by the mouse.
    • Modifying Input's during on_enter/on_change event is now working correctly.

    ๐Ÿ’ฅ Breaking changes:

    • The behavior of paragraph has been modified. It now returns en Element, instead of a list of elements.
  • v0.11.1

  • v0.11 Changes

    github workflow

    • โž• Add Windows ad MacOS artefacts.
    • ๐Ÿ”€ Merge all the workflows.

    ๐Ÿ› Bug

    • On Unix system, fallback to {80,25} screen dimension on failure.


    • Support for shared library, via BUILD_SHARED_LIBS option.
    • โž• Add library version and symlinks.
  • v0.10 Changes

    September 30, 2021

    ๐Ÿ› Bug

    • ๐Ÿ›  Fix the automated merge of borders.


    • ๐Ÿ— Table() class to build stylised table. See
    • vscroll_indicator. Show a scrollbar indicator on the right.
    • separatorEmpty. A separator drawing nothing.
    • ๐Ÿ›  separatorFixed. A separator drawing the provided character.


    • Maybe: Display an component conditionnally based on a boolean.
    • Dropdown: A dropdown select list.
  • v0.9 Changes

    September 26, 2021

    ๐Ÿš€ The initial release where changelog where written.

    This version includes:


    • ๐Ÿ’… Style:
      • Bold.
      • Blink.
      • Dim.
      • Inverted.
      • Underlined.
      • Foreground color.
      • Background color.
    • ๐Ÿ‘Œ Support for UTF8 unicode.
      • Full wide character: ๆต‹่ฏ•.
      • Combining characters: aโƒ’
    • A Stencil buffer.
    • ๐Ÿ”€ Automatically merge box drawing characters.
    • Detect terminal dimension.


    • Element:

      • text & vtext
      • separator and 5 variations.
      • gauge
      • border and 6 variations.
      • window
      • spinner
      • paragraph and hflow.
    • Layout:

      • hbox
      • vbox
      • dbox
      • gridbox
      • frame: Drawing inside a virtual area, potentially larger than the real one.
      • focus, select: scroll the inner view of a frame, to be in view.
      • flex & 8 variations. filler
    • Decorators:

      • bold
      • dim
      • inverted
      • blink
      • color
      • bgcolor
      • clearunder


    • Container:
      • Container::Vertical
      • Container::Horizontal
      • Container::Tab
    • Button
    • Checkbox
    • Input
    • Menu
    • MenuEntry
    • Radiobox
    • Toggle
    • Slider
    • Renderer & variations
    • CatchEvent


    • Fuzzer
    • โœ… Tests using gtest.
    • ๐Ÿ“š Doxygen documentation
    • IWYU
    • 52 examples.
    • ๐Ÿ‘Œ Support for WebAssembly.
    • ๐Ÿ‘Œ Support for Window and fallback for broken terminal.