Follow the Bespoke split, and let a terminal say when a fill is missing
`RegionKind::Bespoke` becomes `Handover` and `Ceded`, with `Slot::handover`
and `Slot::ceded`. The renderers are where the split pays: quasi-tui gains
`node::UNFILLED` and quasi-immediate `unfilled()`, siblings of the
`UNDRAWN`/`undrawn` idioms already there, and an unfilled `Handover` now
says the fill is missing instead of drawing an empty box. An unfilled
`Ceded` stays quiet, because nothing is owed. quasi-webview treats the two
alike, which is right there: it always has markup.
`a_fill_counts_toward_the_rows_its_region_wants` moves onto a `ceded` slot,
since an unfilled handover is no longer zero rows, and a second test
asserts the distinction directly and that the notice goes away once the
host supplies what it owed.
- Co-Authored-By
- Claude Opus 5 (1M context) <noreply@anthropic.com>
- Claude-Session
- https://claude.ai/code/session_01MptwXZ8k65v19rFmdGAyki
18 files changed,
+215 insertions,
-79 deletions
| 2656 |
2656 |
|
|
| 2657 |
2657 |
|
[[package]]
|
| 2658 |
2658 |
|
name = "makeover-immediate"
|
| 2659 |
|
- |
version = "0.43.0"
|
|
2659 |
+ |
version = "0.44.0"
|
| 2660 |
2660 |
|
dependencies = [
|
| 2661 |
2661 |
|
"egui",
|
| 2662 |
2662 |
|
"egui_extras",
|
| 2666 |
2666 |
|
|
| 2667 |
2667 |
|
[[package]]
|
| 2668 |
2668 |
|
name = "makeover-layout"
|
| 2669 |
|
- |
version = "0.42.0"
|
|
2669 |
+ |
version = "0.43.0"
|
| 2670 |
2670 |
|
|
| 2671 |
2671 |
|
[[package]]
|
| 2672 |
2672 |
|
name = "makeover-timing"
|
| 2679 |
2679 |
|
|
| 2680 |
2680 |
|
[[package]]
|
| 2681 |
2681 |
|
name = "makeover-touch"
|
| 2682 |
|
- |
version = "0.32.0"
|
|
2682 |
+ |
version = "0.33.0"
|
| 2683 |
2683 |
|
dependencies = [
|
| 2684 |
2684 |
|
"makeover-geometry",
|
| 2685 |
2685 |
|
"makeover-layout",
|
| 2687 |
2687 |
|
|
| 2688 |
2688 |
|
[[package]]
|
| 2689 |
2689 |
|
name = "makeover-tui"
|
| 2690 |
|
- |
version = "0.42.0"
|
|
2690 |
+ |
version = "0.43.0"
|
| 2691 |
2691 |
|
dependencies = [
|
| 2692 |
2692 |
|
"makeover",
|
| 2693 |
2693 |
|
"makeover-layout",
|
| 2697 |
2697 |
|
|
| 2698 |
2698 |
|
[[package]]
|
| 2699 |
2699 |
|
name = "makeover-webview"
|
| 2700 |
|
- |
version = "0.71.0"
|
|
2700 |
+ |
version = "0.72.0"
|
| 2701 |
2701 |
|
dependencies = [
|
| 2702 |
2702 |
|
"makeover-geometry",
|
| 2703 |
2703 |
|
"makeover-layout",
|
| 6261 |
6261 |
|
name = "synckit-client"
|
| 6262 |
6262 |
|
version = "0.10.0"
|
| 6263 |
6263 |
|
|
|
6264 |
+ |
[[patch.unused]]
|
|
6265 |
+ |
name = "alloy_tui"
|
|
6266 |
+ |
version = "14.0.0"
|
|
6267 |
+ |
|
|
6268 |
+ |
[[patch.unused]]
|
|
6269 |
+ |
name = "makeover-build"
|
|
6270 |
+ |
version = "0.65.0"
|
|
6271 |
+ |
|
| 6264 |
6272 |
|
[[patch.unused]]
|
| 6265 |
6273 |
|
name = "quasi-type"
|
| 6266 |
6274 |
|
version = "0.1.3"
|
| 6280 |
6288 |
|
[[patch.unused]]
|
| 6281 |
6289 |
|
name = "tagtree"
|
| 6282 |
6290 |
|
version = "0.4.1"
|
| 6283 |
|
- |
|
| 6284 |
|
- |
[[patch.unused]]
|
| 6285 |
|
- |
name = "alloy_tui"
|
| 6286 |
|
- |
version = "13.0.0"
|
| 6287 |
|
- |
|
| 6288 |
|
- |
[[patch.unused]]
|
| 6289 |
|
- |
name = "makeover-build"
|
| 6290 |
|
- |
version = "0.64.0"
|
| 14 |
14 |
|
|
| 15 |
15 |
|
[dependencies]
|
| 16 |
16 |
|
quasi-router = { path = "../quasi-router", version = "0.97.0" }
|
| 17 |
|
- |
makeover-layout = "0.42"
|
|
17 |
+ |
makeover-layout = "0.43"
|
| 18 |
18 |
|
|
| 19 |
19 |
|
[dev-dependencies]
|
| 20 |
20 |
|
# A widget's guarantees are claims about what a renderer draws, so they are
|
| 33 |
33 |
|
# webview is measured through. Taken directly rather than through quasi-webview
|
| 34 |
34 |
|
# because a bench calling a trait method should name the trait it calls.
|
| 35 |
35 |
|
quasi-http = { path = "../quasi-http", version = "0.97.0" }
|
| 36 |
|
- |
makeover-layout = "0.42"
|
|
36 |
+ |
makeover-layout = "0.43"
|
| 37 |
37 |
|
# The renderer's own escaper, so the staged path fills a hole exactly the way
|
| 38 |
38 |
|
# `Node::Text` does and the guarantee is not quietly reimplemented.
|
| 39 |
|
- |
makeover-webview = "0.71"
|
| 40 |
|
- |
makeover-tui = { version = "0.42", features = ["theme"] }
|
|
39 |
+ |
makeover-webview = "0.72"
|
|
40 |
+ |
makeover-tui = { version = "0.43", features = ["theme"] }
|
| 41 |
41 |
|
# Only to load a bundled theme file. `makeover_tui::Theme` is `#[non_exhaustive]`,
|
| 42 |
42 |
|
# so `Theme::from_theme` is the one way to get one, the same reason quasi-tui's
|
| 43 |
43 |
|
# tests take this.
|
| 17 |
17 |
|
# widget here that is not a container comes from it: a screen walk that painted
|
| 18 |
18 |
|
# its own meter would be the divergence the suite exists to end, one copy per
|
| 19 |
19 |
|
# renderer instead of one copy per app.
|
| 20 |
|
- |
makeover-immediate = "0.43"
|
|
20 |
+ |
makeover-immediate = "0.44"
|
| 21 |
21 |
|
# The one place a duration is named rather than numbered. `Intent::Dismiss` is
|
| 22 |
22 |
|
# how long a transient notice lives, and `notice_lifetime` is the seam: the
|
| 23 |
23 |
|
# description says a toast goes away on its own and declines to say when, so
|
| 13 |
13 |
|
workspace = true
|
| 14 |
14 |
|
|
| 15 |
15 |
|
[dependencies]
|
| 16 |
|
- |
makeover-layout = "0.42"
|
|
16 |
+ |
makeover-layout = "0.43"
|
| 14 |
14 |
|
|
| 15 |
15 |
|
[dependencies]
|
| 16 |
16 |
|
quasi-router = { path = "../quasi-router", version = "0.97.0" }
|
| 17 |
|
- |
makeover-layout = "0.42"
|
|
17 |
+ |
makeover-layout = "0.43"
|
| 18 |
18 |
|
# The depth palette, the theme bridge and the table. Everything else this crate
|
| 19 |
19 |
|
# draws is written here first and lifted upstream once a second consumer wants
|
| 20 |
20 |
|
# it, which is the order the suite has always moved in: the constrained consumer
|
| 21 |
21 |
|
# finds the shape, and the shared crate takes it after it is known rather than
|
| 22 |
22 |
|
# before.
|
| 23 |
|
- |
makeover-tui = { version = "0.42", features = ["theme"] }
|
|
23 |
+ |
makeover-tui = { version = "0.43", features = ["theme"] }
|
| 24 |
24 |
|
# The one place a duration is named rather than numbered. `Intent::Dismiss` is
|
| 25 |
25 |
|
# how long a transient notice lives, and `notice_lifetime` is the seam: the
|
| 26 |
26 |
|
# description says a toast goes away on its own and declines to say when, so
|
| 15 |
15 |
|
[dependencies]
|
| 16 |
16 |
|
quasi-router = { path = "../quasi-router", version = "0.97.0" }
|
| 17 |
17 |
|
quasi-http = { path = "../quasi-http", version = "0.97.0" }
|
| 18 |
|
- |
makeover-layout = "0.42"
|
| 19 |
|
- |
makeover-webview = "0.71"
|
|
18 |
+ |
makeover-layout = "0.43"
|
|
19 |
+ |
makeover-webview = "0.72"
|
| 20 |
20 |
|
# `Node::Rich` carries markdown source and this is what turns it into markup.
|
| 21 |
21 |
|
# Sanitising comes with it, which is why the node can carry what a user typed.
|
| 22 |
22 |
|
#
|
| 31 |
31 |
|
//!
|
| 32 |
32 |
|
//! A thing that needs a member the vocabulary does not have is still a finding
|
| 33 |
33 |
|
//! about the vocabulary. A thing specific to one app is still
|
| 34 |
|
- |
//! [`Region::Bespoke`](makeover_layout::Region::Bespoke).
|
|
34 |
+ |
//! [`Region::Handover`](makeover_layout::Region::Handover).
|
| 35 |
35 |
|
//!
|
| 36 |
36 |
|
//! # Adopting one in a webview app
|
| 37 |
37 |
|
//!
|