| 
									
										
										
										
											2021-10-10 12:52:34 +02:00
										 |  |  | Changelog | 
					
						
							|  |  |  | ========= | 
					
						
							| 
									
										
										
										
											2021-09-26 14:48:48 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-29 09:10:22 +02:00
										 |  |  | Next | 
					
						
							|  |  |  | ==== | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Doc
 | 
					
						
							|  |  |  | - Fix broken Doxygen output. See @markmandel in #1029. | 
					
						
							|  |  |  | - Use Doxygen awesome. Add our own theme. | 
					
						
							|  |  |  | - Break the documentation into several pages. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-04 09:02:20 -04:00
										 |  |  | ### Build
 | 
					
						
							|  |  |  | - Feature: Support C++20 modules.  | 
					
						
							|  |  |  |   This requires: | 
					
						
							|  |  |  |   - Using the Ninja or MSVC generator | 
					
						
							|  |  |  |   - A recent Clang/GCC/MSVC compiler. | 
					
						
							|  |  |  |   - Cmake 3.28 or higher. | 
					
						
							|  |  |  |   Usage: | 
					
						
							|  |  |  |   ```cpp | 
					
						
							|  |  |  |   import ftxui; | 
					
						
							|  |  |  |   import ftxui.component; | 
					
						
							|  |  |  |   import ftxui.dom; | 
					
						
							|  |  |  |   import ftxui.screen; | 
					
						
							|  |  |  |   import ftxui.util; | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  |   Thanks @mikomikotaishi for PR #1015. | 
					
						
							| 
									
										
										
										
											2025-08-16 18:40:50 +02:00
										 |  |  | - Remove dependency on 'pthread'. | 
					
						
							| 
									
										
										
										
											2025-06-04 09:02:20 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-20 21:59:36 +08:00
										 |  |  | ### Component
 | 
					
						
							|  |  |  | - Fix ScreenInteractive::FixedSize screen stomps on the preceding terminal | 
					
						
							|  |  |  |   output. Thanks @zozowell in #1064. | 
					
						
							| 
									
										
										
										
											2025-08-19 09:34:30 +02:00
										 |  |  | - Fix vertical `ftxui::Slider`. The "up" key was previously decreasing the | 
					
						
							|  |  |  |   value. Thanks @its-pablo in #1093 for reporting the issue. | 
					
						
							| 
									
										
										
										
											2025-06-20 21:59:36 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-29 09:10:22 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-07 22:43:27 +02:00
										 |  |  | 6.1.9 (2025-05-07) | 
					
						
							| 
									
										
										
										
											2025-04-29 16:05:11 +02:00
										 |  |  | ------------ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-07 22:43:27 +02:00
										 |  |  | ### 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 | 
					
						
							|  |  |  | bazel_dep(name = "ftxui", version = "6.1.9") | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Thanks @robinlinden and @kcc for the reviews. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-02 16:48:00 +02:00
										 |  |  | ### dom
 | 
					
						
							|  |  |  | - Bugfix: Restore the `dbox` behavior from ftxui 5.0.0. To apply bgcolor | 
					
						
							|  |  |  |   blending between the two layers, a new `dboxBlend` will be added. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-01 11:30:12 +02:00
										 |  |  | 6.1.8 (2025-05-01) | 
					
						
							| 
									
										
										
										
											2025-05-01 10:01:05 +02:00
										 |  |  | ------------------ | 
					
						
							| 
									
										
										
										
											2025-04-29 15:11:10 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | ### Build
 | 
					
						
							| 
									
										
										
										
											2025-04-29 16:05:11 +02:00
										 |  |  | - Feature: Support `bazel` build system. See #1032. | 
					
						
							|  |  |  |   Proposed by Kostya Serebryany @kcc | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   **BUILD.bazel** | 
					
						
							|  |  |  |   ```bazel | 
					
						
							|  |  |  |   deps = [ | 
					
						
							|  |  |  |     // Depend on the whole library: | 
					
						
							|  |  |  |     "@ftxui//:ftxui", | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Choose a specific submodule: | 
					
						
							|  |  |  |     "@ftxui//:component", | 
					
						
							|  |  |  |     "@ftxui//:dom", | 
					
						
							|  |  |  |     "@ftxui//:screen", | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   ``` | 
					
						
							| 
									
										
										
										
											2025-04-29 15:11:10 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-31 18:19:48 +02:00
										 |  |  | ### Component
 | 
					
						
							|  |  |  | - Bugfix: Fix a crash with ResizeableSplit. See #1023. | 
					
						
							|  |  |  |   - Clamp screen size to terminal size. | 
					
						
							|  |  |  |   - Disallow `ResizeableSplit` with negative size. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Dom
 | 
					
						
							|  |  |  | - Bugfix: Disallow specifying a negative size constraint. See #1023. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-30 01:27:57 +01:00
										 |  |  | 6.0.2 (2025-03-30) | 
					
						
							| 
									
										
										
										
											2025-03-29 12:51:08 +01:00
										 |  |  | ----- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Component
 | 
					
						
							|  |  |  | - BugFix: Fix major crash on Windows affecting all components. See #1020 | 
					
						
							|  |  |  | - BugFix: Fix focusRelative. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-28 12:08:59 +01:00
										 |  |  | 6.0.1 (2025-03-28) | 
					
						
							|  |  |  | ----- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Same as v6.0.0. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Due to a problem tag v6.0.0 was replaced. This isn't a good practice and affect | 
					
						
							|  |  |  | developers that started using it in the short timeframe. Submitting a new | 
					
						
							|  |  |  | release with the same content is the best way to fix this. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | See #1017 and #1019. | 
					
						
							| 
									
										
										
										
											2022-01-22 17:58:33 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-23 18:19:05 +01:00
										 |  |  | 6.0.0 (2025-03-23) | 
					
						
							|  |  |  | ----- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-28 20:07:26 +01:00
										 |  |  | ### Component
 | 
					
						
							| 
									
										
										
										
											2024-04-28 15:17:54 +02:00
										 |  |  | - Feature: Add support for raw input. Allowing more keys to be detected. | 
					
						
							|  |  |  | - Feature: Add `ScreenInteractive::ForceHandleCtrlC(false)` to allow component | 
					
						
							|  |  |  |   to fully override the default `Ctrl+C` handler. | 
					
						
							|  |  |  | - Feature: Add `ScreenInteractive::ForceHandleCtrlZ(false)` to allow component | 
					
						
							|  |  |  |   to fully override the default `Ctrl+Z` handler. | 
					
						
							|  |  |  | - Feature: Add `Mouse::WeelLeft` and `Mouse::WeelRight` events on supported | 
					
						
							|  |  |  |   terminals. | 
					
						
							|  |  |  | - Feature: Add `Event::DebugString()`. | 
					
						
							| 
									
										
										
										
											2023-08-28 20:07:26 +01:00
										 |  |  | - Feature: Add support for `Input`'s insert mode. Add `InputOption::insert` | 
					
						
							|  |  |  |   option. Added by @mingsheng13. | 
					
						
							| 
									
										
										
										
											2024-04-06 16:45:10 +01:00
										 |  |  | - Feature: Add `DropdownOption` to configure the dropdown. See #826. | 
					
						
							| 
									
										
										
										
											2024-12-27 15:45:13 +07:00
										 |  |  | - Feature: Add support for Selection. Thanks @clement-roblot. See #926. | 
					
						
							|  |  |  |   - See `ScreenInteractive::GetSelection()`. | 
					
						
							|  |  |  |   - See `ScreenInteractive::SelectionChange(...)` listener. | 
					
						
							| 
									
										
										
										
											2023-12-17 10:35:21 +01:00
										 |  |  | - 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. | 
					
						
							| 
									
										
										
										
											2023-11-11 23:33:50 +07:00
										 |  |  |   This fixes: https://github.com/ArthurSonzogni/FTXUI/issues/773 | 
					
						
							| 
									
										
										
										
											2023-12-17 10:35:21 +01:00
										 |  |  |   This fixes: https://github.com/ArthurSonzogni/FTXUI/issues/792 | 
					
						
							|  |  |  | - Bugfix: mouse.control is now reported correctly. | 
					
						
							| 
									
										
										
										
											2023-11-11 17:57:07 +01:00
										 |  |  | - Feature: Add `ScreenInteractive::FullscreenPrimaryScreen()`. This allows | 
					
						
							|  |  |  |   displaying a fullscreen component on the primary screen, as opposed to the | 
					
						
							|  |  |  |   alternate screen. | 
					
						
							| 
									
										
										
										
											2023-11-11 17:29:19 +01:00
										 |  |  | - Bugfix: `Input` `onchange` was not called on backspace or delete key. | 
					
						
							|  |  |  |   Fixed by @chrysante in chrysante in PR #776. | 
					
						
							| 
									
										
										
										
											2023-12-17 10:24:33 +01:00
										 |  |  | - Bugfix: Propertly restore cursor shape on exit. See #792. | 
					
						
							| 
									
										
										
										
											2024-04-03 21:32:19 +02:00
										 |  |  | - Bugfix: Fix cursor position in when in the last column. See #831. | 
					
						
							| 
									
										
										
										
											2024-04-19 00:28:28 +09:00
										 |  |  | - Bugfix: Fix `ResizeableSplit` keyboard navigation. Fixed by #842. | 
					
						
							| 
									
										
										
										
											2024-04-28 16:03:00 +02:00
										 |  |  | - Bugfix: Fix `Menu` focus. See #841 | 
					
						
							| 
									
										
										
										
											2024-09-30 23:18:59 +02:00
										 |  |  | - 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 | 
					
						
							| 
									
										
										
										
											2024-10-29 08:03:59 +01:00
										 |  |  | - Feature: Add `SliderOption::on_change`. This allows to set a callback when the | 
					
						
							|  |  |  |   slider value changes. See #938. | 
					
						
							| 
									
										
										
										
											2025-02-10 22:51:31 +01:00
										 |  |  | - Bugfix: Handle `Dropdown` with no entries. | 
					
						
							|  |  |  | - Bugfix: Fix crash in `LinearGradient` due to float precision and an off-by-one | 
					
						
							|  |  |  |           mistake. See #998. | 
					
						
							| 
									
										
										
										
											2023-08-28 20:07:26 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-26 23:08:42 +02:00
										 |  |  | ### Dom
 | 
					
						
							| 
									
										
										
										
											2025-03-22 10:03:43 -07:00
										 |  |  | - Feature: Add `italic` decorator. For instance: | 
					
						
							|  |  |  |   ```cpp | 
					
						
							|  |  |  |   auto italic_text = text("Italic text") | italic; | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  |   ```cpp | 
					
						
							|  |  |  |   auto italic_text = italic(text("Italic text")); | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  |   Proposed by @kenReneris in #1009. | 
					
						
							| 
									
										
										
										
											2023-09-26 23:08:42 +02:00
										 |  |  | - Feature: Add `hscroll_indicator`. It display an horizontal indicator | 
					
						
							|  |  |  |   reflecting the current scroll position. Proposed by @ibrahimnasson in | 
					
						
							|  |  |  |   [issue 752](https://github.com/ArthurSonzogni/FTXUI/issues/752) | 
					
						
							| 
									
										
										
										
											2024-11-07 21:07:09 +01:00
										 |  |  | - Feature: Add `extend_beyond_screen` option to `Dimension::Fit(..)`, allowing | 
					
						
							|  |  |  |   the element to be larger than the screen. Proposed by @LordWhiro. See #572 and | 
					
						
							|  |  |  |   #949. | 
					
						
							| 
									
										
										
										
											2024-12-27 15:45:13 +07:00
										 |  |  | - Feature: Add support for Selection. Thanks @clement-roblot. See #926. | 
					
						
							|  |  |  |   - See `selectionColor` decorator. | 
					
						
							|  |  |  |   - See `selectionBackgroundColor` decorator. | 
					
						
							|  |  |  |   - See `selectionForegroundColor` decorator. | 
					
						
							|  |  |  |   - See `selectionStyle(style)` decorator. | 
					
						
							|  |  |  |   - See `selectionStyleReset` decorator. | 
					
						
							| 
									
										
										
										
											2025-03-19 20:03:05 +05:30
										 |  |  | - Breaking change: Change how "focus"/"select" are handled. This fixes the | 
					
						
							|  |  |  |   behavior. | 
					
						
							| 
									
										
										
										
											2025-03-28 12:08:59 +01:00
										 |  |  | - Breaking change: `Component::OnRender()` becomes the method to override to | 
					
						
							|  |  |  |   render a component. This replaces `Component::Render()` that is still in use | 
					
						
							|  |  |  |   to call the rendering method on the children. This change allows to fix a | 
					
						
							|  |  |  |   couple of issues around focus handling. | 
					
						
							| 
									
										
										
										
											2023-09-26 23:08:42 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-27 12:03:44 +03:00
										 |  |  | ### Screen
 | 
					
						
							|  |  |  | - Feature: Add `Box::IsEmpty()`. | 
					
						
							| 
									
										
										
										
											2024-06-13 18:43:14 +02:00
										 |  |  | - Feature: Color transparency | 
					
						
							|  |  |  |     - Add `Color::RGBA(r,g,b,a)`. | 
					
						
							|  |  |  |     - Add `Color::HSVA(r,g,b,a)`. | 
					
						
							|  |  |  |     - Add `Color::Blend(Color)`. | 
					
						
							|  |  |  |     - Add `Color::IsOpaque()` | 
					
						
							| 
									
										
										
										
											2024-04-27 12:03:44 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-15 18:23:59 +02:00
										 |  |  | ### Util
 | 
					
						
							|  |  |  | - Feature: Support arbitrary `Adapter` for `ConstStringListRef`. See #843. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-28 21:38:51 +02:00
										 |  |  | ### Build
 | 
					
						
							|  |  |  | - Support for cmake's "unity/jumbo" builds. Fixed by @ClausKlein. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-19 15:46:36 +02:00
										 |  |  | 5.0.0 | 
					
						
							|  |  |  | ----- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-09 20:21:23 +01:00
										 |  |  | ### Component
 | 
					
						
							|  |  |  | - Breaking: MenuDirection enum is renamed Direction | 
					
						
							| 
									
										
										
										
											2023-05-18 11:21:34 +02:00
										 |  |  | - Breaking: GaugeDirection enum is renamed Direction | 
					
						
							|  |  |  | - Breaking: Direction enum is renamed WidthOrHeight | 
					
						
							|  |  |  | - Breaking: Remove `ComponentBase` copy constructor/assignment. | 
					
						
							| 
									
										
										
										
											2023-06-25 17:22:05 +02:00
										 |  |  | - Breaking: MenuOption::entries is renamed MenuOption::entries_option. | 
					
						
							| 
									
										
										
										
											2023-08-13 17:36:41 +02:00
										 |  |  | - Breaking: `Ref<{Component}Option>` becomes `{Component}Option` in component constructors. | 
					
						
							| 
									
										
										
										
											2023-05-29 11:52:39 +02:00
										 |  |  | - Feature: `ResizeableSplit` now support arbitrary element as a separator. | 
					
						
							| 
									
										
										
										
											2023-05-18 11:21:34 +02:00
										 |  |  | - Feature: `input` is now supporting multiple lines. | 
					
						
							|  |  |  | - Feature: `input` style is now customizeable. | 
					
						
							| 
									
										
										
										
											2023-06-24 17:15:23 +02:00
										 |  |  | - Bugfix: Support F1-F5 from OS terminal. | 
					
						
							| 
									
										
										
										
											2023-06-25 17:22:05 +02:00
										 |  |  | - Feature: Add struct based constructor: | 
					
						
							|  |  |  |   ```cpp | 
					
						
							|  |  |  |   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); | 
					
						
							|  |  |  |   ``` | 
					
						
							| 
									
										
										
										
											2023-08-19 10:57:50 +02:00
										 |  |  | - Feature: Add `ScreenInteractive::TrackMouse(false)` disable mouse support. | 
					
						
							| 
									
										
										
										
											2023-05-18 11:21:34 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-04 21:06:19 +02:00
										 |  |  | ### Dom
 | 
					
						
							|  |  |  | - Feature: Add `hyperlink` decorator. For instance: | 
					
						
							|  |  |  |   ```cpp | 
					
						
							|  |  |  |   auto link = text("Click here") | hyperlink("https://github.com/FTXUI") | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  |   See the [OSC 8 page](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda). | 
					
						
							|  |  |  |   FTXUI support proposed by @aaleino in [#662](https://github.com/ArthurSonzogni/FTXUI/issues/662). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-03 17:41:54 +02:00
										 |  |  | ### Screen
 | 
					
						
							|  |  |  | - Breaking: `WordBreakProperty` becomes a uint8_t enum. This yields a 0.8% | 
					
						
							|  |  |  |   performance improvement. | 
					
						
							| 
									
										
										
										
											2023-08-08 05:46:51 +07:00
										 |  |  | - Breaking: Remove user defined Pixel constructor and equality operator. | 
					
						
							|  |  |  | - Performance: 19% faster on benchmarks. | 
					
						
							| 
									
										
										
										
											2023-08-03 17:41:54 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-04 21:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-19 17:50:23 +02:00
										 |  |  | ### Build
 | 
					
						
							|  |  |  | - Check version compatibility when using cmake find_package() | 
					
						
							| 
									
										
										
										
											2023-06-04 14:35:08 +02:00
										 |  |  | - Add `FTXUI_DEV_WARNING` options to turn on warnings when building FTXUI | 
					
						
							|  |  |  | - Turn OFF by default `FTXUI_BUILD_DOCS` | 
					
						
							|  |  |  | - Turn OFF by default `FTXUI_BUILD_EXAMPLE` | 
					
						
							| 
									
										
										
										
											2023-05-19 17:50:23 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-29 11:52:39 +02:00
										 |  |  | 4.1.1 | 
					
						
							| 
									
										
										
										
											2023-05-18 11:21:34 +02:00
										 |  |  | ----- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Component
 | 
					
						
							|  |  |  | - Fix: Support arrow keys in application mode | 
					
						
							| 
									
										
										
										
											2023-03-31 17:44:01 +02:00
										 |  |  | - Fix: Remove useless new line when using an alternative screen. | 
					
						
							| 
									
										
										
										
											2023-03-09 20:21:23 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-15 22:50:27 +01:00
										 |  |  | ### Dom
 | 
					
						
							| 
									
										
										
										
											2023-05-19 11:59:23 +02:00
										 |  |  | - Feature: Add the dashed style for border and separator: | 
					
						
							|  |  |  |   - See `DASHED` enum, and  `separatorDashed()`, `borderDashed()` functions. | 
					
						
							| 
									
										
										
										
											2023-03-16 13:15:14 +01:00
										 |  |  | - Feature: Add colored borders. | 
					
						
							| 
									
										
										
										
											2023-05-19 11:59:23 +02:00
										 |  |  |   - See functions: `borderStyled(BorderStyle, Color)` and `borderStyled(Color)`. | 
					
						
							|  |  |  | - Feature: Add `LinearGradient`. It can be used in `color` and `bgColor`. | 
					
						
							| 
									
										
										
										
											2023-03-22 09:59:02 -03:00
										 |  |  | - Improvement: Color::Interpolate() uses gamma correction. | 
					
						
							| 
									
										
										
										
											2023-05-18 11:21:34 +02:00
										 |  |  | - Fix: Check the `graph` area is positive. | 
					
						
							| 
									
										
										
										
											2023-03-15 22:50:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-18 11:21:34 +02:00
										 |  |  | ### Build/Install
 | 
					
						
							|  |  |  | - Use globally set CMAKE_CXX_STANDARD if it is set. | 
					
						
							| 
									
										
										
										
											2023-05-29 11:52:39 +02:00
										 |  |  | - 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. | 
					
						
							| 
									
										
										
										
											2023-03-09 20:21:23 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-12 14:09:47 +01:00
										 |  |  | 4.0.0 | 
					
						
							|  |  |  | ----- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-22 21:41:29 +02:00
										 |  |  | ### DOM
 | 
					
						
							| 
									
										
										
										
											2023-01-22 11:02:27 +01:00
										 |  |  | - Feature: more styles: | 
					
						
							|  |  |  |   - `strikethrough` | 
					
						
							|  |  |  |   - `underlinedDouble` | 
					
						
							| 
									
										
										
										
											2022-11-11 14:09:53 +01:00
										 |  |  | - Feature: Customize the cursor. Add the following decorators: | 
					
						
							|  |  |  |   - `focusCursorBlock` | 
					
						
							|  |  |  |   - `focusCursorBlockBlinking` | 
					
						
							|  |  |  |   - `focusCursorBar` | 
					
						
							|  |  |  |   - `focusCursorBarBlinking` | 
					
						
							|  |  |  |   - `focusCursorUnderline` | 
					
						
							|  |  |  |   - `focusCursorUnderlineBlinking` | 
					
						
							| 
									
										
										
										
											2022-05-22 21:41:29 +02:00
										 |  |  | - Bugfix: Fix `focus`/`select` when the `vbox`/`hbox`/`dbox` contains a | 
					
						
							|  |  |  |   `flexbox` | 
					
						
							| 
									
										
										
										
											2022-05-28 22:35:52 +02:00
										 |  |  | - 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. | 
					
						
							| 
									
										
										
										
											2022-06-01 12:13:39 -07:00
										 |  |  | - Bugfix: Fix incorrect Canvas computed dimensions. | 
					
						
							| 
									
										
										
										
											2022-08-21 23:04:32 +02:00
										 |  |  | - Bugfix: Support `vscroll_indicator` with a zero inner size. | 
					
						
							| 
									
										
										
										
											2023-02-12 13:51:51 +01:00
										 |  |  | - Bugfix: Fix `vscroll_indicator` hidding the last column. | 
					
						
							| 
									
										
										
										
											2022-05-22 21:41:29 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-12 17:08:22 +02:00
										 |  |  | ### Component:
 | 
					
						
							|  |  |  | - Feature: Add the `Modal` component. | 
					
						
							| 
									
										
										
										
											2022-08-13 16:26:53 +02:00
										 |  |  | - Feature: `Slider` supports taking references for all its arguments. | 
					
						
							| 
									
										
										
										
											2022-08-30 18:52:33 +02:00
										 |  |  | - Feature: `Slider` supports `SliderOption`. It supports: | 
					
						
							|  |  |  |     - multiple directions. | 
					
						
							|  |  |  |     - multiple colors. | 
					
						
							|  |  |  |     - various values (value, min, max, increment). | 
					
						
							| 
									
										
										
										
											2022-10-18 21:29:27 +02:00
										 |  |  | - Feature: Define `ScreenInteractive::Exit()`. | 
					
						
							|  |  |  | - Feature: Add `Loop` to 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. | 
					
						
							| 
									
										
										
										
											2022-10-06 21:16:55 +02:00
										 |  |  | - Feature: `Input` supports CTRL+Left and CTRL+Right | 
					
						
							| 
									
										
										
										
											2022-11-11 14:09:53 +01:00
										 |  |  | - Feature: Use a blinking bar in the `Input` component. | 
					
						
							| 
									
										
										
										
											2022-08-21 17:23:13 +02:00
										 |  |  | - Improvement: The `Menu` keeps the focus when an entry is selected with the | 
					
						
							|  |  |  |   mouse. | 
					
						
							| 
									
										
										
										
											2022-10-18 22:58:22 +02:00
										 |  |  | - Bugfix: Add implementation of `ButtonOption::Border()`. It was missing. | 
					
						
							|  |  |  | - Bugfix: Provide the correct key for F1-F4 and F11. | 
					
						
							| 
									
										
										
										
											2022-12-04 11:54:49 +01:00
										 |  |  | - Feature: Add the `Hoverable` component decorators. | 
					
						
							| 
									
										
										
										
											2022-06-12 17:08:22 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-22 21:41:29 +02:00
										 |  |  | ### Screen
 | 
					
						
							|  |  |  | - Feature: add `Box::Union(a,b) -> Box` | 
					
						
							| 
									
										
										
										
											2022-08-21 23:04:32 +02:00
										 |  |  | - Bugfix: Fix resetting `dim` clashing with resetting of `bold`. | 
					
						
							|  |  |  | - Feature: Add emscripten screen resize support. | 
					
						
							| 
									
										
										
										
											2022-09-29 10:50:27 +02:00
										 |  |  | - Bugfix: Add unicode 13 support for full width characters. | 
					
						
							| 
									
										
										
										
											2022-11-19 06:22:44 -07:00
										 |  |  | - Bugfix: Fix MSVC treating codecvt C++17 deprecated function as an error. | 
					
						
							| 
									
										
										
										
											2022-05-22 21:41:29 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-14 20:37:42 +01:00
										 |  |  | ### Build
 | 
					
						
							|  |  |  | - Support using the google test version provided by the package manager. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-20 20:58:56 +01:00
										 |  |  | 3.0.0 | 
					
						
							|  |  |  | ----- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-19 10:48:07 +01:00
										 |  |  | ### 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
 | 
					
						
							| 
									
										
										
										
											2022-03-20 18:13:11 +01:00
										 |  |  | - **Animations** module! Components can implement the `OnAnimation` method and | 
					
						
							|  |  |  |   the animation::Animator to define some animated properties. | 
					
						
							| 
									
										
										
										
											2022-03-13 18:51:46 +01:00
										 |  |  |   - `Menu` now support animations. | 
					
						
							|  |  |  |   - `Button` now supports animations. | 
					
						
							| 
									
										
										
										
											2022-02-13 11:11:34 +01:00
										 |  |  | - Support SIGTSTP. (ctrl+z). | 
					
						
							|  |  |  | - Support task posting. `ScreenInteractive::Post(Task)`. | 
					
						
							| 
									
										
										
										
											2022-03-13 18:51:46 +01:00
										 |  |  | - `Menu` can now be used in the 4 directions, using `MenuOption.direction`. | 
					
						
							|  |  |  | - `Menu` can display an animated underline, using | 
					
						
							|  |  |  |   `MenuOption.underline.enabled`. | 
					
						
							| 
									
										
										
										
											2022-04-03 15:04:33 +02:00
										 |  |  | - `Button` is now taking the focus in frame. | 
					
						
							| 
									
										
										
										
											2022-03-13 18:51:46 +01:00
										 |  |  | - **breaking** All the options are now using a transform function. | 
					
						
							|  |  |  | - **breaking** The `Toggle` component is now implemented using `Menu`. | 
					
						
							| 
									
										
										
										
											2022-02-19 11:49:12 +01:00
										 |  |  | - **bugfix** Container::Tab implements `Focusable()`. | 
					
						
							|  |  |  | - **bugfix** Improved default implementations of ComponentBase `Focusable()` and | 
					
						
							|  |  |  |   `ActiveChild()` methods. | 
					
						
							| 
									
										
										
										
											2022-03-04 13:23:45 +01:00
										 |  |  | - **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 | 
					
						
							| 
									
										
										
										
											2022-03-12 22:18:36 +08:00
										 |  |  | - Add decorator for components: | 
					
						
							|  |  |  |   - `operator|(Component, ComponentDecorator)` | 
					
						
							|  |  |  |   - `operator|(Component, ElementDecorator)` | 
					
						
							| 
									
										
										
										
											2022-03-13 18:51:46 +01:00
										 |  |  |   - `operator|=(Component, ComponentDecorator)` | 
					
						
							| 
									
										
										
										
											2022-03-12 22:18:36 +08:00
										 |  |  |   - `operator|=(Component, ElementDecorator)` | 
					
						
							|  |  |  |   - Add the `Maybe` decorator. | 
					
						
							|  |  |  |   - Add the `CatchEvent` decorator. | 
					
						
							|  |  |  |   - Add the `Renderer` decorator. | 
					
						
							| 
									
										
										
										
											2022-04-27 11:33:42 +02:00
										 |  |  | - **breaking** remove the "deprectated.hpp" header and Input support for wide | 
					
						
							|  |  |  |     string. | 
					
						
							| 
									
										
										
										
											2022-02-13 11:11:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-13 18:51:46 +01:00
										 |  |  | ### DOM:
 | 
					
						
							|  |  |  | - **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)` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Screen:
 | 
					
						
							|  |  |  | - Add: `Color::Interpolate(lambda, color_a, color_b)`. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 17:58:33 +01:00
										 |  |  | 2.0.0 | 
					
						
							|  |  |  | ----- | 
					
						
							| 
									
										
										
										
											2021-09-26 15:19:17 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-11 17:58:25 +01:00
										 |  |  | ### Features:
 | 
					
						
							| 
									
										
										
										
											2021-12-12 21:31:54 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 15:38:01 +01:00
										 |  |  | #### Screen
 | 
					
						
							|  |  |  | - Add the `automerge` to the Pixel bit field. This now controls which pixels are | 
					
						
							|  |  |  |   automatically merged. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-12 21:31:54 +01:00
										 |  |  | #### DOM:
 | 
					
						
							| 
									
										
										
										
											2021-12-23 14:17:33 +01:00
										 |  |  | - Add the `Canvas` class and `ElementFrom('canvas')` function. Together users of | 
					
						
							|  |  |  |   the library can draw using braille and block characters. | 
					
						
							| 
									
										
										
										
											2021-12-11 17:58:25 +01:00
										 |  |  | - 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()`. | 
					
						
							| 
									
										
										
										
											2021-12-13 11:38:31 +01:00
										 |  |  | - Add: `focusPositionRelative` and `focusPosition` | 
					
						
							| 
									
										
										
										
											2022-01-16 16:46:32 +01:00
										 |  |  | - Add `Table` constructor from 2D vector of Element, instead of string. | 
					
						
							| 
									
										
										
										
											2021-12-13 11:38:31 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | #### Component 
 | 
					
						
							| 
									
										
										
										
											2022-01-02 15:48:56 +01:00
										 |  |  | - Add the `collapsible` component. | 
					
						
							| 
									
										
										
										
											2022-01-19 16:38:39 +04:00
										 |  |  | - 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. | 
					
						
							| 
									
										
										
										
											2021-12-11 17:58:25 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-12 21:31:54 +01:00
										 |  |  | ### Bug
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 15:38:01 +01:00
										 |  |  | #### Table
 | 
					
						
							|  |  |  | - The `table` horizontal and vertical separator are now correctly expanded. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-12 21:31:54 +01:00
										 |  |  | #### Component 
 | 
					
						
							|  |  |  | - `Input` shouldn't take focus when hovered by the mouse. | 
					
						
							|  |  |  | - Modifying `Input`'s during on_enter/on_change event is now working correctly. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-11 17:58:25 +01:00
										 |  |  | ### Breaking changes:
 | 
					
						
							|  |  |  | - The behavior of `paragraph` has been modified. It now returns en Element, | 
					
						
							| 
									
										
										
										
											2021-12-12 21:31:54 +01:00
										 |  |  |   instead of a list of elements. | 
					
						
							| 
									
										
										
										
											2021-11-07 12:01:17 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-23 21:13:23 +02:00
										 |  |  | 0.11.1 | 
					
						
							|  |  |  | ------ | 
					
						
							| 
									
										
										
										
											2021-10-22 14:04:07 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-23 21:13:23 +02:00
										 |  |  | # 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. | 
					
						
							| 
									
										
										
										
											2021-10-22 14:04:07 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-17 16:03:18 +02:00
										 |  |  | 0.11 | 
					
						
							|  |  |  | ---- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## github workflow
 | 
					
						
							|  |  |  | - Add Windows ad MacOS artefacts. | 
					
						
							|  |  |  | - Merge all the workflows. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-09 11:51:00 +02:00
										 |  |  | ## Bug
 | 
					
						
							|  |  |  | - On Unix system, fallback to {80,25} screen dimension on failure. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-10 12:52:34 +02:00
										 |  |  | ## CMake
 | 
					
						
							|  |  |  | - Support for shared library, via `BUILD_SHARED_LIBS` option. | 
					
						
							|  |  |  | - Add library version and symlinks. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 0.10 (2021-09-30) | 
					
						
							|  |  |  | -------------------- | 
					
						
							| 
									
										
										
										
											2021-09-30 21:13:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## Bug
 | 
					
						
							|  |  |  | - Fix the automated merge of borders. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-26 15:19:17 +02:00
										 |  |  | ### Dom
 | 
					
						
							| 
									
										
										
										
											2021-10-15 23:04:11 +02:00
										 |  |  | - `Table()` class to build stylised table. | 
					
						
							|  |  |  |    See https://github.com/ArthurSonzogni/FTXUI/discussions/228 | 
					
						
							|  |  |  | - `vscroll_indicator`. Show a scrollbar indicator on the right. | 
					
						
							|  |  |  | - `separatorEmpty`. A separator drawing nothing. | 
					
						
							|  |  |  | - `separatorFixed`. A separator drawing the provided character. | 
					
						
							| 
									
										
										
										
											2021-09-26 15:19:17 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | ### Component
 | 
					
						
							| 
									
										
										
										
											2021-10-15 23:04:11 +02:00
										 |  |  | - `Maybe`: Display an component conditionnally based on a boolean. | 
					
						
							|  |  |  | - `Dropdown`: A dropdown select list. | 
					
						
							| 
									
										
										
										
											2021-09-26 15:19:17 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-10 12:52:34 +02:00
										 |  |  | 0.9 (2021-09-26) | 
					
						
							|  |  |  | ---------------- | 
					
						
							| 
									
										
										
										
											2021-09-26 14:48:48 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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` & `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` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Component
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Container: | 
					
						
							|  |  |  |   - `Container::Vertical` | 
					
						
							|  |  |  |   - `Container::Horizontal` | 
					
						
							|  |  |  |   - `Container::Tab` | 
					
						
							|  |  |  | - `Button` | 
					
						
							|  |  |  | - `Checkbox` | 
					
						
							|  |  |  | - `Input` | 
					
						
							|  |  |  | - `Menu` | 
					
						
							|  |  |  | - `MenuEntry` | 
					
						
							|  |  |  | - `Radiobox` | 
					
						
							|  |  |  | - `Toggle` | 
					
						
							|  |  |  | - `Slider` | 
					
						
							|  |  |  | - `Renderer` & variations | 
					
						
							|  |  |  | - `CatchEvent` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### MISC
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - Fuzzer | 
					
						
							|  |  |  | - Tests using gtest. | 
					
						
							|  |  |  | - Doxygen documentation | 
					
						
							|  |  |  | - IWYU | 
					
						
							|  |  |  | - 52 examples. | 
					
						
							|  |  |  | - Support for WebAssembly. | 
					
						
							|  |  |  | - Support for Window and fallback for broken terminal. |