Conversation
set_compiler_flags() compared the value of the RUN_SANITIZERS keyword against
the literal string "TRUE", so callers that pass an option variable, e.g.
`RUN_SANITIZERS ${USE_ASAN}` (which expands to ON/OFF), never matched and the
sanitizer flags were silently dropped: CI jobs configured with -DUSE_ASAN=ON
built and ran completely uninstrumented binaries.
Use a real boolean test so that ON/OFF, TRUE/FALSE and 1/0 all behave as
expected. Omitting RUN_SANITIZERS still defaults to running the sanitizers.
Recent glibc implements tcsetattr() through the termios2 ioctl, so memcheck no longer reports the syscall parameter as ioctl(TCSETS) but as ioctl(generic), and it additionally reports an 8 byte read of an uninitialized value inside ___cbaud_to_speed(). Both come from libraries that ignore the return value of tcgetattr() and then hand the untouched struct termios to tcsetattr(), which happens whenever stdin is not a tty (e.g. when the executable is fed from a file in CI). Add narrow suppressions for these call stacks so scripts/run_valgrind.sh keeps passing on recent distributions. The existing entry is kept as is, since it is what older distributions used to report.
- include <thread>, <chrono> and <string> explicitly: the v7 headers do not provide them transitively anymore, so std::thread was not declared - use ftxui::App (and <ftxui/component/app.hpp>) instead of ScreenInteractive, which was renamed in v7 (the old name only survives as a compatibility alias) - link Threads::Threads explicitly: v7 dropped the PUBLIC Threads::Threads link it used to propagate, while the example still spawns a thread; without this the link may fail on targets that need an explicit thread library (winpthread with MinGW)
mcmarius
force-pushed
the
renovate/ftxui-arthursonzogni-ftxui-7.x
branch
from
September 24, 2026 10:49
2f6d86b to
a10d445
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
6.1.9→7.0.3v6.1.9→v7.0.3Release Notes
ArthurSonzogni/ftxui (ArthurSonzogni/ftxui)
v7.0.3Compare Source
Component
cursor position request (used to convert mouse coordinates from screen
space to frame space) could be sent asynchronously, after the cursor had
already moved away from the frame's origin, causing the terminal's reply to
be misread as the wrong offset. Regressed by the 7.0.2 throttle fix, which
made the request's 500ms throttle actually engage for the first time. See
#1310.
v7.0.2Compare Source
Component
cursor position request/reply feedback loop redrawing the screen at ~60fps in
the non-alternate-screen modes. See #1302.
animation::RequestAnimationFrame()(e.g. byanimation::Animator), as inFTXUI 6. Receiving an event no longer implicitly triggers an animation
frame.
App::PostEventis now thread safe again, as documented. Since the7.0.0 event loop rework it pushed into an unsynchronized buffer, racing with
the main loop when called from another thread.
during terminal setup was kept for the whole
Applifetime, retaining everysubsequent event (including every mouse move).
Dom
textcomputes its requirement once and renders only thevisible lines. This makes scrolling a large text inside a
framesignificantly faster. Thanks @patlefort. See #1309.
textselection now only visits and stores the selected linerange, instead of scanning and allocating one entry per line of the whole
text on every frame.
v7.0.1Compare Source
Minor release to fix bugs introduced by v7.0.0
Screen
WT_SESSIONenvironment variable for WSL compatibility). See #1305.NO_COLORenvironment variable (https://no-color.org). When set and non-empty, colors degrade to the terminal's default colors.TERM_PROGRAM=Apple_Terminal) is now reported asPalette256instead ofTrueColor; it does not support 24bit colors.Terminal::ComputeColorSupport, instead of implying TrueColor support.Color::RGBor other color constants are constructed globally/statically beforemain(). See #1303.Build
include path (e.g. MacPorts upgrade). A CMake deduplication quirk was
promoting the project's own
-I include/to-isystem, causing packagemanagers'
-I/opt/local/include(which may contain stale headers) towin. See #1299, #1300.
v7.0.0Compare Source
7.0.0 (2026-06-13)
Doc
Build
This provides a single-header (
ftxui.hpp) and single-source (ftxui.cpp)version of the library, as well as a truly single-file header-only version
(
ftxui_all.hpp).This is the easiest way to vendor FTXUI into your project.
See #1252.
Usage:
target_link_libraries(your_target PRIVATE ftxui::ftxui)Bazel:
deps = ["@ftxui//:ftxui"]See #1252.
This requires:
Usage:
uint8_tfor ABI layout stability.ScreenandNodefor futureextensibility without breaking ABI.
General
Breaking (Renames):
Pixelis renamed toCell.Imageis renamed toSurface.ScreenInteractiveis renamed toApp.PixelAtmethod is renamed toCellAt.Compatibility aliases and headers are provided to avoid breaking existing code.
Breaking. Move to
std::string_viewinstead ofconst std::string&whereapplicable. This yields better interoperability with string literals and
avoids unnecessary copies. Thanks @mikomikotaishi for PR #1154
Component
sigactionfor robust signal masking and cleanup handler preservation. Protect against double terminal restoration on exit using atomic raw-state tracking. Add support for additional POSIX signals (SIGBUS,SIGSYSas crash signals, andSIGQUIT,SIGHUPas deferred termination signals) and fix async-signal-safety issues in crash paths.Inputcursor visibility when using a customRendereron nested containers. See #1220. Thanks @nmarks99.Inputcursor positioning and scroll stability. See #1196. Thanks @739C1AE2.Inputsupport for non-ASCII characters in password mode. See #1196. Thanks @739C1AE2.App. See #1196. Thanks @739C1AE2.App::HandlePipedInput(false).Thanks @HarryPehkonen for PR #1094.
output. Thanks @zozowell in #1064.
ftxui::Slider. The "up" key was previously decreasing thevalue. Thanks @its-pablo in #1093 for reporting the issue.
Basic Multilingual Plane (BMP) are now correctly processed. Thanks @739C1AE2
in #1160 for fixing the issue.
and fixing the issue.
App::Post(..)is now thread safe. Thanks @739C1AE2 in~1183 for reporting the issue. This regressed in non released versions.
Dom
\nwithintext()andvtext(). Thanks@mikomikotaishi in #1215.
dboxnow propagates focus from top-most layers to bottom-mostlayers, matching the visual representation. See #1213. Thanks @vtnerd.
color the border of a table. Thanks @Sckab in #1186 for proposing it.
ComputeShrinkHard. Thanks @its-pablo in #1137 forreporting and fixing the issue.
vbox/hbox/dboxto allow a container of Element asas input. Thanks @nbusser in #1117.
behaviors inherited from Node are correctly implemented. Thanks KenReneris for
#1070.
gaugein a flexible now takes the available space in theopposite direction. Thanks @Ardet696 in #1203.
_factorvariants of flex decorators. These allowspecifying custom grow/shrink factors:
flex_factor(grow, shrink),flex_grow_factor(grow),flex_shrink_factor(shrink), withxandyaxis variants.Usage:
element | flex_grow_factor(3).Screen
Screen::ResetPositioninto a single parameterized CSI cursor-up(
\x1B[<n>A) instead of emitting one\x1B[1Aper row. This reduces theper-frame escape bytes during steady-state redraw (e.g. ~197 -> 6 bytes for a
50-row screen, ~33x). On-screen output is unchanged.
Screen::ToString(),Color::Print()andstring_width().This was achieved by:
string_widthfor cells with single-byte data (theprimary driver for performance gains).
Benchmarks show a significant improvement:
Thanks @killerdevildog for initiating (2) in #1188.
What's Changed
Examples(fromREADME.md) section link by @deyna256 in ArthurSonzogni/FTXUI#1079Merge()specializations to support moreElementcontainers by @nbusser in ArthurSonzogni/FTXUI#1117text()by @mikomikotaishi in ArthurSonzogni/FTXUI#1215New Contributors
Full Changelog: ArthurSonzogni/FTXUI@v6.1.9...v7.0.0
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate CLI.