Skip to main content

max / makeover-tui

0.40.0: act_note, the muted line a control hint draws as makeover-layout 0.40.0 gives Act a hint, and this is where a terminal puts one: a row under the control, the same muted row field gives a field note, so the two read alike wherever they land. quasi-tui built this line itself for three releases because layout::Act carried no hint. Same line, same style; what changes is that a makeover host that is not quasi gets it too.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session
https://claude.ai/code/session_0136sbU8F6i9WrcvA3wn4Lgk
Author: Max Johnson <me@maxj.phd> · 2026-08-29 18:44 UTC
Signed with PGP, not checked
Commit: 66e3582470f3ca1424fb6d93b77a53e093fc2a81
Parent: 8cf68a1
2 files changed, +21 insertions, -2 deletions
M Cargo.toml +2 -2
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "makeover-tui"
3 - version = "0.39.0"
3 + version = "0.40.0"
4 4 edition = "2024"
5 5 description = "The terminal renderer for makeover-layout, on ratatui. Colour stops being the constraint above 256 entries; geometry never does, because an edge occupies a whole cell on every side."
6 6 license = "MIT"
@@ -19,7 +19,7 @@
19 19 # compile against an API added in a later one -- which is what `Depth::Overlay`
20 20 # would do here. The rest of the suite has pinned this way since
21 21 # makeover-webview found it the hard way.
22 - makeover-layout = "0.39.0"
22 + makeover-layout = "0.40.0"
23 23 # The cadence the activity mark blinks at, and the motion-off seam beside it.
24 24 # Taken rather than chosen here: `activity_lit` is this crate's only use of it,
25 25 # and the whole point is that the number is not this crate's to pick.
M src/piece.rs +19
@@ -513,6 +513,25 @@
513 513 Line::from(Span::styled(label, painted))
514 514 }
515 515
516 + /// The muted line a control's [`Act::hint`] draws as, or `None` where it has
517 + /// none.
518 + ///
519 + /// A terminal has no pointer, so the hover the other two renderers spend a hint
520 + /// on is not available and is not the thing anyway: what the description says
521 + /// is that the sentence is true, never that it is hidden. A row under the
522 + /// control is this renderer's answer, and it is the same muted row
523 + /// [`field`] gives a field's note, so the two read alike wherever they land.
524 + ///
525 + /// Its own function rather than extra lines out of [`act`], because a control
526 + /// is one [`Line`] everywhere it is drawn and a caller laying out a run needs
527 + /// to know it is placing two things. Added 0.40.0 with `Act::hint`; quasi-tui
528 + /// built this line itself before that.
529 + #[must_use]
530 + pub fn act_note(style: &PieceStyle, act: &Act<'_>) -> Option<Line<'static>> {
531 + act.hint
532 + .map(|hint| Line::from(Span::styled(hint.to_owned(), style.muted)))
533 + }
534 +
516 535 /// A control filled with the action colour, for the one press a screen is about.
517 536 ///
518 537 /// `[ Label ]` rather than `< Label >`, which is the weight difference a webview