mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2025-12-16 01:48:56 +08:00
1. Stop taking Ref<XxxOption> in Component constructors. Instead, use the XxxOption directly. Passing by copy avoid problems developers had where one was shared in between multiple component, causing issues. 2. Add variants of most component constructors taking a struct only. This replaces: https://github.com/ArthurSonzogni/FTXUI/pull/670 This fixes: https://github.com/ArthurSonzogni/FTXUI/issues/426
11 KiB
11 KiB
Changelog
current (development)
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 becomes XxxOption in 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);
Dom
- Feature: Add
hyperlinkdecorator. For instance:See the OSC 8 page. FTXUI support proposed by @aaleino in #662.auto link = text("Click here") | hyperlink("https://github.com/FTXUI")
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
4.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()
4.1.0 (Abandonned)
This version is abandonned and must not be used. It introduced a breaking change in the API.
4.0.0
DOM
- Feature: more styles:
strikethroughunderlinedDouble
- Feature: Customize the cursor. Add the following decorators:
focusCursorBlockfocusCursorBlockBlinkingfocusCursorBarfocusCursorBarBlinkingfocusCursorUnderlinefocusCursorUnderlineBlinking
- Bugfix: Fix
focus/selectwhen thevbox/hbox/dboxcontains aflexbox - 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.
3.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, usingMenuOption.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()andActiveChild()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'. https://github.com/ArthurSonzogni/FTXUI/issues/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).
2.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.
0.11.1
Component
- Feature: Support for PageUp/PageDown/Home/End buttons.
- Bugfix: Check the selected element are within bounds for Dropdown.
Build
- Bugfix: Package library using the "Release config". Not debug.
0.11
github workflow
- Add Windows ad MacOS artefacts.
- Merge all the workflows.
Bug
- On Unix system, fallback to {80,25} screen dimension on failure.
CMake
- Support for shared library, via
BUILD_SHARED_LIBSoption. - Add library version and symlinks.
0.10 (2021-09-30)
Bug
- Fix the automated merge of borders.
Dom
Table()class to build stylised table. See https://github.com/ArthurSonzogni/FTXUI/discussions/228vscroll_indicator. Show a scrollbar indicator on the right.separatorEmpty. A separator drawing nothing.separatorFixed. A separator drawing the provided character.
Component
Maybe: Display an component conditionnally based on a boolean.Dropdown: A dropdown select list.
0.9 (2021-09-26)
The initial release where changelog where written.
This version includes:
screen
- 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.
DOM
-
Element:
text&vtextseparatorand 5 variations.gaugeborderand 6 variations.windowspinnerparagraphandhflow.
-
Layout:
hboxvboxdboxgridboxframe: 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:
bolddiminvertedblinkcolorbgcolorclearunder
Component
- Container:
Container::VerticalContainer::HorizontalContainer::Tab
ButtonCheckboxInputMenuMenuEntryRadioboxToggleSliderRenderer& variationsCatchEvent
MISC
- Fuzzer
- Tests using gtest.
- Doxygen documentation
- IWYU
- 52 examples.
- Support for WebAssembly.
- Support for Window and fallback for broken terminal.