Skip to content

Make the interaction between MultiProgress and other lines below it more robust #4737

@rami3l

Description

@rami3l

Follow up of #4560.

Now we know that the last line of MultiProgress lacks a newline, and instead it adds a bunch of whitespaces so that new contents are forced to be shown on the following line.

/ # RUSTUP_TERM_PROGRESS_WHEN=always rustup check^[[J^M$
^[[1mstable-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m|^[[0m                                                                                                                                               ^M^[[2K^[[1mstable-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m/^[[0m                                                                                                                                               ^M^[[2K^[[1mstable-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m/^[[0m^M$
^[[1mbeta-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m|^[[0m                                                                                                                                                 ^[[1A^M^[[2K^[[1B^M^[[2K^[[1A^[[1mstable-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m/^[[0m^M$
^[[1mbeta-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m/^[[0m                                                                                                                                                 ^[[1A^M^[[2K^[[1B^M^[[2K^[[1A^[[1mstable-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m/^[[0m^M$
^[[1mbeta-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m-^[[0m                                                                                                                                                 ^[[1A^M^[[2K^[[1B^M^[[2K^[[1A^[[1mstable-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m-^[[0m^M$
^[[1mbeta-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m-^[[0m                                                                                                                                                 ^[[1A^M^[[2K^[[1B^M^[[2K^[[1A^[[1mstable-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m-^[[0m^M$
^[[1mbeta-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m\^[[0m                                                                                                                                                 ^[[1A^M^[[2K^[[1B^M^[[2K^[[1A^[[1mstable-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m\^[[0m^M$
^[[1mbeta-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m\^[[0m                                                                                                                                                 ^[[1A^M^[[2K^[[1B^M^[[2K^[[1A^[[1mstable-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m\^[[0m^M$
^[[1mbeta-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m|^[[0m                                                                                                                                                 ^[[1A^M^[[2K^[[1B^M^[[2K^[[1A^[[1mstable-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m|^[[0m^M$
^[[1mbeta-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m|^[[0m                                                                                                                                                 ^[[1A^M^[[2K^[[1B^M^[[2K^[[1A^[[1mstable-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[92mup to date^[[0m: 1.93.1 (01f6ddf75 2026-02-11)^M$
^[[1mbeta-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[96mChecking...^[[0m ^[[1m^[[96m|^[[0m                                                                                                                                                 ^M^[[2K^[[1mbeta-x86_64-unknown-linux-musl - ^[[0m^[[1m^[[92mup to date^[[0m: 1.94.0-beta.5 (31a40f5c8 2026-02-20)                                                                                                              ^[[1mrustup - ^[[0m^[[1m^[[33mUpdate available^[[0m : 1.29.0 -> 1.28.2^M$
/ #

#4560 (comment)

Clearly some terminal configurations are not very happy about this.

On the one hand, when the history is re-read under a different window width, the missing newline will be revealed easily.

On the other hand, in certain configs (which ones?) the line wrap is not visible at all, e.g. @epage's setup which is comprised of bash v5.3.9(1)-release inside of Zellij inside of Wezterm, running on Linux Desktop (but I wasn't able to reproduce on macOS, any DE/OS info?).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementincompleteThe bug report does not have enough information

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions