Node::Notice grows an act, so an undo survives the conversion
Settled in quasicoherent bde35298: grow the node, not a per-host holder.
Message::undo says a response can offer a way back. A host that keeps a
screen turns that message into a Node::Notice, and the node had nowhere to
put a control -- quasi-tui's announce said so in a comment and dropped it,
and quasi-immediate did the same without saying anything. Every retained-
screen host writing its own holder beside the screen was the alternative,
and both shapes are the same thing said from two ends.
Message::UNDO and Message::undo_act name the control once. The address
carries no label deliberately, so somebody has to supply the word, and
three renderers supplying it separately is three chances to disagree.
Two gaps behind it, both closed here rather than filed.
The tui drew the undo and could not reach it: focus::reaches walked the
slots and never looked at screen.notices, which was correct while a notice
was only a sentence. It walks them now in the order the drawing writes
them -- floating, slots, rested, verbs -- under a reserved NOTICE_REGION,
and the existing walk-matches-drawing test covers the ordering.
And the webview dropped it too, which the task did not expect: the
HX-Trigger path hands a message to the client without building a node, so
notice_trigger had to carry the undo itself. Additive, so a client written
before this reads the object it always read. An external destination is
not carried: an undo is this router's own route.
12 Node::Notice struct literals in audiofiles and 3 in goingson became
Node::banner / Node::toast rather than growing an act: None.
30 files changed,
+462 insertions,
-88 deletions
| 3425 |
3425 |
|
|
| 3426 |
3426 |
|
[[package]]
|
| 3427 |
3427 |
|
name = "quasi"
|
| 3428 |
|
- |
version = "0.82.0"
|
|
3428 |
+ |
version = "0.83.0"
|
| 3429 |
3429 |
|
|
| 3430 |
3430 |
|
[[package]]
|
| 3431 |
3431 |
|
name = "quasi-axum"
|
| 3432 |
|
- |
version = "0.82.0"
|
|
3432 |
+ |
version = "0.83.0"
|
| 3433 |
3433 |
|
dependencies = [
|
| 3434 |
3434 |
|
"axum",
|
| 3435 |
3435 |
|
"http",
|
| 3443 |
3443 |
|
|
| 3444 |
3444 |
|
[[package]]
|
| 3445 |
3445 |
|
name = "quasi-basics"
|
| 3446 |
|
- |
version = "0.82.0"
|
|
3446 |
+ |
version = "0.83.0"
|
| 3447 |
3447 |
|
dependencies = [
|
| 3448 |
3448 |
|
"makeover-layout",
|
| 3449 |
3449 |
|
"quasi-http",
|
| 3453 |
3453 |
|
|
| 3454 |
3454 |
|
[[package]]
|
| 3455 |
3455 |
|
name = "quasi-bench"
|
| 3456 |
|
- |
version = "0.82.0"
|
|
3456 |
+ |
version = "0.83.0"
|
| 3457 |
3457 |
|
dependencies = [
|
| 3458 |
3458 |
|
"dhat",
|
| 3459 |
3459 |
|
"makeover",
|
| 3468 |
3468 |
|
|
| 3469 |
3469 |
|
[[package]]
|
| 3470 |
3470 |
|
name = "quasi-http"
|
| 3471 |
|
- |
version = "0.82.0"
|
|
3471 |
+ |
version = "0.83.0"
|
| 3472 |
3472 |
|
dependencies = [
|
| 3473 |
3473 |
|
"form_urlencoded",
|
| 3474 |
3474 |
|
"http",
|
| 3477 |
3477 |
|
|
| 3478 |
3478 |
|
[[package]]
|
| 3479 |
3479 |
|
name = "quasi-immediate"
|
| 3480 |
|
- |
version = "0.82.0"
|
|
3480 |
+ |
version = "0.83.0"
|
| 3481 |
3481 |
|
dependencies = [
|
| 3482 |
3482 |
|
"docengine",
|
| 3483 |
3483 |
|
"egui",
|
| 3488 |
3488 |
|
|
| 3489 |
3489 |
|
[[package]]
|
| 3490 |
3490 |
|
name = "quasi-notifs"
|
| 3491 |
|
- |
version = "0.82.0"
|
|
3491 |
+ |
version = "0.83.0"
|
| 3492 |
3492 |
|
dependencies = [
|
| 3493 |
3493 |
|
"quasi-router",
|
| 3494 |
3494 |
|
"synckit-config",
|
| 3496 |
3496 |
|
|
| 3497 |
3497 |
|
[[package]]
|
| 3498 |
3498 |
|
name = "quasi-router"
|
| 3499 |
|
- |
version = "0.82.0"
|
|
3499 |
+ |
version = "0.83.0"
|
| 3500 |
3500 |
|
dependencies = [
|
| 3501 |
3501 |
|
"makeover-layout",
|
| 3502 |
3502 |
|
]
|
| 3513 |
3513 |
|
|
| 3514 |
3514 |
|
[[package]]
|
| 3515 |
3515 |
|
name = "quasi-tauri"
|
| 3516 |
|
- |
version = "0.82.0"
|
|
3516 |
+ |
version = "0.83.0"
|
| 3517 |
3517 |
|
dependencies = [
|
| 3518 |
3518 |
|
"http",
|
| 3519 |
3519 |
|
"quasi-http",
|
| 3526 |
3526 |
|
|
| 3527 |
3527 |
|
[[package]]
|
| 3528 |
3528 |
|
name = "quasi-tui"
|
| 3529 |
|
- |
version = "0.82.0"
|
|
3529 |
+ |
version = "0.83.0"
|
| 3530 |
3530 |
|
dependencies = [
|
| 3531 |
3531 |
|
"docengine",
|
| 3532 |
3532 |
|
"makeover",
|
| 3539 |
3539 |
|
|
| 3540 |
3540 |
|
[[package]]
|
| 3541 |
3541 |
|
name = "quasi-webview"
|
| 3542 |
|
- |
version = "0.82.0"
|
|
3542 |
+ |
version = "0.83.0"
|
| 3543 |
3543 |
|
dependencies = [
|
| 3544 |
3544 |
|
"docengine",
|
| 3545 |
3545 |
|
"makeover-layout",
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-axum"
|
| 3 |
|
- |
version = "0.82.0"
|
|
3 |
+ |
version = "0.83.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.82.0" }
|
| 17 |
|
- |
quasi-http = { path = "../quasi-http", version = "0.82.0" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.83.0" }
|
|
17 |
+ |
quasi-http = { path = "../quasi-http", version = "0.83.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.82.0" }
|
|
23 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.83.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.82.0"
|
|
3 |
+ |
version = "0.83.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.82.0" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.83.0" }
|
| 17 |
17 |
|
makeover-layout = "0.41.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.82.0" }
|
| 24 |
|
- |
quasi-http = { path = "../quasi-http", version = "0.82.0" }
|
|
23 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.83.0" }
|
|
24 |
+ |
quasi-http = { path = "../quasi-http", version = "0.83.0" }
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-bench"
|
| 3 |
|
- |
version = "0.82.0"
|
|
3 |
+ |
version = "0.83.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 |
22 |
|
count = ["dep:dhat"]
|
| 23 |
23 |
|
|
| 24 |
24 |
|
[dependencies]
|
| 25 |
|
- |
quasi-router = { path = "../quasi-router", version = "0.82.0" }
|
| 26 |
|
- |
quasi-webview = { path = "../quasi-webview", version = "0.82.0" }
|
| 27 |
|
- |
quasi-tui = { path = "../quasi-tui", version = "0.82.0" }
|
|
25 |
+ |
quasi-router = { path = "../quasi-router", version = "0.83.0" }
|
|
26 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.83.0" }
|
|
27 |
+ |
quasi-tui = { path = "../quasi-tui", version = "0.83.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.82.0" }
|
|
31 |
+ |
quasi-http = { path = "../quasi-http", version = "0.83.0" }
|
| 32 |
32 |
|
makeover-layout = "0.41.0"
|
| 33 |
33 |
|
makeover-tui = { version = "0.41.0", features = ["theme"] }
|
| 34 |
34 |
|
# Only to load a bundled theme file. `makeover_tui::Theme` is `#[non_exhaustive]`,
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-http"
|
| 3 |
|
- |
version = "0.82.0"
|
|
3 |
+ |
version = "0.83.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.82.0" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.83.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.82.0"
|
|
3 |
+ |
version = "0.83.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.82.0" }
|
|
15 |
+ |
quasi-router = { path = "../quasi-router", version = "0.83.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
|