2.0.0 fixed one line of this, in one view
The chosen configuration's interval was cut mid-value at eighty columns, and
#24 fixed it by dropping
the interval whole when it does not fit. The same defect stands in the two
views below the overview, and one of them is worse.
The ranking view loses every closing bracket
crates/launchbound-tui/tests/golden/ranking-scrolled-80x24.txt — the recorded
frame, so this is shipped behaviour. All five visible rows:
│ c1-0000000000000004 block_x=32 tile=256 unroll=0 0.0520 ms [0.0517, 0.0523│
│ c1-0000000000000005 block_x=32 tile=256 unroll=2 0.0550 ms [0.0547, 0.0553│
│ c1-0000000000000006 block_x=32 tile=256 unroll=4 0.0580 ms [0.0577, 0.0583│
│ c1-0000000000000007 block_x=32 tile=512 unroll=0 0.0610 ms [0.0607, 0.0613│
│ c1-0000000000000008 block_x=32 tile=512 unroll=2 0.0640 ms [0.0637, 0.0643│
One character short, every row. An unclosed interval reads as a rendering
fault rather than as a number.
The rejections view loses the half that tells you what to do
rejections-80x24.txt, and this is the view the README calls the point of the
tool:
│ RC001 at src/lib.rs:33:13: divergence source `warp_id()` splits a 64-threa│
│ │
│all refused configurations: │
│ RC001 at src/lib.rs:33:13: divergence source `warp_id()` splits a 64-thr│
The next line is blank — this is truncation, not wrapping. The full reason is:
divergence source warp_id() splits a 64-thread block (2 warps) at a
block-wide barrier; safe only at one warp (<= 32 threads)
The reader gets as far as 64-threa and never reaches safe only at one warp (<= 32 threads) — the only part that says what to do about it. Every refusal
in the list is cut at the same place, and nothing marks the text as truncated,
so it reads as the whole reason.
Fix
Same shape as #24: decide the precedence and shorten by dropping whole fields,
not by cutting bytes.
- Ranking rows: the id, config and time outrank the interval. Drop
[lo, hi] when it does not fit whole, as the chosen line now does — the
helper chosen_tail in app.rs is the pattern.
- Rejection reasons: these must wrap, not shorten. The rule and span are
the address; the sentence after them is the content, and the actionable
clause is at the end. Line/Paragraph with Wrap { trim: false } gives
the panel the two or three rows it needs. If a hard cap is wanted anyway,
an ellipsis has to mark it — a silently cut sentence is the failure here.
And a guard, so this stops recurring
Three views, three instances, two fixed one at a time. Worth a test over the
golden frames asserting that no rendered line reaches the right border with a
character that cannot end a field — a digit, ,, [, (, =, - — which
is exactly the scan that found both of these:
awk 'NR>1 && /│$/ { l=$0; sub(/│$/,"",l); if (l ~ /[,\[(=-]$/ || l ~ /[0-9]$/) print FILENAME": "$0 }' *.txt
It would have caught #24 before it shipped, and both of these with it.
Done when
Nothing in any view at eighty columns is cut mid-value or mid-word without an
ellipsis, and a test over the goldens says so.
2.0.0 fixed one line of this, in one view
The chosen configuration's interval was cut mid-value at eighty columns, and
#24 fixed it by dropping
the interval whole when it does not fit. The same defect stands in the two
views below the overview, and one of them is worse.
The ranking view loses every closing bracket
crates/launchbound-tui/tests/golden/ranking-scrolled-80x24.txt— the recordedframe, so this is shipped behaviour. All five visible rows:
One character short, every row. An unclosed interval reads as a rendering
fault rather than as a number.
The rejections view loses the half that tells you what to do
rejections-80x24.txt, and this is the view the README calls the point of thetool:
The next line is blank — this is truncation, not wrapping. The full reason is:
The reader gets as far as
64-threaand never reachessafe only at one warp (<= 32 threads)— the only part that says what to do about it. Every refusalin the list is cut at the same place, and nothing marks the text as truncated,
so it reads as the whole reason.
Fix
Same shape as #24: decide the precedence and shorten by dropping whole fields,
not by cutting bytes.
[lo, hi]when it does not fit whole, as the chosen line now does — thehelper
chosen_tailinapp.rsis the pattern.the address; the sentence after them is the content, and the actionable
clause is at the end.
Line/ParagraphwithWrap { trim: false }givesthe panel the two or three rows it needs. If a hard cap is wanted anyway,
an ellipsis has to mark it — a silently cut sentence is the failure here.
And a guard, so this stops recurring
Three views, three instances, two fixed one at a time. Worth a test over the
golden frames asserting that no rendered line reaches the right border with a
character that cannot end a field — a digit,
,,[,(,=,-— whichis exactly the scan that found both of these:
It would have caught #24 before it shipped, and both of these with it.
Done when
Nothing in any view at eighty columns is cut mid-value or mid-word without an
ellipsis, and a test over the goldens says so.