Skip to main content

max / makeover-immediate

0.37.0: draw a field's note, between the hint and the error makeover-layout 0.36.0's third message channel. This host has the room for all three, so unlike makeover-tui it never has to choose -- hint, then note, then error, the order makeover-webview names them in `aria-describedby`. The note carries its own tone and `Palette::tone` resolves it, so a Neutral note reads as ordinary content rather than a colour this renderer picked.
Author: Max Johnson <me@maxj.phd> · 2026-08-27 23:28 UTC
Signed with PGP, not checked
Commit: 0ace29963503a1a6494aa40a13991254dbde1064
Parent: 9f79d6e
2 files changed, +14 insertions, -6 deletions
M Cargo.toml +2 -2
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "makeover-immediate"
3 - version = "0.36.0"
3 + version = "0.37.0"
4 4 edition = "2024"
5 5 description = "The immediate-mode renderer for makeover-layout. Immediate mode is the constraint that matters, not the library: no cascade, no retained tree, one stroke per widget. Backed by egui."
6 6 license = "MIT"
@@ -12,7 +12,7 @@
12 12 # Exact patch rather than the minor, as the rest of the suite pins: a
13 13 # minor-only requirement is satisfied by a consumer lock holding an earlier
14 14 # patch, which then fails to compile against an API added in a later one.
15 - makeover-layout = "0.35.0"
15 + makeover-layout = "0.36.0"
16 16 # The cadence the activity mark blinks at, and the motion-off seam beside it.
17 17 # Taken rather than chosen here: three renderers draw this mark and a number
18 18 # picked per renderer is three heartbeats for one wait.
M src/lib.rs +12 -4
@@ -1247,13 +1247,21 @@
1247 1247 None => response,
1248 1248 };
1249 1249
1250 - // Standing help first, then what is wrong now. Both, in that order,
1251 - // for the reason the webview renderer names both in
1252 - // `aria-describedby`: an error appearing must not take the hint
1253 - // away with it.
1250 + // Standing help, then what the answer costs, then what is wrong
1251 + // now. All three, in that order, for the reason the webview
1252 + // renderer names all three in `aria-describedby`: an error
1253 + // appearing must not take the hint away with it. This host has the
1254 + // room, so unlike makeover-tui it never has to choose -- the
1255 + // precedence rule on `Field::note` is for the renderer that does.
1254 1256 if let Some(hint) = field.hint {
1255 1257 ui.label(RichText::new(hint).color(palette.content_muted));
1256 1258 }
1259 + // The note carries its own tone, and `Palette::tone` is what
1260 + // resolves it, so a Neutral note is ordinary content rather than
1261 + // a colour this renderer picked.
1262 + if let Some((tone, note)) = field.note {
1263 + ui.label(RichText::new(note).color(palette.tone(tone)));
1264 + }
1257 1265 if let Some(error) = field.error {
1258 1266 ui.label(RichText::new(error).color(palette.danger));
1259 1267 }