Releases: ArthurSonzogni/FTXUI
Releases · ArthurSonzogni/FTXUI
v6.1.9
Build
If all goes well (pending), ftxui should appear in the Bazel central repository.
It can be imported into your project using the following lines:
MODULE.bazel
bazel_dep(name = "ftxui", version = "6.1.9")Thanks @robinlinden and @kcc for the reviews.
dom
- Bugfix: Restore the
dboxbehavior from ftxui 5.0.0. To apply bgcolor
blending between the two layers, a newdboxBlendwill be added.
v6.1.8
v6.0.2
v6.0.1
v6.0.0
6.0.0 (2025-03-23)
Please do not use. Prefer v6.0.2 or newer.
Component
- Feature: Add support for raw input. Allowing more keys to be detected.
- Feature: Add
ScreenInteractive::ForceHandleCtrlC(false)to allow component
to fully override the defaultCtrl+Chandler. - Feature: Add
ScreenInteractive::ForceHandleCtrlZ(false)to allow component
to fully override the defaultCtrl+Zhandler. - Feature: Add
Mouse::WeelLeftandMouse::WeelRightevents on supported
terminals. - Feature: Add
Event::DebugString(). - Feature: Add support for
Input's insert mode. AddInputOption::insert
option. Added by @mingsheng13. - Feature: Add
DropdownOptionto configure the dropdown. See #826. - Feature: Add support for Selection. Thanks @clement-roblot. See #926.
- See
ScreenInteractive::GetSelection(). - See
ScreenInteractive::SelectionChange(...)listener.
- See
- Bugfix/Breaking change:
Mouse transition:- Detect when the mouse move, as opposed to being pressed.
The Mouse::Moved motion was added. - Dragging the mouse with the left button pressed now avoids activating
multiple checkboxes. - A couple of components are now activated when the mouse is pressed,
as opposed to being released.
This fixes: #773
This fixes: #792
- Detect when the mouse move, as opposed to being pressed.
- Bugfix: mouse.control is now reported correctly.
- Feature: Add
ScreenInteractive::FullscreenPrimaryScreen(). This allows
displaying a fullscreen component on the primary screen, as opposed to the
alternate screen. - Bugfix:
Inputonchangewas not called on backspace or delete key.
Fixed by @chrysante in chrysante in PR #776. - Bugfix: Propertly restore cursor shape on exit. See #792.
- Bugfix: Fix cursor position in when in the last column. See #831.
- Bugfix: Fix
ResizeableSplitkeyboard navigation. Fixed by #842. - Bugfix: Fix
Menufocus. See #841 - Feature: Add
ComponentBase::Index(). This allows to get the index of a
component in its parent. See #932 - Feature: Add
EntryState::index. This allows to get the index of a menu entry.
See #932 - Feature: Add
SliderOption::on_change. This allows to set a callback when the
slider value changes. See #938. - Bugfix: Handle
Dropdownwith no entries. - Bugfix: Fix crash in
LinearGradientdue to float precision and an off-by-one
mistake. See #998.
Dom
- Feature: Add
italicdecorator. For instance:auto italic_text = text("Italic text") | italic;
Proposed by @KenReneris in #1009.auto italic_text = italic(text("Italic text"));
- Feature: Add
hscroll_indicator. It display an horizontal indicator
reflecting the current scroll position. Proposed by @ibrahimnasson in
issue 752 - Feature: Add
extend_beyond_screenoption toDimension::Fit(..), allowing
the element to be larger than the screen. Proposed by @LordWhiro. See #572 and
#949. - Feature: Add support for Selection. Thanks @clement-roblot. See #926.
- See
selectionColordecorator. - See
selectionBackgroundColordecorator. - See
selectionForegroundColordecorator. - See
selectionStyle(style)decorator. - See
selectionStyleResetdecorator.
- See
- Breaking change: Change how "focus"/"select" are handled. This fixes the
behavior.
Screen
- Feature: Add
Box::IsEmpty(). - Feature: Color transparency
- Add
Color::RGBA(r,g,b,a). - Add
Color::HSVA(r,g,b,a). - Add
Color::Blend(Color). - Add
Color::IsOpaque()
- Add
Util
- Feature: Support arbitrary
AdapterforConstStringListRef. See #843.
Build
- Support for cmake's "unity/jumbo" builds. Fixed by @ClausKlein.
v5.0.0
Component
- Breaking: MenuDirection enum is renamed Direction
- Breaking: GaugeDirection enum is renamed Direction
- Breaking: Direction enum is renamed WidthOrHeight
- Breaking: Remove
ComponentBasecopy constructor/assignment. - Breaking: MenuOption::entries is renamed MenuOption::entries_option.
- Breaking:
Ref<{Component}Option>becomes{Component}Optionin component constructors. - Feature:
ResizeableSplitnow support arbitrary element as a separator. - Feature:
inputis now supporting multiple lines. - Feature:
inputstyle is now customizeable. - Bugfix: Support F1-F5 from OS terminal.
- Feature: Add struct based constructor:
Component Button(ButtonOption options); Component Checkbox(CheckboxOption options); Component Input(InputOption options); Component Menu(MenuOption options); Component MenuEntry(MenuEntryOption options); Component Radiobox(RadioboxOption options); Component Slider(SliderOption<T> options); Component ResizableSplit(ResizableSplitOption options);
- Feature: Add
ScreenInteractive::TrackMouse(false)disable mouse support.
Dom
- Feature: Add
hyperlinkdecorator. For instance:See the OSC 8 page.auto link = text("Click here") | hyperlink("https://github.com/FTXUI")
FTXUI support proposed by @aaleino in #662.
Screen
- Breaking:
WordBreakPropertybecomes a uint8_t enum. This yields a 0.8%
performance improvement. - Breaking: Remove user defined Pixel constructor and equality operator.
- Performance: 19% faster on benchmarks.
Build
- Check version compatibility when using cmake find_package()
- Add
FTXUI_DEV_WARNINGoptions to turn on warnings when building FTXUI - Turn OFF by default
FTXUI_BUILD_DOCS - Turn OFF by default
FTXUI_BUILD_EXAMPLE
Contributors
@ArthurSonzogni, @BurningEnlightenment, @GermanAizek, @LeeKyuHyuk,
@LostInCompilation, @ProkopRandacek, @Ruebled, @SpaceIm, @StefanRvO, @avighnac,
@cblack-dev, @clement-roblot, @dev-null-undefined, @hzeller , @jubalh, @lefticus
, @lexika979, @mavam, @mingsheng13, @mr-mocap, @niosus, @p5quared, @robinlinden, @v1nns, @yrashk
v4.1.1
Component
- Fix: Support arrow keys in application mode
- Fix: Remove useless new line when using an alternative screen.
Dom
- Feature: Add the dashed style for border and separator:
- See
DASHEDenum, andseparatorDashed(),borderDashed()functions.
- See
- Feature: Add colored borders.
- See functions:
borderStyled(BorderStyle, Color)andborderStyled(Color).
- See functions:
- Feature: Add
LinearGradient. It can be used incolorandbgColor. - Improvement: Color::Interpolate() uses gamma correction.
- Fix: Check the
grapharea is positive.
Build/Install
- Use globally set CMAKE_CXX_STANDARD if it is set.
- Expose the pkg-config file
- Check version compatibility when using cmake find_package()
v4.0.0
DOM
- Feature: more styles:
strikethroughunderlinedDouble
- Feature: Customize the cursor. Add the following decorators:
focusCursorBlockfocusCursorBlockBlinkingfocusCursorBarfocusCursorBarBlinkingfocusCursorUnderlinefocusCursorUnderlineBlinking
- Bugfix: Fix
focus/selectwhen thevbox/hbox/dboxcontains a
flexbox - Bugfix: Fix the selected/focused area. It used to be 1 cell larger/longer than
requested - Bugfix: Forward the selected/focused area from the child in gridbox.
- Bugfix: Fix incorrect Canvas computed dimensions.
- Bugfix: Support
vscroll_indicatorwith a zero inner size. - Bugfix: Fix
vscroll_indicatorhidding the last column.
Component:
- Feature: Add the
Modalcomponent. - Feature:
Slidersupports taking references for all its arguments. - Feature:
SlidersupportsSliderOption. It supports:- multiple directions.
- multiple colors.
- various values (value, min, max, increment).
- Feature: Define
ScreenInteractive::Exit(). - Feature: Add
Loopto give developers a better control on the main loop. This
can be used to integrate FTXUI into another main loop, without taking the full
control. - Feature:
Inputsupports CTRL+Left and CTRL+Right - Feature: Use a blinking bar in the
Inputcomponent. - Improvement: The
Menukeeps the focus when an entry is selected with the
mouse. - Bugfix: Add implementation of
ButtonOption::Border(). It was missing. - Bugfix: Provide the correct key for F1-F4 and F11.
- Feature: Add the
Hoverablecomponent decorators.
Screen
- Feature: add
Box::Union(a,b) -> Box - Bugfix: Fix resetting
dimclashing with resetting ofbold. - Feature: Add emscripten screen resize support.
- Bugfix: Add unicode 13 support for full width characters.
- Bugfix: Fix MSVC treating codecvt C++17 deprecated function as an error.
Build
- Support using the google test version provided by the package manager.
v3.0.0
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.
Component
- Animations module! Components can implement the
OnAnimationmethod and
the animation::Animator to define some animated properties.Menunow support animations.Buttonnow supports animations.
- Support SIGTSTP. (ctrl+z).
- Support task posting.
ScreenInteractive::Post(Task). Menucan now be used in the 4 directions, usingMenuOption.direction.Menucan display an animated underline, using
MenuOption.underline.enabled.Buttonis now taking the focus in frame.- breaking All the options are now using a transform function.
- breaking The
Togglecomponent is now implemented usingMenu. - 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'.
#337 - Add decorator for components:
operator|(Component, ComponentDecorator)operator|(Component, ElementDecorator)operator|=(Component, ComponentDecorator)operator|=(Component, ElementDecorator)- Add the
Maybedecorator. - Add the
CatchEventdecorator. - Add the
Rendererdecorator.
- breaking remove the "deprectated.hpp" header and Input support for wide
string.
DOM:
- breaking: The
inverteddecorator now toggle in the inverted attribute. - Add
gaugefor the 4 directions. Expose the following API:
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
separatorHSelectorandseparatorVSelectorelements. This can be used
to highlight an area. - Add the
automergedecorator. This makes separator characters to be merged
with others nearby. - Fix the
Tablerendering function, to allow automerging characters. - Bugfix: The
vscroll_indicatornow computes its offset and size
correctly. - Add the
operator|=(Element, Decorator)
Screen:
- Add:
Color::Interpolate(lambda, color_a, color_b).
v2.0.0
Features:
Screen
- Add the
automergeto the Pixel bit field. This now controls which pixels are
automatically merged.
DOM:
- Add the
Canvasclass andElementFrom('canvas')function. Together users of
the library can draw using braille and block characters. - Support
flexboxdom 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:paragraphparagraphAlignLeftparagraphAlignCenterparagraphAlignRightparagraphAlignJustify
- Add the helper elements based on
flexbox:hflow(),vflow(). - Add:
focusPositionRelativeandfocusPosition - Add
Tableconstructor from 2D vector of Element, instead of string.
Component
- Add the
collapsiblecomponent. - 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
Table
- The
tablehorizontal and vertical separator are now correctly expanded.
Component
Inputshouldn'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
paragraphhas been modified. It now returns en Element,
instead of a list of elements.