0.75.0: the theme picker, mirrored owned
makeover-layout 0.38.0's FieldKind::Theme (518c650a, ruled by Max on
70028e00). ThemeChoice is the owned mirror, Field::themes and Field::follows
the two members, Field::theme and Field::following the constructors. Its own
type rather than Choice for the reason recorded on the borrowed original: a
theme is four facts and an option is two, and the two extra ones are resolved
by the theme layer and neither survives being written into a label.
The conversion from makeover::ThemeOption stays with the app. quasi-router
takes only makeover-layout, which takes nothing at all, so the crate that
reads theme files off disk is not in this graph.
Three call sites had to learn the kind, and the third is the one that would
have been a live bug: a theme is picked in one gesture, so it belongs with the
options and files rather than with the values a reader builds up character by
character. Left alone, quasi-tui and quasi-immediate would have deferred the
write to `leaving` and treated the picker as a text box.
Nothing here sorts. The order arrives from whoever measured the tiers, and
re-sorting at this layer would be deciding a question it cannot see the inputs
to.
- Co-Authored-By
- Claude Opus 5 (1M context) <noreply@anthropic.com>
- Claude-Session
- https://claude.ai/code/session_01AAbx8dxVmuVeyKbKoRrUL2
18 files changed,
+239 insertions,
-79 deletions
| 2588 |
2588 |
|
|
| 2589 |
2589 |
|
[[package]]
|
| 2590 |
2590 |
|
name = "makeover"
|
| 2591 |
|
- |
version = "3.0.0"
|
|
2591 |
+ |
version = "3.1.0"
|
| 2592 |
2592 |
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2593 |
|
- |
checksum = "3e6da78c376074e48eb2324394004afc847e674e05ed2ea4bec1331073990b3f"
|
|
2593 |
+ |
checksum = "d0fba4022268d1d73423bb16126dfdaa714a63bd4ff24f826dd645255eb0aad4"
|
| 2594 |
2594 |
|
dependencies = [
|
| 2595 |
2595 |
|
"include_dir",
|
| 2596 |
2596 |
|
"serde",
|
| 2605 |
2605 |
|
|
| 2606 |
2606 |
|
[[package]]
|
| 2607 |
2607 |
|
name = "makeover-immediate"
|
| 2608 |
|
- |
version = "0.38.0"
|
|
2608 |
+ |
version = "0.39.0"
|
| 2609 |
2609 |
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2610 |
|
- |
checksum = "7ee9cb9fe796db8803518e8726e01708fafd64fc52595fd7d8f040fb9f4345fe"
|
|
2610 |
+ |
checksum = "628f2e478a4bd00a305cc7b43ee1bdc229ccd8dd9c7077ba7d7cc1f85ba6994c"
|
| 2611 |
2611 |
|
dependencies = [
|
| 2612 |
2612 |
|
"egui",
|
| 2613 |
2613 |
|
"egui_extras",
|
| 2617 |
2617 |
|
|
| 2618 |
2618 |
|
[[package]]
|
| 2619 |
2619 |
|
name = "makeover-layout"
|
| 2620 |
|
- |
version = "0.37.0"
|
|
2620 |
+ |
version = "0.38.0"
|
| 2621 |
2621 |
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2622 |
|
- |
checksum = "369bc3c3e0ee91d24b3552f48f1ecb1764bca953725fb817df33b2dc80f2d34f"
|
|
2622 |
+ |
checksum = "73ad4a03ed87470b838bd84be586739682f0a1210db1d7ad4a0146cb9ef7734b"
|
| 2623 |
2623 |
|
|
| 2624 |
2624 |
|
[[package]]
|
| 2625 |
2625 |
|
name = "makeover-timing"
|
| 2632 |
2632 |
|
|
| 2633 |
2633 |
|
[[package]]
|
| 2634 |
2634 |
|
name = "makeover-touch"
|
| 2635 |
|
- |
version = "0.27.0"
|
|
2635 |
+ |
version = "0.28.0"
|
| 2636 |
2636 |
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2637 |
|
- |
checksum = "b180e22917189e05d291bfec0e930b5e6c2952dc7bf6e2f7a2262b903431cc72"
|
|
2637 |
+ |
checksum = "10693ddd1a7c5aad0289bcee2bb02c25cef10e292820a60a2813d21411217a83"
|
| 2638 |
2638 |
|
dependencies = [
|
| 2639 |
2639 |
|
"makeover-geometry",
|
| 2640 |
2640 |
|
"makeover-layout",
|
| 2642 |
2642 |
|
|
| 2643 |
2643 |
|
[[package]]
|
| 2644 |
2644 |
|
name = "makeover-tui"
|
| 2645 |
|
- |
version = "0.37.0"
|
|
2645 |
+ |
version = "0.38.0"
|
| 2646 |
2646 |
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2647 |
|
- |
checksum = "b5e2ea93b84f2cb85fde760d360ff4c095320db242a0d0c08cbaf2f396a8de8e"
|
|
2647 |
+ |
checksum = "0b2702bf3d12d4f978607a6209d5ebc9786e46adb13b2ee2c704881b391ec1bd"
|
| 2648 |
2648 |
|
dependencies = [
|
| 2649 |
2649 |
|
"makeover",
|
| 2650 |
2650 |
|
"makeover-layout",
|
| 2654 |
2654 |
|
|
| 2655 |
2655 |
|
[[package]]
|
| 2656 |
2656 |
|
name = "makeover-webview"
|
| 2657 |
|
- |
version = "0.64.0"
|
|
2657 |
+ |
version = "0.65.0"
|
| 2658 |
2658 |
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2659 |
|
- |
checksum = "6b91db6e169bc8b7c7225e17b6bc83f9c6f1879eb3bc6f1554e96cb621c84e5c"
|
|
2659 |
+ |
checksum = "899e27bcbcf2d8de779c0404ca5e1e354d9ff0fa9d834f1855c5202d0271c80f"
|
| 2660 |
2660 |
|
dependencies = [
|
| 2661 |
2661 |
|
"makeover-geometry",
|
| 2662 |
2662 |
|
"makeover-layout",
|
| 3425 |
3425 |
|
|
| 3426 |
3426 |
|
[[package]]
|
| 3427 |
3427 |
|
name = "quasi"
|
| 3428 |
|
- |
version = "0.74.0"
|
|
3428 |
+ |
version = "0.75.0"
|
| 3429 |
3429 |
|
|
| 3430 |
3430 |
|
[[package]]
|
| 3431 |
3431 |
|
name = "quasi-axum"
|
| 3432 |
|
- |
version = "0.74.0"
|
|
3432 |
+ |
version = "0.75.0"
|
| 3433 |
3433 |
|
dependencies = [
|
| 3434 |
3434 |
|
"axum",
|
| 3435 |
3435 |
|
"http",
|
| 3443 |
3443 |
|
|
| 3444 |
3444 |
|
[[package]]
|
| 3445 |
3445 |
|
name = "quasi-basics"
|
| 3446 |
|
- |
version = "0.74.0"
|
|
3446 |
+ |
version = "0.75.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.74.0"
|
|
3456 |
+ |
version = "0.75.0"
|
| 3457 |
3457 |
|
dependencies = [
|
| 3458 |
3458 |
|
"dhat",
|
| 3459 |
3459 |
|
"makeover",
|
| 3468 |
3468 |
|
|
| 3469 |
3469 |
|
[[package]]
|
| 3470 |
3470 |
|
name = "quasi-http"
|
| 3471 |
|
- |
version = "0.74.0"
|
|
3471 |
+ |
version = "0.75.0"
|
| 3472 |
3472 |
|
dependencies = [
|
| 3473 |
3473 |
|
"form_urlencoded",
|
| 3474 |
3474 |
|
"http",
|
| 3477 |
3477 |
|
|
| 3478 |
3478 |
|
[[package]]
|
| 3479 |
3479 |
|
name = "quasi-immediate"
|
| 3480 |
|
- |
version = "0.74.0"
|
|
3480 |
+ |
version = "0.75.0"
|
| 3481 |
3481 |
|
dependencies = [
|
| 3482 |
3482 |
|
"docengine",
|
| 3483 |
3483 |
|
"egui",
|
| 3488 |
3488 |
|
|
| 3489 |
3489 |
|
[[package]]
|
| 3490 |
3490 |
|
name = "quasi-notifs"
|
| 3491 |
|
- |
version = "0.74.0"
|
|
3491 |
+ |
version = "0.75.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.74.0"
|
|
3499 |
+ |
version = "0.75.0"
|
| 3500 |
3500 |
|
dependencies = [
|
| 3501 |
3501 |
|
"makeover-layout",
|
| 3502 |
3502 |
|
]
|
| 3513 |
3513 |
|
|
| 3514 |
3514 |
|
[[package]]
|
| 3515 |
3515 |
|
name = "quasi-tauri"
|
| 3516 |
|
- |
version = "0.74.0"
|
|
3516 |
+ |
version = "0.75.0"
|
| 3517 |
3517 |
|
dependencies = [
|
| 3518 |
3518 |
|
"http",
|
| 3519 |
3519 |
|
"quasi-http",
|
| 3526 |
3526 |
|
|
| 3527 |
3527 |
|
[[package]]
|
| 3528 |
3528 |
|
name = "quasi-tui"
|
| 3529 |
|
- |
version = "0.74.0"
|
|
3529 |
+ |
version = "0.75.0"
|
| 3530 |
3530 |
|
dependencies = [
|
| 3531 |
3531 |
|
"docengine",
|
| 3532 |
3532 |
|
"makeover",
|
| 3539 |
3539 |
|
|
| 3540 |
3540 |
|
[[package]]
|
| 3541 |
3541 |
|
name = "quasi-webview"
|
| 3542 |
|
- |
version = "0.74.0"
|
|
3542 |
+ |
version = "0.75.0"
|
| 3543 |
3543 |
|
dependencies = [
|
| 3544 |
3544 |
|
"docengine",
|
| 3545 |
3545 |
|
"makeover-layout",
|
| 6211 |
6211 |
|
"winnow 1.0.4",
|
| 6212 |
6212 |
|
]
|
| 6213 |
6213 |
|
|
|
6214 |
+ |
[[patch.unused]]
|
|
6215 |
+ |
name = "synckit-client"
|
|
6216 |
+ |
version = "0.10.0"
|
|
6217 |
+ |
|
|
6218 |
+ |
[[patch.unused]]
|
|
6219 |
+ |
name = "quasi-type"
|
|
6220 |
+ |
version = "0.1.2"
|
|
6221 |
+ |
|
| 6214 |
6222 |
|
[[patch.unused]]
|
| 6215 |
6223 |
|
name = "kberg"
|
| 6216 |
6224 |
|
version = "0.1.0"
|
| 6226 |
6234 |
|
[[patch.unused]]
|
| 6227 |
6235 |
|
name = "tagtree"
|
| 6228 |
6236 |
|
version = "0.4.1"
|
| 6229 |
|
- |
|
| 6230 |
|
- |
[[patch.unused]]
|
| 6231 |
|
- |
name = "quasi-type"
|
| 6232 |
|
- |
version = "0.1.1"
|
| 6233 |
|
- |
|
| 6234 |
|
- |
[[patch.unused]]
|
| 6235 |
|
- |
name = "synckit-client"
|
| 6236 |
|
- |
version = "0.9.1"
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-axum"
|
| 3 |
|
- |
version = "0.74.0"
|
|
3 |
+ |
version = "0.75.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.74.0" }
|
| 17 |
|
- |
quasi-http = { path = "../quasi-http", version = "0.74.0" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.75.0" }
|
|
17 |
+ |
quasi-http = { path = "../quasi-http", version = "0.75.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.74.0" }
|
|
23 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.75.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.74.0"
|
|
3 |
+ |
version = "0.75.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.74.0" }
|
| 17 |
|
- |
makeover-layout = "0.37.0"
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.75.0" }
|
|
17 |
+ |
makeover-layout = "0.38.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.74.0" }
|
| 24 |
|
- |
quasi-http = { path = "../quasi-http", version = "0.74.0" }
|
|
23 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.75.0" }
|
|
24 |
+ |
quasi-http = { path = "../quasi-http", version = "0.75.0" }
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-bench"
|
| 3 |
|
- |
version = "0.74.0"
|
|
3 |
+ |
version = "0.75.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.74.0" }
|
| 26 |
|
- |
quasi-webview = { path = "../quasi-webview", version = "0.74.0" }
|
| 27 |
|
- |
quasi-tui = { path = "../quasi-tui", version = "0.74.0" }
|
|
25 |
+ |
quasi-router = { path = "../quasi-router", version = "0.75.0" }
|
|
26 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.75.0" }
|
|
27 |
+ |
quasi-tui = { path = "../quasi-tui", version = "0.75.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.74.0" }
|
| 32 |
|
- |
makeover-layout = "0.37.0"
|
| 33 |
|
- |
makeover-tui = { version = "0.37.0", features = ["theme"] }
|
|
31 |
+ |
quasi-http = { path = "../quasi-http", version = "0.75.0" }
|
|
32 |
+ |
makeover-layout = "0.38.0"
|
|
33 |
+ |
makeover-tui = { version = "0.38.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
|
| 36 |
36 |
|
# tests take this.
|
| 37 |
|
- |
makeover = "3.0"
|
|
37 |
+ |
makeover = "3.1"
|
| 38 |
38 |
|
ratatui = { version = "0.30", default-features = false }
|
| 39 |
39 |
|
# Allocation counting, and only that. Optional and off by default. It is here
|
| 40 |
40 |
|
# rather than a hand-written `GlobalAlloc` because the workspace forbids
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-http"
|
| 3 |
|
- |
version = "0.74.0"
|
|
3 |
+ |
version = "0.75.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.74.0" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.75.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.74.0"
|
|
3 |
+ |
version = "0.75.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.74.0" }
|
|
15 |
+ |
quasi-router = { path = "../quasi-router", version = "0.75.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
|
| 19 |
19 |
|
# renderer instead of one copy per app.
|
| 20 |
|
- |
makeover-immediate = "0.38.0"
|
|
20 |
+ |
makeover-immediate = "0.39.0"
|
| 21 |
21 |
|
# The one place a duration is named rather than numbered. `Intent::Dismiss` is
|
| 22 |
22 |
|
# how long a transient notice lives, and `notice_lifetime` is the seam: the
|
| 23 |
23 |
|
# description says a toast goes away on its own and declines to say when, so
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-notifs"
|
| 3 |
|
- |
version = "0.74.0"
|
|
3 |
+ |
version = "0.75.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.74.0", optional = true }
|
|
27 |
+ |
quasi-router = { path = "../quasi-router", version = "0.75.0", optional = true }
|
| 28 |
28 |
|
synckit-config = { git = "https://makenot.work/git/max/synckit.git", version = "0.2", optional = true }
|