Skip to main content

max / quasi

Add RegionKind::Group, and emit it as a section Takes makeover-layout 0.27.0's Region::Group: the container a Heading::Section names, which had none. Slot::group is the constructor, because Slot::new makes RegionKind::Pane the easy answer and Pane is what apps reached for instead. The webview emits a group as <section> and every other region as <div>. That is the renderer picking the element its host has for an intent the description states; nothing in the description asked for an element name, and a terminal answers the same intent with a rule. The terminal and egui needed no change. Group is Depth::Flat, so it draws its body in flow with no frame, which is what belonging-together looks like where there is no colour to spend on it. Whole workspace to 0.11.0: RegionKind is not non_exhaustive, so a member is breaking, and these release together.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-08-15 19:46 UTC
Signed with PGP, not checked
Commit: 2c2bacbc0a7dfb8ae178b6a7d4950bf0a9060ec9
Parent: bb5fbe8
15 files changed, +153 insertions, -70 deletions
M Cargo.lock +25 -31
@@ -2348,9 +2348,7 @@
2348 2348
2349 2349 [[package]]
2350 2350 name = "makeover-immediate"
2351 - version = "0.24.0"
2352 - source = "registry+https://github.com/rust-lang/crates.io-index"
2353 - checksum = "03abc4ce154f0ac923c8712215b8611fd9442471edea8abf945f7b64d2f07d49"
2351 + version = "0.25.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.26.1"
2363 - source = "registry+https://github.com/rust-lang/crates.io-index"
2364 - checksum = "58967567e03caca4b9b991734184d7952ac54e2075882cff42312f04f5214bab"
2360 + version = "0.27.0"
2365 2361
2366 2362 [[package]]
2367 2363 name = "makeover-touch"
2368 - version = "0.18.0"
2369 - source = "registry+https://github.com/rust-lang/crates.io-index"
2370 - checksum = "bf59a17d309e376a9c501235f3b6f6f8f3f94922ef46b4e9a780fc41149fe0be"
2364 + version = "0.19.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.24.0"
2379 - source = "registry+https://github.com/rust-lang/crates.io-index"
2380 - checksum = "0381a77d593cddee4a3420e383d9a90a9a98c91723532cafabbfc2c18766a84a"
2372 + version = "0.25.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.44.0"
2390 - source = "registry+https://github.com/rust-lang/crates.io-index"
2391 - checksum = "d6aa378fc8c66a495fccb751dbf1e6d4e56e07e16f0384e06606ebaa4ff5263d"
2381 + version = "0.45.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.10.0"
3085 + version = "0.11.0"
3096 3086
3097 3087 [[package]]
3098 3088 name = "quasi-axum"
3099 - version = "0.10.0"
3089 + version = "0.11.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.10.0"
3103 + version = "0.11.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.10.0"
3113 + version = "0.11.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.10.0"
3128 + version = "0.11.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.10.0"
3137 + version = "0.11.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.10.0"
3147 + version = "0.11.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.10.0"
3164 + version = "0.11.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.10.0"
3175 + version = "0.11.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.10.0"
3187 + version = "0.11.0"
3198 3188 dependencies = [
3199 3189 "docengine",
3200 3190 "makeover-layout",
@@ -5625,12 +5615,8 @@
5625 5615 checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
5626 5616
5627 5617 [[patch.unused]]
5628 - name = "synckit-client"
5629 - version = "0.8.0"
5630 -
5631 - [[patch.unused]]
5632 - name = "synckit-config"
5633 - version = "0.2.0"
5618 + name = "makeover-build"
5619 + version = "0.38.0"
5634 5620
5635 5621 [[patch.unused]]
5636 5622 name = "kberg"
@@ -5647,3 +5633,11 @@
5647 5633 [[patch.unused]]
5648 5634 name = "tagtree"
5649 5635 version = "0.4.0"
5636 +
5637 + [[patch.unused]]
5638 + name = "synckit-client"
5639 + version = "0.8.0"
5640 +
5641 + [[patch.unused]]
5642 + name = "synckit-config"
5643 + version = "0.2.0"
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-axum"
3 - version = "0.10.0"
3 + version = "0.11.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.10.0" }
17 - quasi-http = { path = "../quasi-http", version = "0.10.0" }
16 + quasi-router = { path = "../quasi-router", version = "0.11.0" }
17 + quasi-http = { path = "../quasi-http", version = "0.11.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.10.0" }
23 + quasi-webview = { path = "../quasi-webview", version = "0.11.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.10.0"
3 + version = "0.11.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.10.0" }
17 - makeover-layout = "0.26.1"
16 + quasi-router = { path = "../quasi-router", version = "0.11.0" }
17 + makeover-layout = "0.27.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.10.0" }
24 - quasi-http = { path = "../quasi-http", version = "0.10.0" }
23 + quasi-webview = { path = "../quasi-webview", version = "0.11.0" }
24 + quasi-http = { path = "../quasi-http", version = "0.11.0" }
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-bench"
3 - version = "0.10.0"
3 + version = "0.11.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.10.0" }
26 - quasi-webview = { path = "../quasi-webview", version = "0.10.0" }
27 - quasi-tui = { path = "../quasi-tui", version = "0.10.0" }
25 + quasi-router = { path = "../quasi-router", version = "0.11.0" }
26 + quasi-webview = { path = "../quasi-webview", version = "0.11.0" }
27 + quasi-tui = { path = "../quasi-tui", version = "0.11.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.10.0" }
32 - makeover-layout = "0.26.1"
33 - makeover-tui = { version = "0.24.0", features = ["theme"] }
31 + quasi-http = { path = "../quasi-http", version = "0.11.0" }
32 + makeover-layout = "0.27.0"
33 + makeover-tui = { version = "0.25.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.10.0"
3 + version = "0.11.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.10.0" }
16 + quasi-router = { path = "../quasi-router", version = "0.11.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.10.0"
3 + version = "0.11.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.10.0" }
15 + quasi-router = { path = "../quasi-router", version = "0.11.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.24.0"
20 + makeover-immediate = "0.25.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.10.0"
3 + version = "0.11.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.26.1"
16 + makeover-layout = "0.27.0"
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-tauri"
3 - version = "0.10.0"
3 + version = "0.11.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.10.0" }
17 - quasi-http = { path = "../quasi-http", version = "0.10.0" }
16 + quasi-router = { path = "../quasi-router", version = "0.11.0" }
17 + quasi-http = { path = "../quasi-http", version = "0.11.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.10.0" }
25 + quasi-webview = { path = "../quasi-webview", version = "0.11.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