Skip to main content

max / quasi

Carry the bounded number and the unavailable option through the router makeover-layout 0.28.0. The owned mirrors grow with the borrowed ones: Choice takes unavailable and an unless builder, Field takes step and a range constructor whose bounds are arguments rather than builders, because a range that forgot them has nothing to slide across.
Author: Max Johnson <me@maxj.phd> · 2026-08-17 18:52 UTC
Commit: 6d89c0663b91d5e984beb98ef91ca8f5d6a0f63e
Parent: 4025554
13 files changed, +127 insertions, -102 deletions
M Cargo.lock +20 -26
@@ -2348,9 +2348,7 @@
2348 2348
2349 2349 [[package]]
2350 2350 name = "makeover-immediate"
2351 - version = "0.27.0"
2352 - source = "registry+https://github.com/rust-lang/crates.io-index"
2353 - checksum = "70330efb17e6cb4fdc10e6483960dcef51d3cd2770b89565a11e3697badaeab0"
2351 + version = "0.28.0"
2354 2352 dependencies = [
2355 2353 "egui",
2356 2354 "egui_extras",
@@ -2359,15 +2357,11 @@
2359 2357
2360 2358 [[package]]
2361 2359 name = "makeover-layout"
2362 - version = "0.27.5"
2363 - source = "registry+https://github.com/rust-lang/crates.io-index"
2364 - checksum = "ed4a0a89e118db1cc010c72e696741b3701c83bfe6bec5db06e29515b4c1d216"
2360 + version = "0.28.0"
2365 2361
2366 2362 [[package]]
2367 2363 name = "makeover-touch"
2368 - version = "0.19.0"
2369 - source = "registry+https://github.com/rust-lang/crates.io-index"
2370 - checksum = "c09c064316da4e4d403dd09bd0617b25033b2503cba539c02b4b5b857435c089"
2364 + version = "0.20.0"
2371 2365 dependencies = [
2372 2366 "makeover-geometry",
2373 2367 "makeover-layout",
@@ -2375,9 +2369,7 @@
2375 2369
2376 2370 [[package]]
2377 2371 name = "makeover-tui"
2378 - version = "0.26.0"
2379 - source = "registry+https://github.com/rust-lang/crates.io-index"
2380 - checksum = "4f53b048e40476d8b7ac0570ee656d897c0e3143e2c4be171ed44071b1b3712c"
2372 + version = "0.27.0"
2381 2373 dependencies = [
2382 2374 "makeover",
2383 2375 "makeover-layout",
@@ -2386,9 +2378,7 @@
2386 2378
2387 2379 [[package]]
2388 2380 name = "makeover-webview"
2389 - version = "0.46.0"
2390 - source = "registry+https://github.com/rust-lang/crates.io-index"
2391 - checksum = "8389b1ddc25547f992d51334f19a5391c9a8fc36968b5aa02da9da283100b7fc"
2381 + version = "0.47.0"
2392 2382 dependencies = [
2393 2383 "makeover-geometry",
2394 2384 "makeover-layout",
@@ -3092,11 +3082,11 @@
3092 3082
3093 3083 [[package]]
3094 3084 name = "quasi"
3095 - version = "0.18.0"
3085 + version = "0.19.0"
3096 3086
3097 3087 [[package]]
3098 3088 name = "quasi-axum"
3099 - version = "0.18.0"
3089 + version = "0.19.0"
3100 3090 dependencies = [
3101 3091 "axum",
3102 3092 "http",
@@ -3110,7 +3100,7 @@
3110 3100
3111 3101 [[package]]
3112 3102 name = "quasi-basics"
3113 - version = "0.18.0"
3103 + version = "0.19.0"
3114 3104 dependencies = [
3115 3105 "makeover-layout",
3116 3106 "quasi-http",
@@ -3120,7 +3110,7 @@
3120 3110
3121 3111 [[package]]
3122 3112 name = "quasi-bench"
3123 - version = "0.18.0"
3113 + version = "0.19.0"
3124 3114 dependencies = [
3125 3115 "dhat",
3126 3116 "makeover",
@@ -3135,7 +3125,7 @@
3135 3125
3136 3126 [[package]]
3137 3127 name = "quasi-http"
3138 - version = "0.18.0"
3128 + version = "0.19.0"
3139 3129 dependencies = [
3140 3130 "form_urlencoded",
3141 3131 "http",
@@ -3144,7 +3134,7 @@
3144 3134
3145 3135 [[package]]
3146 3136 name = "quasi-immediate"
3147 - version = "0.18.0"
3137 + version = "0.19.0"
3148 3138 dependencies = [
3149 3139 "docengine",
3150 3140 "egui",
@@ -3154,7 +3144,7 @@
3154 3144
3155 3145 [[package]]
3156 3146 name = "quasi-router"
3157 - version = "0.18.0"
3147 + version = "0.19.0"
3158 3148 dependencies = [
3159 3149 "makeover-layout",
3160 3150 ]
@@ -3171,7 +3161,7 @@
3171 3161
3172 3162 [[package]]
3173 3163 name = "quasi-tauri"
3174 - version = "0.18.0"
3164 + version = "0.19.0"
3175 3165 dependencies = [
3176 3166 "http",
3177 3167 "quasi-http",
@@ -3182,7 +3172,7 @@
3182 3172
3183 3173 [[package]]
3184 3174 name = "quasi-tui"
3185 - version = "0.18.0"
3175 + version = "0.19.0"
3186 3176 dependencies = [
3187 3177 "docengine",
3188 3178 "makeover",
@@ -3194,7 +3184,7 @@
3194 3184
3195 3185 [[package]]
3196 3186 name = "quasi-webview"
3197 - version = "0.18.0"
3187 + version = "0.19.0"
3198 3188 dependencies = [
3199 3189 "docengine",
3200 3190 "makeover-layout",
@@ -4259,7 +4249,7 @@
4259 4249 "serde_with",
4260 4250 "swift-rs",
4261 4251 "thiserror 2.0.20",
4262 - "toml 0.9.12+spec-1.1.0",
4252 + "toml 1.1.4+spec-1.1.0",
4263 4253 "url",
4264 4254 "urlpattern",
4265 4255 "uuid",
@@ -5647,3 +5637,7 @@
5647 5637 [[patch.unused]]
5648 5638 name = "synckit-config"
5649 5639 version = "0.2.0"
5640 +
5641 + [[patch.unused]]
5642 + name = "quasi-type"
5643 + version = "0.1.0"
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-axum"
3 - version = "0.18.0"
3 + version = "0.19.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,14 +13,14 @@
13 13 workspace = true
14 14
15 15 [dependencies]
16 - quasi-router = { path = "../quasi-router", version = "0.18.0" }
17 - quasi-http = { path = "../quasi-http", version = "0.18.0" }
16 + quasi-router = { path = "../quasi-router", version = "0.19.0" }
17 + quasi-http = { path = "../quasi-http", version = "0.19.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.18.0" }
23 + quasi-webview = { path = "../quasi-webview", version = "0.19.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,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-basics"
3 - version = "0.18.0"
3 + version = "0.19.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,12 +13,12 @@
13 13 workspace = true
14 14
15 15 [dependencies]
16 - quasi-router = { path = "../quasi-router", version = "0.18.0" }
17 - makeover-layout = "0.27.5"
16 + quasi-router = { path = "../quasi-router", version = "0.19.0" }
17 + makeover-layout = "0.28.0"
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.18.0" }
24 - quasi-http = { path = "../quasi-http", version = "0.18.0" }
23 + quasi-webview = { path = "../quasi-webview", version = "0.19.0" }
24 + quasi-http = { path = "../quasi-http", version = "0.19.0" }
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-bench"
3 - version = "0.18.0"
3 + version = "0.19.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,15 +22,15 @@
22 22 count = ["dep:dhat"]
23 23
24 24 [dependencies]
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" }
25 + quasi-router = { path = "../quasi-router", version = "0.19.0" }
26 + quasi-webview = { path = "../quasi-webview", version = "0.19.0" }
27 + quasi-tui = { path = "../quasi-tui", version = "0.19.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.18.0" }
32 - makeover-layout = "0.27.5"
33 - makeover-tui = { version = "0.26.0", features = ["theme"] }
31 + quasi-http = { path = "../quasi-http", version = "0.19.0" }
32 + makeover-layout = "0.28.0"
33 + makeover-tui = { version = "0.27.0", features = ["theme"] }
34 34 # Only to load a bundled theme file. `makeover_tui::Theme` is `#[non_exhaustive]`,
35 35 # so `Theme::from_theme` is the one way to get one, the same reason quasi-tui's
36 36 # tests take this.
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-http"
3 - version = "0.18.0"
3 + version = "0.19.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,6 +13,6 @@
13 13 workspace = true
14 14
15 15 [dependencies]
16 - quasi-router = { path = "../quasi-router", version = "0.18.0" }
16 + quasi-router = { path = "../quasi-router", version = "0.19.0" }
17 17 http = "1.3.1"
18 18 form_urlencoded = "1.2.2"
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-immediate"
3 - version = "0.18.0"
3 + version = "0.19.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 +12,12 @@
12 12 categories = ["gui"]
13 13
14 14 [dependencies]
15 - quasi-router = { path = "../quasi-router", version = "0.18.0" }
15 + quasi-router = { path = "../quasi-router", version = "0.19.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
19 19 # renderer instead of one copy per app.
20 - makeover-immediate = "0.27.0"
20 + makeover-immediate = "0.28.0"
21 21 egui = { version = "0.35", default-features = false }
22 22 # Markdown to text for `Node::Rich`. The same crate the webview renderer takes,
23 23 # reading the same source: what differs is that it can emit markup and this
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-router"
3 - version = "0.18.0"
3 + version = "0.19.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
@@ -13,4 +13,4 @@
13 13 workspace = true
14 14
15 15 [dependencies]
16 - makeover-layout = "0.27.5"
16 + makeover-layout = "0.28.0"
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-tauri"
3 - version = "0.18.0"
3 + version = "0.19.0"
4 4 description = "The Tauri custom-protocol host adapter for quasi-router: a webview request in, a rendered description out"
5 5 edition.workspace = true
6 6 rust-version.workspace = true
@@ -13,8 +13,8 @@
13 13 workspace = true
14 14
15 15 [dependencies]
16 - quasi-router = { path = "../quasi-router", version = "0.18.0" }
17 - quasi-http = { path = "../quasi-http", version = "0.18.0" }
16 + quasi-router = { path = "../quasi-router", version = "0.19.0" }
17 + quasi-http = { path = "../quasi-http", version = "0.19.0" }
18 18 http = "1.3.1"
19 19 # Default features off: this crate uses tauri's protocol registration and its
20 20 # blocking pool, and nothing else. An app brings the features it wants, and the
@@ -22,7 +22,7 @@
22 22 tauri = { version = "2.11.5", default-features = false }
23 23
24 24 [dev-dependencies]
25 - quasi-webview = { path = "../quasi-webview", version = "0.18.0" }
25 + quasi-webview = { path = "../quasi-webview", version = "0.19.0" }
26 26 # The doctest names a concrete `Runtime`, and `Wry` is behind a default feature
27 27 # this crate does not otherwise ask for. Only the example needs it: nothing in
28 28 # the test module builds a window, which is what keeps them runnable with no