0.18.0: a region member says what it is worth
Slot.body becomes Vec<Ranked>: a node, and what it is worth when there is not
room for everything. Until now the only placement that could declare its rank
was a column, so anything that was not a table hand-rolled its
responsiveness, and hand-rolling means measuring, and measuring means keeping
the measurement, which is how a layout becomes a function of the width it
came from rather than of the width it is at. audiofiles had four such
breakpoints and one measure-and-correct loop.
The rank sits on the placement and not on the node, the way Column already
puts it on the column and not on the cell's contents. Default Essential,
which never drops and is exactly what every region did before, so Slot::with
keeps its signature and every screen in the tree says what it said. The
narrowing member is Slot::with_ranked.
A wrapping Node::Optional was refused: a renderer that has not learned a
member draws it as one muted stand-in line, so wrapped content would go
invisible in any renderer that had not caught up, which is the wrong failure
for a member whose job is deciding what disappears. A type change makes every
renderer fail to compile instead.
Each renderer raises a cutoff over CUTOFFS and never counts, so the same
width is the same answer whatever came before it. The webview emits the drop
class makeover-webview's stylesheet already hides per size class and is told
no width at all; the terminal reads a cutoff off its cells; egui reads one
off makeover-geometry's size class boundaries, quoted rather than reinvented,
so a window and a webview narrow at the same width.
Two things this leaves open, both recorded in the code. The terminal's focus
walk has no width and so still reaches a member the width has dropped, and
fixing that means the navigation walk knowing what the drawing knows.
makeover-webview's priority-to-class mapping is private, so quasi-webview
names cell-drops-first and cell-drops-next by hand rather than sharing one
encoding.
Also: the generated template pinned quasi at 0.10 against a remote at 0.14,
which cargo rejects at resolution, and makeover-tui at 0.18 against a
published 0.25. Both moved to what the tree holds.
25 files changed,
+514 insertions,
-82 deletions
| 3092 |
3092 |
|
|
| 3093 |
3093 |
|
[[package]]
|
| 3094 |
3094 |
|
name = "quasi"
|
| 3095 |
|
- |
version = "0.17.0"
|
|
3095 |
+ |
version = "0.18.0"
|
| 3096 |
3096 |
|
|
| 3097 |
3097 |
|
[[package]]
|
| 3098 |
3098 |
|
name = "quasi-axum"
|
| 3099 |
|
- |
version = "0.17.0"
|
|
3099 |
+ |
version = "0.18.0"
|
| 3100 |
3100 |
|
dependencies = [
|
| 3101 |
3101 |
|
"axum",
|
| 3102 |
3102 |
|
"http",
|
| 3110 |
3110 |
|
|
| 3111 |
3111 |
|
[[package]]
|
| 3112 |
3112 |
|
name = "quasi-basics"
|
| 3113 |
|
- |
version = "0.17.0"
|
|
3113 |
+ |
version = "0.18.0"
|
| 3114 |
3114 |
|
dependencies = [
|
| 3115 |
3115 |
|
"makeover-layout",
|
| 3116 |
3116 |
|
"quasi-http",
|
| 3120 |
3120 |
|
|
| 3121 |
3121 |
|
[[package]]
|
| 3122 |
3122 |
|
name = "quasi-bench"
|
| 3123 |
|
- |
version = "0.17.0"
|
|
3123 |
+ |
version = "0.18.0"
|
| 3124 |
3124 |
|
dependencies = [
|
| 3125 |
3125 |
|
"dhat",
|
| 3126 |
3126 |
|
"makeover",
|
| 3135 |
3135 |
|
|
| 3136 |
3136 |
|
[[package]]
|
| 3137 |
3137 |
|
name = "quasi-http"
|
| 3138 |
|
- |
version = "0.17.0"
|
|
3138 |
+ |
version = "0.18.0"
|
| 3139 |
3139 |
|
dependencies = [
|
| 3140 |
3140 |
|
"form_urlencoded",
|
| 3141 |
3141 |
|
"http",
|
| 3144 |
3144 |
|
|
| 3145 |
3145 |
|
[[package]]
|
| 3146 |
3146 |
|
name = "quasi-immediate"
|
| 3147 |
|
- |
version = "0.17.0"
|
|
3147 |
+ |
version = "0.18.0"
|
| 3148 |
3148 |
|
dependencies = [
|
| 3149 |
3149 |
|
"docengine",
|
| 3150 |
3150 |
|
"egui",
|
| 3154 |
3154 |
|
|
| 3155 |
3155 |
|
[[package]]
|
| 3156 |
3156 |
|
name = "quasi-router"
|
| 3157 |
|
- |
version = "0.17.0"
|
|
3157 |
+ |
version = "0.18.0"
|
| 3158 |
3158 |
|
dependencies = [
|
| 3159 |
3159 |
|
"makeover-layout",
|
| 3160 |
3160 |
|
]
|
| 3171 |
3171 |
|
|
| 3172 |
3172 |
|
[[package]]
|
| 3173 |
3173 |
|
name = "quasi-tauri"
|
| 3174 |
|
- |
version = "0.17.0"
|
|
3174 |
+ |
version = "0.18.0"
|
| 3175 |
3175 |
|
dependencies = [
|
| 3176 |
3176 |
|
"http",
|
| 3177 |
3177 |
|
"quasi-http",
|
| 3182 |
3182 |
|
|
| 3183 |
3183 |
|
[[package]]
|
| 3184 |
3184 |
|
name = "quasi-tui"
|
| 3185 |
|
- |
version = "0.17.0"
|
|
3185 |
+ |
version = "0.18.0"
|
| 3186 |
3186 |
|
dependencies = [
|
| 3187 |
3187 |
|
"docengine",
|
| 3188 |
3188 |
|
"makeover",
|
| 3194 |
3194 |
|
|
| 3195 |
3195 |
|
[[package]]
|
| 3196 |
3196 |
|
name = "quasi-webview"
|
| 3197 |
|
- |
version = "0.17.0"
|
|
3197 |
+ |
version = "0.18.0"
|
| 3198 |
3198 |
|
dependencies = [
|
| 3199 |
3199 |
|
"docengine",
|
| 3200 |
3200 |
|
"makeover-layout",
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-axum"
|
| 3 |
|
- |
version = "0.17.0"
|
|
3 |
+ |
version = "0.18.0"
|
| 4 |
4 |
|
description = "The axum host adapter for quasi-router: an HTTP request in, a rendered description out"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|
| 13 |
13 |
|
workspace = true
|
| 14 |
14 |
|
|
| 15 |
15 |
|
[dependencies]
|
| 16 |
|
- |
quasi-router = { path = "../quasi-router", version = "0.17.0" }
|
| 17 |
|
- |
quasi-http = { path = "../quasi-http", version = "0.17.0" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.18.0" }
|
|
17 |
+ |
quasi-http = { path = "../quasi-http", version = "0.18.0" }
|
| 18 |
18 |
|
axum = "0.8.8"
|
| 19 |
19 |
|
http = "1.3.1"
|
| 20 |
20 |
|
tokio = { version = "1.50.0", features = ["rt"] }
|
| 21 |
21 |
|
|
| 22 |
22 |
|
[dev-dependencies]
|
| 23 |
|
- |
quasi-webview = { path = "../quasi-webview", version = "0.17.0" }
|
|
23 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.18.0" }
|
| 24 |
24 |
|
tokio = { version = "1.50.0", features = ["macros", "rt-multi-thread"] }
|
| 25 |
25 |
|
tower = { version = "0.5.3", features = ["util"] }
|
| 26 |
26 |
|
http-body-util = "0.1.3"
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-basics"
|
| 3 |
|
- |
version = "0.17.0"
|
|
3 |
+ |
version = "0.18.0"
|
| 4 |
4 |
|
description = "The first-party widget set: named assemblies of primitives, shared across our apps"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|
| 13 |
13 |
|
workspace = true
|
| 14 |
14 |
|
|
| 15 |
15 |
|
[dependencies]
|
| 16 |
|
- |
quasi-router = { path = "../quasi-router", version = "0.17.0" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.18.0" }
|
| 17 |
17 |
|
makeover-layout = "0.27.3"
|
| 18 |
18 |
|
|
| 19 |
19 |
|
[dev-dependencies]
|
| 20 |
20 |
|
# A widget's guarantees are claims about what a renderer draws, so they are
|
| 21 |
21 |
|
# tested against a real one rather than by walking the tree the assembly just
|
| 22 |
22 |
|
# built. The webview is the renderer that recognises names today.
|
| 23 |
|
- |
quasi-webview = { path = "../quasi-webview", version = "0.17.0" }
|
| 24 |
|
- |
quasi-http = { path = "../quasi-http", version = "0.17.0" }
|
|
23 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.18.0" }
|
|
24 |
+ |
quasi-http = { path = "../quasi-http", version = "0.18.0" }
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-bench"
|
| 3 |
|
- |
version = "0.17.0"
|
|
3 |
+ |
version = "0.18.0"
|
| 4 |
4 |
|
description = "What a described screen costs to render, in time and in allocations"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|
| 22 |
22 |
|
count = ["dep:dhat"]
|
| 23 |
23 |
|
|
| 24 |
24 |
|
[dependencies]
|
| 25 |
|
- |
quasi-router = { path = "../quasi-router", version = "0.17.0" }
|
| 26 |
|
- |
quasi-webview = { path = "../quasi-webview", version = "0.17.0" }
|
| 27 |
|
- |
quasi-tui = { path = "../quasi-tui", version = "0.17.0" }
|
|
25 |
+ |
quasi-router = { path = "../quasi-router", version = "0.18.0" }
|
|
26 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.18.0" }
|
|
27 |
+ |
quasi-tui = { path = "../quasi-tui", version = "0.18.0" }
|
| 28 |
28 |
|
# `Serves` is the trait carrying `screen` and `fragment`, which is what the
|
| 29 |
29 |
|
# webview is measured through. Taken directly rather than through quasi-webview
|
| 30 |
30 |
|
# because a bench calling a trait method should name the trait it calls.
|
| 31 |
|
- |
quasi-http = { path = "../quasi-http", version = "0.17.0" }
|
|
31 |
+ |
quasi-http = { path = "../quasi-http", version = "0.18.0" }
|
| 32 |
32 |
|
makeover-layout = "0.27.3"
|
| 33 |
33 |
|
makeover-tui = { version = "0.25.0", features = ["theme"] }
|
| 34 |
34 |
|
# Only to load a bundled theme file. `makeover_tui::Theme` is `#[non_exhaustive]`,
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-http"
|
| 3 |
|
- |
version = "0.17.0"
|
|
3 |
+ |
version = "0.18.0"
|
| 4 |
4 |
|
description = "The http-shaped seam quasi's webview host adapters share: decoding in, a rendered description out"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|
| 13 |
13 |
|
workspace = true
|
| 14 |
14 |
|
|
| 15 |
15 |
|
[dependencies]
|
| 16 |
|
- |
quasi-router = { path = "../quasi-router", version = "0.17.0" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.18.0" }
|
| 17 |
17 |
|
http = "1.3.1"
|
| 18 |
18 |
|
form_urlencoded = "1.2.2"
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-immediate"
|
| 3 |
|
- |
version = "0.17.0"
|
|
3 |
+ |
version = "0.18.0"
|
| 4 |
4 |
|
edition = "2024"
|
| 5 |
5 |
|
description = "The immediate-mode renderer for quasi-router: a described screen in, an egui frame out. Immediate mode is the constraint that matters, not the library."
|
| 6 |
6 |
|
license = "MIT"
|
| 12 |
12 |
|
categories = ["gui"]
|
| 13 |
13 |
|
|
| 14 |
14 |
|
[dependencies]
|
| 15 |
|
- |
quasi-router = { path = "../quasi-router", version = "0.17.0" }
|
|
15 |
+ |
quasi-router = { path = "../quasi-router", version = "0.18.0" }
|
| 16 |
16 |
|
# The node drawing, which is the makeover layer's and not this crate's. Every
|
| 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
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-router"
|
| 3 |
|
- |
version = "0.17.0"
|
|
3 |
+ |
version = "0.18.0"
|
| 4 |
4 |
|
description = "Host-agnostic router: a request in, a renderer-agnostic description out"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|