Make the interaction between `MultiProgress` and other lines below it more robust
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
Research direction
Start by reproducing RUSTUP_TERM_PROGRESS_WHEN=always rustup check with MultiProgress, focusing on the final line and subsequent shell output. Compare behavior across window widths and the Bash-in-Zellij-in-WezTerm setup described, then verify that progress output and following lines remain correctly separated without exposing terminal artifacts.
Written by the indexing model from the issue text.
Description
Follow up of https://github.com/rust-lang/rustup/issues/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$ / #
https://github.com/rust-lang/rustup/issues/4560#issuecomment-3971844881
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?).
- Dominant language
- Rust
- Stars
- 7k
- Forks
- 1.1k
- Avg merge
- 1d 4h
- Merged PRs (30d)
- 48
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from rust-lang/rustup
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
E-easy enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
enhancement O-shell
Difficulty 1/5 Under an hour Newbie friendliness 72/100
-
enhancement
Difficulty 3/5 1-2 days Newbie friendliness 65/100
-
enhancement
All issues in rust-lang/rustup
Similar issues
-
bug
Difficulty 1/5 Under an hour Newbie friendliness 85/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
yantrikos/yantrik-os#255 ·
-
bug CLI custom-model
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
raphamorim/rio#1956 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
rust-bitcoin/rust-bitcoin#6930 · 1 comment ·