Hold the row's fallback in its type, not in a runtime check
Slot::beside panicked when the slot had no run, which made a rule the
vocabulary depends on enforceable only after the description was already
written. Measured across the three shape trees: 58 .beside( sites, 33 with
.across( in the same function body and 25 without, so a static same-body
check could never have covered it either.
Slot::across now takes the row itself. Run::new(fallback) is a Run's only
constructor, so a row that has not said what it does when it is tight is
unconstructable rather than merely rejected. A bare Fallback still converts,
which is what the five MNW tab strips want: a TabGroup fills its own row from
its children's labels, so declaring the fallback and no members is the whole
statement.
Breaking, so the suite goes to 0.100.0 and every consumer requirement moves
with it in the same pass.
- Co-Authored-By
- Claude Opus 5 (1M context) <noreply@anthropic.com>
- Claude-Session
- https://claude.ai/code/session_01MptwXZ8k65v19rFmdGAyki
16 files changed,
+183 insertions,
-125 deletions
| 3476 |
3476 |
|
|
| 3477 |
3477 |
|
[[package]]
|
| 3478 |
3478 |
|
name = "quasi"
|
| 3479 |
|
- |
version = "0.99.1"
|
|
3479 |
+ |
version = "0.100.0"
|
| 3480 |
3480 |
|
|
| 3481 |
3481 |
|
[[package]]
|
| 3482 |
3482 |
|
name = "quasi-axum"
|
| 3483 |
|
- |
version = "0.99.1"
|
|
3483 |
+ |
version = "0.100.0"
|
| 3484 |
3484 |
|
dependencies = [
|
| 3485 |
3485 |
|
"axum",
|
| 3486 |
3486 |
|
"http",
|
| 3494 |
3494 |
|
|
| 3495 |
3495 |
|
[[package]]
|
| 3496 |
3496 |
|
name = "quasi-basics"
|
| 3497 |
|
- |
version = "0.99.1"
|
|
3497 |
+ |
version = "0.100.0"
|
| 3498 |
3498 |
|
dependencies = [
|
| 3499 |
3499 |
|
"makeover-layout",
|
| 3500 |
3500 |
|
"quasi-http",
|
| 3504 |
3504 |
|
|
| 3505 |
3505 |
|
[[package]]
|
| 3506 |
3506 |
|
name = "quasi-bench"
|
| 3507 |
|
- |
version = "0.99.1"
|
|
3507 |
+ |
version = "0.100.0"
|
| 3508 |
3508 |
|
dependencies = [
|
| 3509 |
3509 |
|
"askama",
|
| 3510 |
3510 |
|
"dhat",
|
| 3521 |
3521 |
|
|
| 3522 |
3522 |
|
[[package]]
|
| 3523 |
3523 |
|
name = "quasi-http"
|
| 3524 |
|
- |
version = "0.99.1"
|
|
3524 |
+ |
version = "0.100.0"
|
| 3525 |
3525 |
|
dependencies = [
|
| 3526 |
3526 |
|
"form_urlencoded",
|
| 3527 |
3527 |
|
"http",
|
| 3530 |
3530 |
|
|
| 3531 |
3531 |
|
[[package]]
|
| 3532 |
3532 |
|
name = "quasi-immediate"
|
| 3533 |
|
- |
version = "0.99.1"
|
|
3533 |
+ |
version = "0.100.0"
|
| 3534 |
3534 |
|
dependencies = [
|
| 3535 |
3535 |
|
"docengine",
|
| 3536 |
3536 |
|
"egui",
|
| 3541 |
3541 |
|
|
| 3542 |
3542 |
|
[[package]]
|
| 3543 |
3543 |
|
name = "quasi-notifs"
|
| 3544 |
|
- |
version = "0.99.1"
|
|
3544 |
+ |
version = "0.100.0"
|
| 3545 |
3545 |
|
dependencies = [
|
| 3546 |
3546 |
|
"quasi-router",
|
| 3547 |
3547 |
|
"synckit-config",
|
| 3551 |
3551 |
|
|
| 3552 |
3552 |
|
[[package]]
|
| 3553 |
3553 |
|
name = "quasi-router"
|
| 3554 |
|
- |
version = "0.99.1"
|
|
3554 |
+ |
version = "0.100.0"
|
| 3555 |
3555 |
|
dependencies = [
|
| 3556 |
3556 |
|
"makeover-layout",
|
| 3557 |
3557 |
|
]
|
| 3568 |
3568 |
|
|
| 3569 |
3569 |
|
[[package]]
|
| 3570 |
3570 |
|
name = "quasi-tauri"
|
| 3571 |
|
- |
version = "0.99.1"
|
|
3571 |
+ |
version = "0.100.0"
|
| 3572 |
3572 |
|
dependencies = [
|
| 3573 |
3573 |
|
"http",
|
| 3574 |
3574 |
|
"quasi-http",
|
| 3579 |
3579 |
|
|
| 3580 |
3580 |
|
[[package]]
|
| 3581 |
3581 |
|
name = "quasi-tui"
|
| 3582 |
|
- |
version = "0.99.1"
|
|
3582 |
+ |
version = "0.100.0"
|
| 3583 |
3583 |
|
dependencies = [
|
| 3584 |
3584 |
|
"docengine",
|
| 3585 |
3585 |
|
"makeover",
|
| 3592 |
3592 |
|
|
| 3593 |
3593 |
|
[[package]]
|
| 3594 |
3594 |
|
name = "quasi-webview"
|
| 3595 |
|
- |
version = "0.99.1"
|
|
3595 |
+ |
version = "0.100.0"
|
| 3596 |
3596 |
|
dependencies = [
|
| 3597 |
3597 |
|
"docengine",
|
| 3598 |
3598 |
|
"makeover-layout",
|
| 6271 |
6271 |
|
name = "synckit-client"
|
| 6272 |
6272 |
|
version = "0.10.0"
|
| 6273 |
6273 |
|
|
| 6274 |
|
- |
[[patch.unused]]
|
| 6275 |
|
- |
name = "quasi-type"
|
| 6276 |
|
- |
version = "0.1.3"
|
| 6277 |
|
- |
|
| 6278 |
6274 |
|
[[patch.unused]]
|
| 6279 |
6275 |
|
name = "kberg"
|
| 6280 |
6276 |
|
version = "0.1.0"
|
| 6290 |
6286 |
|
[[patch.unused]]
|
| 6291 |
6287 |
|
name = "tagtree"
|
| 6292 |
6288 |
|
version = "0.4.1"
|
|
6289 |
+ |
|
|
6290 |
+ |
[[patch.unused]]
|
|
6291 |
+ |
name = "quasi-type"
|
|
6292 |
+ |
version = "0.1.3"
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-axum"
|
| 3 |
|
- |
version = "0.99.1"
|
|
3 |
+ |
version = "0.100.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.99.1" }
|
| 17 |
|
- |
quasi-http = { path = "../quasi-http", version = "0.99.1" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.100.0" }
|
|
17 |
+ |
quasi-http = { path = "../quasi-http", version = "0.100.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.99.1" }
|
|
23 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.100.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.99.1"
|
|
3 |
+ |
version = "0.100.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.99.1" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.100.0" }
|
| 17 |
17 |
|
makeover-layout = "0.44"
|
| 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.99.1" }
|
| 24 |
|
- |
quasi-http = { path = "../quasi-http", version = "0.99.1" }
|
|
23 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.100.0" }
|
|
24 |
+ |
quasi-http = { path = "../quasi-http", version = "0.100.0" }
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-bench"
|
| 3 |
|
- |
version = "0.99.1"
|
|
3 |
+ |
version = "0.100.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
|
| 26 |
26 |
|
askama = ["dep:askama"]
|
| 27 |
27 |
|
|
| 28 |
28 |
|
[dependencies]
|
| 29 |
|
- |
quasi-router = { path = "../quasi-router", version = "0.99.1" }
|
| 30 |
|
- |
quasi-webview = { path = "../quasi-webview", version = "0.99.1" }
|
| 31 |
|
- |
quasi-tui = { path = "../quasi-tui", version = "0.99.1" }
|
|
29 |
+ |
quasi-router = { path = "../quasi-router", version = "0.100.0" }
|
|
30 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.100.0" }
|
|
31 |
+ |
quasi-tui = { path = "../quasi-tui", version = "0.100.0" }
|
| 32 |
32 |
|
# `Serves` is the trait carrying `screen` and `fragment`, which is what the
|
| 33 |
33 |
|
# webview is measured through. Taken directly rather than through quasi-webview
|
| 34 |
34 |
|
# because a bench calling a trait method should name the trait it calls.
|
| 35 |
|
- |
quasi-http = { path = "../quasi-http", version = "0.99.1" }
|
|
35 |
+ |
quasi-http = { path = "../quasi-http", version = "0.100.0" }
|
| 36 |
36 |
|
makeover-layout = "0.44"
|
| 37 |
37 |
|
# The renderer's own escaper, so the staged path fills a hole exactly the way
|
| 38 |
38 |
|
# `Node::Text` does and the guarantee is not quietly reimplemented.
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-http"
|
| 3 |
|
- |
version = "0.99.1"
|
|
3 |
+ |
version = "0.100.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.99.1" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.100.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.99.1"
|
|
3 |
+ |
version = "0.100.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.99.1" }
|
|
15 |
+ |
quasi-router = { path = "../quasi-router", version = "0.100.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-notifs"
|
| 3 |
|
- |
version = "0.99.1"
|
|
3 |
+ |
version = "0.100.0"
|
| 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
|
| 28 |
28 |
|
tauri = ["dep:tauri", "dep:tauri-plugin-notification"]
|
| 29 |
29 |
|
|
| 30 |
30 |
|
[dependencies]
|
| 31 |
|
- |
quasi-router = { path = "../quasi-router", version = "0.99.1", optional = true }
|
|
31 |
+ |
quasi-router = { path = "../quasi-router", version = "0.100.0", optional = true }
|
| 32 |
32 |
|
synckit-config = { git = "https://makenot.work/git/max/synckit.git", version = "0.2", optional = true }
|
| 33 |
33 |
|
tauri-plugin-notification = { version = "2.3.3", optional = true }
|
| 34 |
34 |
|
# Default features off, for `quasi-tauri`'s reason: this takes an `AppHandle`
|