0.27.0: a consult says how little is too little to ask about
N8's two comboboxes measured against the member that landed for N14.
Both refuse to ask under two characters and neither route does: MNW's
tag-suggest and search-suggest handlers guard emptiness and nothing
else, so a described field without the floor asks them on the first
letter -- an ILIKE 'a%' over every tag, project and item in the
catalogue, which is the query the floor exists to refuse.
So Consult carries two numbers rather than one. `after` says the value
has stopped moving; `at_least` says there is enough of it to be worth
asking about. Both are the description's for the same reason, and the
corpus disagrees about both: the four wizard fields wait 500ms and ask
about a single letter, because one letter can already be taken, while
the two comboboxes wait 150ms and 200ms above two characters.
`Consult::asks_about` states the rule once instead of three times. The
count is characters and not bytes, and the terminal is where that
difference is a wrong answer rather than a slow one.
Each renderer answers it in its own terms. The webview puts the floor
on the event rather than beside the delay, since htmx takes the filter
first and the modifiers after, and reads `event.target` because the
trigger sits on the wrapper while the value sits on the control inside
it. The terminal returns Idle: nothing is outstanding there, the wait
belonging to the host, so a keystroke under the floor costs nothing.
egui holds a deadline, so deleting back under the floor cancels it
rather than letting it fire against a value too short to ask about.
Forward-fixed in the same pass: MNW server, goingson, audiofiles.
- Co-Authored-By
- Claude Opus 5 (1M context) <noreply@anthropic.com>
18 files changed,
+228 insertions,
-54 deletions
| 3414 |
3414 |
|
|
| 3415 |
3415 |
|
[[package]]
|
| 3416 |
3416 |
|
name = "quasi"
|
| 3417 |
|
- |
version = "0.26.1"
|
|
3417 |
+ |
version = "0.27.0"
|
| 3418 |
3418 |
|
|
| 3419 |
3419 |
|
[[package]]
|
| 3420 |
3420 |
|
name = "quasi-axum"
|
| 3421 |
|
- |
version = "0.26.1"
|
|
3421 |
+ |
version = "0.27.0"
|
| 3422 |
3422 |
|
dependencies = [
|
| 3423 |
3423 |
|
"axum",
|
| 3424 |
3424 |
|
"http",
|
| 3432 |
3432 |
|
|
| 3433 |
3433 |
|
[[package]]
|
| 3434 |
3434 |
|
name = "quasi-basics"
|
| 3435 |
|
- |
version = "0.26.1"
|
|
3435 |
+ |
version = "0.27.0"
|
| 3436 |
3436 |
|
dependencies = [
|
| 3437 |
3437 |
|
"makeover-layout",
|
| 3438 |
3438 |
|
"quasi-http",
|
| 3442 |
3442 |
|
|
| 3443 |
3443 |
|
[[package]]
|
| 3444 |
3444 |
|
name = "quasi-bench"
|
| 3445 |
|
- |
version = "0.26.1"
|
|
3445 |
+ |
version = "0.27.0"
|
| 3446 |
3446 |
|
dependencies = [
|
| 3447 |
3447 |
|
"dhat",
|
| 3448 |
3448 |
|
"makeover",
|
| 3457 |
3457 |
|
|
| 3458 |
3458 |
|
[[package]]
|
| 3459 |
3459 |
|
name = "quasi-http"
|
| 3460 |
|
- |
version = "0.26.1"
|
|
3460 |
+ |
version = "0.27.0"
|
| 3461 |
3461 |
|
dependencies = [
|
| 3462 |
3462 |
|
"form_urlencoded",
|
| 3463 |
3463 |
|
"http",
|
| 3466 |
3466 |
|
|
| 3467 |
3467 |
|
[[package]]
|
| 3468 |
3468 |
|
name = "quasi-immediate"
|
| 3469 |
|
- |
version = "0.26.1"
|
|
3469 |
+ |
version = "0.27.0"
|
| 3470 |
3470 |
|
dependencies = [
|
| 3471 |
3471 |
|
"docengine",
|
| 3472 |
3472 |
|
"egui",
|
| 3476 |
3476 |
|
|
| 3477 |
3477 |
|
[[package]]
|
| 3478 |
3478 |
|
name = "quasi-notifs"
|
| 3479 |
|
- |
version = "0.26.1"
|
|
3479 |
+ |
version = "0.27.0"
|
| 3480 |
3480 |
|
dependencies = [
|
| 3481 |
3481 |
|
"quasi-router",
|
| 3482 |
3482 |
|
"synckit-config",
|
| 3484 |
3484 |
|
|
| 3485 |
3485 |
|
[[package]]
|
| 3486 |
3486 |
|
name = "quasi-router"
|
| 3487 |
|
- |
version = "0.26.1"
|
|
3487 |
+ |
version = "0.27.0"
|
| 3488 |
3488 |
|
dependencies = [
|
| 3489 |
3489 |
|
"makeover-layout",
|
| 3490 |
3490 |
|
]
|
| 3501 |
3501 |
|
|
| 3502 |
3502 |
|
[[package]]
|
| 3503 |
3503 |
|
name = "quasi-tauri"
|
| 3504 |
|
- |
version = "0.26.1"
|
|
3504 |
+ |
version = "0.27.0"
|
| 3505 |
3505 |
|
dependencies = [
|
| 3506 |
3506 |
|
"http",
|
| 3507 |
3507 |
|
"quasi-http",
|
| 3514 |
3514 |
|
|
| 3515 |
3515 |
|
[[package]]
|
| 3516 |
3516 |
|
name = "quasi-tui"
|
| 3517 |
|
- |
version = "0.26.1"
|
|
3517 |
+ |
version = "0.27.0"
|
| 3518 |
3518 |
|
dependencies = [
|
| 3519 |
3519 |
|
"docengine",
|
| 3520 |
3520 |
|
"makeover",
|
| 3526 |
3526 |
|
|
| 3527 |
3527 |
|
[[package]]
|
| 3528 |
3528 |
|
name = "quasi-webview"
|
| 3529 |
|
- |
version = "0.26.1"
|
|
3529 |
+ |
version = "0.27.0"
|
| 3530 |
3530 |
|
dependencies = [
|
| 3531 |
3531 |
|
"docengine",
|
| 3532 |
3532 |
|
"makeover-layout",
|
| 6197 |
6197 |
|
"winnow 1.0.4",
|
| 6198 |
6198 |
|
]
|
| 6199 |
6199 |
|
|
|
6200 |
+ |
[[patch.unused]]
|
|
6201 |
+ |
name = "quasi-type"
|
|
6202 |
+ |
version = "0.1.0"
|
|
6203 |
+ |
|
| 6200 |
6204 |
|
[[patch.unused]]
|
| 6201 |
6205 |
|
name = "kberg"
|
| 6202 |
6206 |
|
version = "0.1.0"
|
| 6216 |
6220 |
|
[[patch.unused]]
|
| 6217 |
6221 |
|
name = "synckit-client"
|
| 6218 |
6222 |
|
version = "0.8.0"
|
| 6219 |
|
- |
|
| 6220 |
|
- |
[[patch.unused]]
|
| 6221 |
|
- |
name = "quasi-type"
|
| 6222 |
|
- |
version = "0.1.0"
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-axum"
|
| 3 |
|
- |
version = "0.26.1"
|
|
3 |
+ |
version = "0.27.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.26.1" }
|
| 17 |
|
- |
quasi-http = { path = "../quasi-http", version = "0.26.1" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.27.0" }
|
|
17 |
+ |
quasi-http = { path = "../quasi-http", version = "0.27.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.26.1" }
|
|
23 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.27.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.26.1"
|
|
3 |
+ |
version = "0.27.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.26.1" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.27.0" }
|
| 17 |
17 |
|
makeover-layout = "0.28.2"
|
| 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.26.1" }
|
| 24 |
|
- |
quasi-http = { path = "../quasi-http", version = "0.26.1" }
|
|
23 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.27.0" }
|
|
24 |
+ |
quasi-http = { path = "../quasi-http", version = "0.27.0" }
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-bench"
|
| 3 |
|
- |
version = "0.26.1"
|
|
3 |
+ |
version = "0.27.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.26.1" }
|
| 26 |
|
- |
quasi-webview = { path = "../quasi-webview", version = "0.26.1" }
|
| 27 |
|
- |
quasi-tui = { path = "../quasi-tui", version = "0.26.1" }
|
|
25 |
+ |
quasi-router = { path = "../quasi-router", version = "0.27.0" }
|
|
26 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.27.0" }
|
|
27 |
+ |
quasi-tui = { path = "../quasi-tui", version = "0.27.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.26.1" }
|
|
31 |
+ |
quasi-http = { path = "../quasi-http", version = "0.27.0" }
|
| 32 |
32 |
|
makeover-layout = "0.28.2"
|
| 33 |
33 |
|
makeover-tui = { version = "0.27.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.26.1"
|
|
3 |
+ |
version = "0.27.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.26.1" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.27.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.26.1"
|
|
3 |
+ |
version = "0.27.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.26.1" }
|
|
15 |
+ |
quasi-router = { path = "../quasi-router", version = "0.27.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.26.1"
|
|
3 |
+ |
version = "0.27.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
|
| 24 |
24 |
|
describe = ["dep:quasi-router"]
|
| 25 |
25 |
|
|
| 26 |
26 |
|
[dependencies]
|
| 27 |
|
- |
quasi-router = { path = "../quasi-router", version = "0.26.1", optional = true }
|
|
27 |
+ |
quasi-router = { path = "../quasi-router", version = "0.27.0", optional = true }
|
| 28 |
28 |
|
synckit-config = { git = "https://makenot.work/git/max/synckit.git", version = "0.2", optional = true }
|