Skip to main content

max / quasi

0.16.0: a table can say there is more Node::Table gains a Rest, mirroring Node::List. The rule is written onto the type while it is being changed: a container whose contents came from a query that can be partial carries one, which is List and Table and nothing else here. A Timeline is bounded by its Track so more of it is a different window; Stats is a fixed set; a Region holds nodes rather than rows. Each renderer draws the pager under the table and belonging to it, which is the adjacency goingson's task list lost when its paging had to be a separate Node::Act. The webview puts it after the role=table element for the reason a list's sits outside the ul: a table whose children are not rows says something untrue about its own shape.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-08-16 20:28 UTC
Signed with PGP, not checked
Commit: 5ddaf7cfa108b960e58e2bb29c701a834d461204
Parent: fe6d4b4
20 files changed, +180 insertions, -43 deletions
M Cargo.lock +10 -10
@@ -3090,11 +3090,11 @@
3090 3090
3091 3091 [[package]]
3092 3092 name = "quasi"
3093 - version = "0.15.0"
3093 + version = "0.16.0"
3094 3094
3095 3095 [[package]]
3096 3096 name = "quasi-axum"
3097 - version = "0.15.0"
3097 + version = "0.16.0"
3098 3098 dependencies = [
3099 3099 "axum",
3100 3100 "http",
@@ -3108,7 +3108,7 @@
3108 3108
3109 3109 [[package]]
3110 3110 name = "quasi-basics"
3111 - version = "0.15.0"
3111 + version = "0.16.0"
3112 3112 dependencies = [
3113 3113 "makeover-layout",
3114 3114 "quasi-http",
@@ -3118,7 +3118,7 @@
3118 3118
3119 3119 [[package]]
3120 3120 name = "quasi-bench"
3121 - version = "0.15.0"
3121 + version = "0.16.0"
3122 3122 dependencies = [
3123 3123 "dhat",
3124 3124 "makeover",
@@ -3133,7 +3133,7 @@
3133 3133
3134 3134 [[package]]
3135 3135 name = "quasi-http"
3136 - version = "0.15.0"
3136 + version = "0.16.0"
3137 3137 dependencies = [
3138 3138 "form_urlencoded",
3139 3139 "http",
@@ -3142,7 +3142,7 @@
3142 3142
3143 3143 [[package]]
3144 3144 name = "quasi-immediate"
3145 - version = "0.15.0"
3145 + version = "0.16.0"
3146 3146 dependencies = [
3147 3147 "docengine",
3148 3148 "egui",
@@ -3152,7 +3152,7 @@
3152 3152
3153 3153 [[package]]
3154 3154 name = "quasi-router"
3155 - version = "0.15.0"
3155 + version = "0.16.0"
3156 3156 dependencies = [
3157 3157 "makeover-layout",
3158 3158 ]
@@ -3169,7 +3169,7 @@
3169 3169
3170 3170 [[package]]
3171 3171 name = "quasi-tauri"
3172 - version = "0.15.0"
3172 + version = "0.16.0"
3173 3173 dependencies = [
3174 3174 "http",
3175 3175 "quasi-http",
@@ -3180,7 +3180,7 @@
3180 3180
3181 3181 [[package]]
3182 3182 name = "quasi-tui"
3183 - version = "0.15.0"
3183 + version = "0.16.0"
3184 3184 dependencies = [
3185 3185 "docengine",
3186 3186 "makeover",
@@ -3192,7 +3192,7 @@
3192 3192
3193 3193 [[package]]
3194 3194 name = "quasi-webview"
3195 - version = "0.15.0"
3195 + version = "0.16.0"
3196 3196 dependencies = [
3197 3197 "docengine",
3198 3198 "makeover-layout",
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-axum"
3 - version = "0.15.0"
3 + version = "0.16.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.15.0" }
17 - quasi-http = { path = "../quasi-http", version = "0.15.0" }
16 + quasi-router = { path = "../quasi-router", version = "0.16.0" }
17 + quasi-http = { path = "../quasi-http", version = "0.16.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.15.0" }
23 + quasi-webview = { path = "../quasi-webview", version = "0.16.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.15.0"
3 + version = "0.16.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.15.0" }
16 + quasi-router = { path = "../quasi-router", version = "0.16.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.15.0" }
24 - quasi-http = { path = "../quasi-http", version = "0.15.0" }
23 + quasi-webview = { path = "../quasi-webview", version = "0.16.0" }
24 + quasi-http = { path = "../quasi-http", version = "0.16.0" }
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-bench"
3 - version = "0.15.0"
3 + version = "0.16.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,13 +22,13 @@
22 22 count = ["dep:dhat"]
23 23
24 24 [dependencies]
25 - quasi-router = { path = "../quasi-router", version = "0.15.0" }
26 - quasi-webview = { path = "../quasi-webview", version = "0.15.0" }
27 - quasi-tui = { path = "../quasi-tui", version = "0.15.0" }
25 + quasi-router = { path = "../quasi-router", version = "0.16.0" }
26 + quasi-webview = { path = "../quasi-webview", version = "0.16.0" }
27 + quasi-tui = { path = "../quasi-tui", version = "0.16.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.15.0" }
31 + quasi-http = { path = "../quasi-http", version = "0.16.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,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-http"
3 - version = "0.15.0"
3 + version = "0.16.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.15.0" }
16 + quasi-router = { path = "../quasi-router", version = "0.16.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.15.0"
3 + version = "0.16.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,7 +12,7 @@
12 12 categories = ["gui"]
13 13
14 14 [dependencies]
15 - quasi-router = { path = "../quasi-router", version = "0.15.0" }
15 + quasi-router = { path = "../quasi-router", version = "0.16.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,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-router"
3 - version = "0.15.0"
3 + version = "0.16.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