Skip to main content

max / quasi

0.28.2: take makeover-layout 0.30, and carry a markdown field through The vocabulary adds FieldKind::Rich (makeover-layout task f8ad0b32) and Facet (34950ade). Only the first one reaches quasi, and it reaches it for free: a described Field carries layout::FieldKind, and both renderers delegate their field drawing to makeover-webview and makeover-tui, which now know the member. So what is here is the pins and the tests that check the claim rather than assume it -- the webview emits a textarea marked data-format="markdown" and not the single-line input the old catch-all degraded it to, and the terminal draws the source over several rows instead of giving a document one. Also takes makeover-webview 0.50.0, which is the breaking half of the cascade; makeover-tui and makeover-immediate moved by a patch and needed no edit.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-08-18 20:33 UTC
Signed with PGP, not checked
Commit: c603b91531e5f28b03f025bdc8e0fe812871a6fb
Parent: d639a17
14 files changed, +83 insertions, -62 deletions
M Cargo.lock +19 -25
@@ -2605,9 +2605,7 @@
2605 2605
2606 2606 [[package]]
2607 2607 name = "makeover-immediate"
2608 - version = "0.29.0"
2609 - source = "registry+https://github.com/rust-lang/crates.io-index"
2610 - checksum = "a0edb9c4705d75764eecbea8b68ea03040f88f724e9c80e559897b45f8bb35c6"
2608 + version = "0.29.1"
2611 2609 dependencies = [
2612 2610 "egui",
2613 2611 "egui_extras",
@@ -2616,15 +2614,11 @@
2616 2614
2617 2615 [[package]]
2618 2616 name = "makeover-layout"
2619 - version = "0.29.1"
2620 - source = "registry+https://github.com/rust-lang/crates.io-index"
2621 - checksum = "61b8a93cc18532525df3662a1db90cde2f05cedefb9164c0f3dc4341c677de00"
2617 + version = "0.30.0"
2622 2618
2623 2619 [[package]]
2624 2620 name = "makeover-touch"
2625 2621 version = "0.21.0"
2626 - source = "registry+https://github.com/rust-lang/crates.io-index"
2627 - checksum = "a6cbe598e9b93683b4e66b8486aec5de7680a4f45924dd76e1bcc0bc193c27e4"
2628 2622 dependencies = [
2629 2623 "makeover-geometry",
2630 2624 "makeover-layout",
@@ -2632,9 +2626,7 @@
2632 2626
2633 2627 [[package]]
2634 2628 name = "makeover-tui"
2635 - version = "0.29.0"
2636 - source = "registry+https://github.com/rust-lang/crates.io-index"
2637 - checksum = "697acecdd33c4a59367e2a89238709d61f2bfe1d2acec302df994677f2082789"
2629 + version = "0.29.1"
2638 2630 dependencies = [
2639 2631 "makeover",
2640 2632 "makeover-layout",
@@ -2643,9 +2635,7 @@
2643 2635
2644 2636 [[package]]
2645 2637 name = "makeover-webview"
2646 - version = "0.49.0"
2647 - source = "registry+https://github.com/rust-lang/crates.io-index"
2648 - checksum = "dc026dc42232eb7f817520a17450b7b25c8fd908d9a45562be652d73b09ddf6a"
2638 + version = "0.50.0"
2649 2639 dependencies = [
2650 2640 "makeover-geometry",
2651 2641 "makeover-layout",
@@ -3414,11 +3404,11 @@
3414 3404
3415 3405 [[package]]
3416 3406 name = "quasi"
3417 - version = "0.28.1"
3407 + version = "0.28.2"
3418 3408
3419 3409 [[package]]
3420 3410 name = "quasi-axum"
3421 - version = "0.28.1"
3411 + version = "0.28.2"
3422 3412 dependencies = [
3423 3413 "axum",
3424 3414 "http",
@@ -3432,7 +3422,7 @@
3432 3422
3433 3423 [[package]]
3434 3424 name = "quasi-basics"
3435 - version = "0.28.1"
3425 + version = "0.28.2"
3436 3426 dependencies = [
3437 3427 "makeover-layout",
3438 3428 "quasi-http",
@@ -3442,7 +3432,7 @@
3442 3432
3443 3433 [[package]]
3444 3434 name = "quasi-bench"
3445 - version = "0.28.1"
3435 + version = "0.28.2"
3446 3436 dependencies = [
3447 3437 "dhat",
3448 3438 "makeover",
@@ -3457,7 +3447,7 @@
3457 3447
3458 3448 [[package]]
3459 3449 name = "quasi-http"
3460 - version = "0.28.1"
3450 + version = "0.28.2"
3461 3451 dependencies = [
3462 3452 "form_urlencoded",
3463 3453 "http",
@@ -3466,7 +3456,7 @@
3466 3456
3467 3457 [[package]]
3468 3458 name = "quasi-immediate"
3469 - version = "0.28.1"
3459 + version = "0.28.2"
3470 3460 dependencies = [
3471 3461 "docengine",
3472 3462 "egui",
@@ -3476,7 +3466,7 @@
3476 3466
3477 3467 [[package]]
3478 3468 name = "quasi-notifs"
3479 - version = "0.28.1"
3469 + version = "0.28.2"
3480 3470 dependencies = [
3481 3471 "quasi-router",
3482 3472 "synckit-config",
@@ -3484,7 +3474,7 @@
3484 3474
3485 3475 [[package]]
3486 3476 name = "quasi-router"
3487 - version = "0.28.1"
3477 + version = "0.28.2"
3488 3478 dependencies = [
3489 3479 "makeover-layout",
3490 3480 ]
@@ -3501,7 +3491,7 @@
3501 3491
3502 3492 [[package]]
3503 3493 name = "quasi-tauri"
3504 - version = "0.28.1"
3494 + version = "0.28.2"
3505 3495 dependencies = [
3506 3496 "http",
3507 3497 "quasi-http",
@@ -3514,7 +3504,7 @@
3514 3504
3515 3505 [[package]]
3516 3506 name = "quasi-tui"
3517 - version = "0.28.1"
3507 + version = "0.28.2"
3518 3508 dependencies = [
3519 3509 "docengine",
3520 3510 "makeover",
@@ -3526,7 +3516,7 @@
3526 3516
3527 3517 [[package]]
3528 3518 name = "quasi-webview"
3529 - version = "0.28.1"
3519 + version = "0.28.2"
3530 3520 dependencies = [
3531 3521 "docengine",
3532 3522 "makeover-layout",
@@ -6220,3 +6210,7 @@
6220 6210 [[patch.unused]]
6221 6211 name = "tagtree"
6222 6212 version = "0.4.0"
6213 +
6214 + [[patch.unused]]
6215 + name = "makeover-build"
6216 + version = "0.45.0"
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-axum"
3 - version = "0.28.1"
3 + version = "0.28.2"
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.28.1" }
17 - quasi-http = { path = "../quasi-http", version = "0.28.1" }
16 + quasi-router = { path = "../quasi-router", version = "0.28.2" }
17 + quasi-http = { path = "../quasi-http", version = "0.28.2" }
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.28.1" }
23 + quasi-webview = { path = "../quasi-webview", version = "0.28.2" }
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.28.1"
3 + version = "0.28.2"
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.28.1" }
17 - makeover-layout = "0.29.1"
16 + quasi-router = { path = "../quasi-router", version = "0.28.2" }
17 + makeover-layout = "0.30.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.28.1" }
24 - quasi-http = { path = "../quasi-http", version = "0.28.1" }
23 + quasi-webview = { path = "../quasi-webview", version = "0.28.2" }
24 + quasi-http = { path = "../quasi-http", version = "0.28.2" }
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-bench"
3 - version = "0.28.1"
3 + version = "0.28.2"
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,14 +22,14 @@
22 22 count = ["dep:dhat"]
23 23
24 24 [dependencies]
25 - quasi-router = { path = "../quasi-router", version = "0.28.1" }
26 - quasi-webview = { path = "../quasi-webview", version = "0.28.1" }
27 - quasi-tui = { path = "../quasi-tui", version = "0.28.1" }
25 + quasi-router = { path = "../quasi-router", version = "0.28.2" }
26 + quasi-webview = { path = "../quasi-webview", version = "0.28.2" }
27 + quasi-tui = { path = "../quasi-tui", version = "0.28.2" }
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.28.1" }
32 - makeover-layout = "0.29.1"
31 + quasi-http = { path = "../quasi-http", version = "0.28.2" }
32 + makeover-layout = "0.30.0"
33 33 makeover-tui = { version = "0.29.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
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-http"
3 - version = "0.28.1"
3 + version = "0.28.2"
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.28.1" }
16 + quasi-router = { path = "../quasi-router", version = "0.28.2" }
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.28.1"
3 + version = "0.28.2"
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.28.1" }
15 + quasi-router = { path = "../quasi-router", version = "0.28.2" }
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-notifs"
3 - version = "0.28.1"
3 + version = "0.28.2"
4 4 description = "Declared notification kinds and the registry that holds them: what a notification says and what it is for, apart from how it reaches a person"
5 5 edition.workspace = true
6 6 rust-version.workspace = true
@@ -24,5 +24,5 @@
24 24 describe = ["dep:quasi-router"]
25 25
26 26 [dependencies]
27 - quasi-router = { path = "../quasi-router", version = "0.28.1", optional = true }
27 + quasi-router = { path = "../quasi-router", version = "0.28.2", optional = true }
28 28 synckit-config = { git = "https://makenot.work/git/max/synckit.git", version = "0.2", optional = true }
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-router"
3 - version = "0.28.1"
3 + version = "0.28.2"
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.29.1"
16 + makeover-layout = "0.30.0"