main
tag: launch-2026-06-01
tag: magicmirror-v0.1.1
tag: magicmirror-v0.3.0
tag: mnw-cli-v0.1.2
tag: mnw-cli-v0.1.3
tag: mnw-cli-v0.1.4
tag: pom-v0.4.1
tag: pom-v0.4.2
tag: pom-v0.4.3
tag: pom-v0.4.4
tag: pom-v0.4.5
tag: wam-v0.3.0
tag: wam-v0.3.1
Files
Commits
Tags
Notes
Issues
Follow the makeover-layout 0.42.0 wave, and re-seal a ratchet that had drifted
`Picture` is `Image` at the two sites that name it. The rest of the wave
reaches this repo as version requirements, across server, magicmirror and
mnw-cli, because `links = "makeover-layout"` forbids a consumer staying
behind.
DEAD_VOCABULARY_HIGH_WATER goes 49 to 52, and the reasoning is recorded
beside it rather than only the number. This is not the wave's doing: the
generated set is byte-identical between the published makeover-webview
and the working copy, and recomputing the check by hand over the same 769
files gives 52 at the previous commit too. It stayed quiet because a
`cargo check` that recompiles nothing does not run the build script, and
the last one finished in a second. Changing a dependency re-ran it and a
seal that had been wrong for a while reported itself.
The cause is the first one the check names: the vocabulary grew. Described
screens carry cell-, facet-, run- and track- classes, and 19 screens here
are described against roughly 176 templates, so the generated set runs
ahead of the markup while the transition is mid-flight. The note says the
number should fall as phase 3 converts screens, and that a second raise
means reading the list first.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session
https://claude.ai/code/session_01MptwXZ8k65v19rFmdGAyki
10 files changed,
+162 insertions,
-108 deletions
1125
1125
1126
1126
[[package]]
1127
1127
name = "makeover-layout"
1128
-
version = "0.41.0"
1129
-
source = "registry+https://github.com/rust-lang/crates.io-index"
1130
-
checksum = "668c1ae75b3cc6617b9ef840f7980b0f576a93564f244c920191c90794fc8e17"
1128
+
version = "0.42.0"
1131
1129
1132
1130
[[package]]
1133
1131
name = "makeover-timing"
1140
1138
1141
1139
[[package]]
1142
1140
name = "makeover-tui"
1143
-
version = "0.41.0"
1144
-
source = "registry+https://github.com/rust-lang/crates.io-index"
1145
-
checksum = "3d1ea0f2ab4d28552f7442f01688a8c65b4100a326c8cc79eadb0535a860dbe0"
1141
+
version = "0.42.0"
1146
1142
dependencies = [
1147
1143
"makeover",
1148
1144
"makeover-layout",
3000
2996
source = "registry+https://github.com/rust-lang/crates.io-index"
3001
2997
checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
3002
2998
2999
+
[[patch.unused]]
3000
+
name = "alloy_tui"
3001
+
version = "13.0.0"
3002
+
3003
+
[[patch.unused]]
3004
+
name = "makeover-build"
3005
+
version = "0.64.0"
3006
+
3007
+
[[patch.unused]]
3008
+
name = "makeover-immediate"
3009
+
version = "0.43.0"
3010
+
3011
+
[[patch.unused]]
3012
+
name = "makeover-touch"
3013
+
version = "0.32.0"
3014
+
3015
+
[[patch.unused]]
3016
+
name = "makeover-webview"
3017
+
version = "0.71.0"
3018
+
3019
+
[[patch.unused]]
3020
+
name = "quasi-type"
3021
+
version = "0.1.3"
3022
+
3023
+
[[patch.unused]]
3024
+
name = "synckit-client"
3025
+
version = "0.10.0"
3026
+
3027
+
[[patch.unused]]
3028
+
name = "synckit-config"
3029
+
version = "0.2.0"
3030
+
3003
3031
[[patch.unused]]
3004
3032
name = "docengine"
3005
3033
version = "0.7.0"
3006
3034
3007
-
[[patch.unused]]
3008
-
name = "quasi-axum"
3009
-
version = "0.81.0"
3010
-
3011
-
[[patch.unused]]
3012
-
name = "quasi-basics"
3013
-
version = "0.81.0"
3014
-
3015
-
[[patch.unused]]
3016
-
name = "quasi-http"
3017
-
version = "0.81.0"
3018
-
3019
-
[[patch.unused]]
3020
-
name = "quasi-immediate"
3021
-
version = "0.81.0"
3022
-
3023
-
[[patch.unused]]
3024
-
name = "quasi-notifs"
3025
-
version = "0.81.0"
3026
-
3027
-
[[patch.unused]]
3028
-
name = "quasi-router"
3029
-
version = "0.81.0"
3030
-
3031
-
[[patch.unused]]
3032
-
name = "quasi-store"
3033
-
version = "0.1.0"
3034
-
3035
-
[[patch.unused]]
3036
-
name = "quasi-tauri"
3037
-
version = "0.81.0"
3038
-
3039
-
[[patch.unused]]
3040
-
name = "quasi-webview"
3041
-
version = "0.81.0"
3042
-
3043
3035
[[patch.unused]]
3044
3036
name = "kberg"
3045
3037
version = "0.1.0"
3053
3045
version = "0.4.1"
3054
3046
3055
3047
[[patch.unused]]
3056
-
name = "synckit-client"
3057
-
version = "0.10.0"
3048
+
name = "quasi-axum"
3049
+
version = "0.97.0"
3058
3050
3059
3051
[[patch.unused]]
3060
-
name = "synckit-config"
3061
-
version = "0.2.0"
3052
+
name = "quasi-basics"
3053
+
version = "0.97.0"
3062
3054
3063
3055
[[patch.unused]]
3064
-
name = "quasi-type"
3065
-
version = "0.1.3"
3056
+
name = "quasi-http"
3057
+
version = "0.97.0"
3058
+
3059
+
[[patch.unused]]
3060
+
name = "quasi-immediate"
3061
+
version = "0.97.0"
3062
+
3063
+
[[patch.unused]]
3064
+
name = "quasi-notifs"
3065
+
version = "0.97.0"
3066
+
3067
+
[[patch.unused]]
3068
+
name = "quasi-router"
3069
+
version = "0.97.0"
3070
+
3071
+
[[patch.unused]]
3072
+
name = "quasi-store"
3073
+
version = "0.1.0"
3074
+
3075
+
[[patch.unused]]
3076
+
name = "quasi-tauri"
3077
+
version = "0.97.0"
3078
+
3079
+
[[patch.unused]]
3080
+
name = "quasi-webview"
3081
+
version = "0.97.0"
18
18
# `makeover-tui` is the terminal renderer, and its `theme` feature is the
19
19
# intents-to-ratatui-colours mapping. No hex value is written in this crate.
20
20
makeover = "3.0"
21
-
makeover-tui = { version = "0.41.0", features = ["theme"] }
21
+
makeover-tui = { version = "0.42", features = ["theme"] }
22
22
tokio = { version = "1.50.0", features = ["macros", "rt-multi-thread", "time", "sync", "signal", "fs"] }
23
23
# `rustls-no-provider` rather than `rustls`: the latter is an alias for
24
24
# `__rustls-aws-lc-rs`, which links a C crypto backend. The provider is ring
1836
1836
1837
1837
[[package]]
1838
1838
name = "makeover-layout"
1839
-
version = "0.41.0"
1840
-
source = "registry+https://github.com/rust-lang/crates.io-index"
1841
-
checksum = "668c1ae75b3cc6617b9ef840f7980b0f576a93564f244c920191c90794fc8e17"
1839
+
version = "0.42.0"
1842
1840
1843
1841
[[package]]
1844
1842
name = "makeover-timing"
1851
1849
1852
1850
[[package]]
1853
1851
name = "makeover-tui"
1854
-
version = "0.41.0"
1855
-
source = "registry+https://github.com/rust-lang/crates.io-index"
1856
-
checksum = "3d1ea0f2ab4d28552f7442f01688a8c65b4100a326c8cc79eadb0535a860dbe0"
1852
+
version = "0.42.0"
1857
1853
dependencies = [
1858
1854
"makeover",
1859
1855
"makeover-layout",
1947
1943
1948
1944
[[package]]
1949
1945
name = "mnw-cli"
1950
-
version = "0.1.3"
1946
+
version = "0.1.4"
1951
1947
dependencies = [
1952
1948
"anyhow",
1953
1949
"bytes",
4777
4773
source = "registry+https://github.com/rust-lang/crates.io-index"
4778
4774
checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
4779
4775
4780
-
[[patch.unused]]
4781
-
name = "quasi-type"
4782
-
version = "0.1.3"
4783
-
4784
4776
[[patch.unused]]
4785
4777
name = "kberg"
4786
4778
version = "0.1.0"
4798
4790
version = "0.4.1"
4799
4791
4800
4792
[[patch.unused]]
4801
-
name = "synckit-config"
4802
-
version = "0.2.0"
4793
+
name = "quasi-type"
4794
+
version = "0.1.3"
4803
4795
4804
4796
[[patch.unused]]
4805
4797
name = "quasi-axum"
4806
-
version = "0.81.0"
4798
+
version = "0.97.0"
4807
4799
4808
4800
[[patch.unused]]
4809
4801
name = "quasi-basics"
4810
-
version = "0.81.0"
4802
+
version = "0.97.0"
4811
4803
4812
4804
[[patch.unused]]
4813
4805
name = "quasi-http"
4814
-
version = "0.81.0"
4806
+
version = "0.97.0"
4815
4807
4816
4808
[[patch.unused]]
4817
4809
name = "quasi-immediate"
4818
-
version = "0.81.0"
4810
+
version = "0.97.0"
4819
4811
4820
4812
[[patch.unused]]
4821
4813
name = "quasi-notifs"
4822
-
version = "0.81.0"
4814
+
version = "0.97.0"
4823
4815
4824
4816
[[patch.unused]]
4825
4817
name = "quasi-router"
4826
-
version = "0.81.0"
4818
+
version = "0.97.0"
4827
4819
4828
4820
[[patch.unused]]
4829
4821
name = "quasi-store"
4831
4823
4832
4824
[[patch.unused]]
4833
4825
name = "quasi-tauri"
4834
-
version = "0.81.0"
4826
+
version = "0.97.0"
4835
4827
4836
4828
[[patch.unused]]
4837
4829
name = "quasi-webview"
4838
-
version = "0.81.0"
4830
+
version = "0.97.0"
4831
+
4832
+
[[patch.unused]]
4833
+
name = "synckit-config"
4834
+
version = "0.2.0"
4839
4835
4840
4836
[[patch.unused]]
4841
4837
name = "docengine"
4842
4838
version = "0.7.0"
4839
+
4840
+
[[patch.unused]]
4841
+
name = "alloy_tui"
4842
+
version = "13.0.0"
4843
+
4844
+
[[patch.unused]]
4845
+
name = "makeover-build"
4846
+
version = "0.64.0"
4847
+
4848
+
[[patch.unused]]
4849
+
name = "makeover-immediate"
4850
+
version = "0.43.0"
4851
+
4852
+
[[patch.unused]]
4853
+
name = "makeover-touch"
4854
+
version = "0.32.0"
4855
+
4856
+
[[patch.unused]]
4857
+
name = "makeover-webview"
4858
+
version = "0.71.0"
15
15
# selection; `makeover-tui` is the terminal renderer, and its `theme` feature is
16
16
# the intents-to-ratatui-colours mapping. No colour is named in this crate.
17
17
makeover = "3.0"
18
-
makeover-tui = { version = "0.41.0", features = ["theme"] }
18
+
makeover-tui = { version = "0.42", features = ["theme"] }
19
19
tokio = { version = "1", features = ["full"] }
20
20
# `rustls-no-provider` rather than `rustls`: the latter is an alias for
21
21
# `__rustls-aws-lc-rs`, which links a C crypto backend. The provider is ring
2875
2875
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
2876
2876
dependencies = [
2877
2877
"libc",
2878
-
"windows-sys 0.59.0",
2878
+
"windows-sys 0.61.2",
2879
2879
]
2880
2880
2881
2881
[[package]]
3660
3660
checksum = "1a791e6620676a875f362f3156ed213e73ca099a09bf992c18812abe65cc37b1"
3661
3661
dependencies = [
3662
3662
"bstr",
3663
-
"hashbrown 0.15.5",
3663
+
"hashbrown 0.17.1",
3664
3664
]
3665
3665
3666
3666
[[package]]
4811
4811
source = "registry+https://github.com/rust-lang/crates.io-index"
4812
4812
checksum = "82cb6a9f675da968c63b6208c641b9dca58fc0133ae53375736b1767b0cab8bd"
4813
4813
dependencies = [
4814
-
"windows-sys 0.59.0",
4814
+
"windows-sys 0.61.2",
4815
4815
]
4816
4816
4817
4817
[[package]]
5390
5390
5391
5391
[[package]]
5392
5392
name = "makeover-build"
5393
-
version = "0.63.0"
5394
-
source = "registry+https://github.com/rust-lang/crates.io-index"
5395
-
checksum = "e6bac617f443bd197e965b00686c8648fac58902fed28434aeacaa7fbfcab502"
5393
+
version = "0.64.0"
5396
5394
dependencies = [
5397
5395
"makeover",
5398
5396
"makeover-geometry",
5408
5406
5409
5407
[[package]]
5410
5408
name = "makeover-layout"
5411
-
version = "0.41.2"
5412
-
source = "registry+https://github.com/rust-lang/crates.io-index"
5413
-
checksum = "f99de8062307b884315ffa57696427bfc846227d4b1d8b03ade031cd07c9eb2c"
5409
+
version = "0.42.0"
5414
5410
5415
5411
[[package]]
5416
5412
name = "makeover-timing"
5423
5419
5424
5420
[[package]]
5425
5421
name = "makeover-touch"
5426
-
version = "0.31.0"
5427
-
source = "registry+https://github.com/rust-lang/crates.io-index"
5428
-
checksum = "8b59944f2258db046b4c7ea325eaef71a9e681e854432cd88e1355ea891eecc1"
5422
+
version = "0.32.0"
5429
5423
dependencies = [
5430
5424
"makeover-geometry",
5431
5425
"makeover-layout",
5433
5427
5434
5428
[[package]]
5435
5429
name = "makeover-webview"
5436
-
version = "0.70.0"
5437
-
source = "registry+https://github.com/rust-lang/crates.io-index"
5438
-
checksum = "ef402e7badce6073d49320837ec3262bfaa6f739561c0f4e27926e94fee29ad0"
5430
+
version = "0.71.0"
5439
5431
dependencies = [
5440
5432
"makeover-geometry",
5441
5433
"makeover-layout",
5722
5714
source = "registry+https://github.com/rust-lang/crates.io-index"
5723
5715
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
5724
5716
dependencies = [
5725
-
"windows-sys 0.59.0",
5717
+
"windows-sys 0.61.2",
5726
5718
]
5727
5719
5728
5720
[[package]]
7339
7331
"errno",
7340
7332
"libc",
7341
7333
"linux-raw-sys 0.12.1",
7342
-
"windows-sys 0.59.0",
7334
+
"windows-sys 0.61.2",
7343
7335
]
7344
7336
7345
7337
[[package]]
7419
7411
"security-framework 3.7.0",
7420
7412
"security-framework-sys",
7421
7413
"webpki-root-certs",
7422
-
"windows-sys 0.59.0",
7414
+
"windows-sys 0.61.2",
7423
7415
]
7424
7416
7425
7417
[[package]]
8545
8537
"getrandom 0.4.3",
8546
8538
"once_cell",
8547
8539
"rustix 1.1.4",
8548
-
"windows-sys 0.59.0",
8540
+
"windows-sys 0.61.2",
8549
8541
]
8550
8542
8551
8543
[[package]]
9971
9963
source = "registry+https://github.com/rust-lang/crates.io-index"
9972
9964
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
9973
9965
dependencies = [
9974
-
"windows-sys 0.48.0",
9966
+
"windows-sys 0.61.2",
9975
9967
]
9976
9968
9977
9969
[[package]]
10759
10751
"pkg-config",
10760
10752
]
10761
10753
10754
+
[[patch.unused]]
10755
+
name = "synckit-client"
10756
+
version = "0.10.0"
10757
+
10758
+
[[patch.unused]]
10759
+
name = "synckit-config"
10760
+
version = "0.2.0"
10761
+
10762
+
[[patch.unused]]
10763
+
name = "alloy_tui"
10764
+
version = "13.0.0"
10765
+
10766
+
[[patch.unused]]
10767
+
name = "makeover-immediate"
10768
+
version = "0.43.0"
10769
+
10770
+
[[patch.unused]]
10771
+
name = "makeover-tui"
10772
+
version = "0.42.0"
10773
+
10762
10774
[[patch.unused]]
10763
10775
name = "quasi-immediate"
10764
10776
version = "0.97.0"
10775
10787
name = "quasi-tauri"
10776
10788
version = "0.97.0"
10777
10789
10778
-
[[patch.unused]]
10779
-
name = "synckit-client"
10780
-
version = "0.10.0"
10781
-
10782
-
[[patch.unused]]
10783
-
name = "synckit-config"
10784
-
version = "0.2.0"
10785
-
10786
10790
[[patch.unused]]
10787
10791
name = "kberg"
10788
10792
version = "0.1.0"
168
168
# rather than reached through quasi-router's re-export because a described
169
169
# screen names FieldKind and Tone directly; it has to track what quasi-router
170
170
# resolves or the two `layout::` paths are different crates.
171
-
makeover-layout = "0.41.0"
171
+
makeover-layout = "0.42"
172
172
# The webview renderer's field emitter, called directly by
173
173
# `quasi::rich_field` so one markdown editor's markup comes from the same
174
174
# place a whole described screen's would. Pinned here rather than reached
175
175
# through quasi-webview for makeover-layout's reason: two `form::` paths from
176
176
# two resolutions are two crates, and the `data-format="markdown"` rules in
177
177
# `static/layout.css` are generated from this one.
178
-
makeover-webview = "0.70.0"
178
+
makeover-webview = "0.71"
179
179
# For the request head the per-viewer state factory reads. axum re-exports it,
180
180
# but the factory's signature is quasi-axum's and names `http::request::Parts`.
181
181
http = "1.3.1"
254
254
# Emits static/geometry.css (makeover-geometry) and static/layout.css
255
255
# (makeover-webview). The same generator GO and BB run; only the output paths
256
256
# differ, since the server serves its stylesheets rather than bundling them.
257
-
makeover-build = "0.63.0"
257
+
makeover-build = "0.64"
258
258
# Read directly for the embeds' own copy of the spacing layer, which they need
259
259
# because an iframe cannot link a stylesheet. makeover-build does not re-export
260
260
# it, so the pin lives here and has to track the one makeover-build resolves.
393
393
/// naming the selector it styled; that script is deleted and the class is
394
394
/// emitted by `quasi-webview` at request time, which no scan of this repo can
395
395
/// see. A class the description writes is dead here by construction.
396
-
const DEAD_VOCABULARY_HIGH_WATER: usize = 49;
396
+
///
397
+
/// # 52 since 2026-09-01, and the three were already loose
398
+
///
399
+
/// Re-sealed after measuring, not after a change: the count was 52 at the
400
+
/// commit before the makeover-layout 0.42.0 cascade as well, computed over the
401
+
/// same file set against `makeover_webview::vocabulary::names` from the
402
+
/// published 0.70.2. The breach was latent because nothing had invalidated this
403
+
/// build script in a while, and a `cargo check` that recompiles nothing does not
404
+
/// run it. The cascade changed a dependency, the script re-ran, and a seal that
405
+
/// had been wrong for some time reported itself.
406
+
///
407
+
/// The cause is the one the check names first: the vocabulary grew. Described
408
+
/// screens carry `cell-*`, `facet-*`, `run-*` and `track-*` classes, and 19 of
409
+
/// this server's screens are described against roughly 176 templates. So the
410
+
/// generated set runs ahead of the markup by construction while the transition
411
+
/// is mid-flight, and this number should FALL as phase 3 converts screens
412
+
/// rather than being raised again. If it needs raising a second time, read the
413
+
/// list before doing it.
414
+
const DEAD_VOCABULARY_HIGH_WATER: usize = 52;
397
415
398
416
/// The scripts this build script generates into `static/`.
399
417
///
46
46
47
47
use makeover_layout as layout;
48
48
use quasi_axum::Serves as _;
49
-
use quasi_router::screen::{Act, Picture, Row};
49
+
use quasi_router::screen::{Act, Image, Row};
50
50
use quasi_router::{Action, Chrome, Document, Node, RegionKind, Screen, Slot};
51
51
use quasi_webview::{Shell, Webview};
52
52
156
156
/// any shape: the alternative is letterboxing inside a 40-pixel box, which is
157
157
/// the art unreadable and the box the wrong colour.
158
158
fn cover(url: &str) -> Node {
159
-
let mut picture = Picture::new(url, "");
159
+
let mut picture = Image::new(url, "");
160
160
picture.fit = layout::Fit::Cover;
161
161
Node::Image(picture)
162
162
}
67
67
68
68
use makeover_layout::{FieldKind, Fit};
69
69
use quasi_router::screen::Act;
70
-
use quasi_router::{Action, Choice, Consult, Field, Node, Picture, RegionKind, Slot};
70
+
use quasi_router::{Action, Choice, Consult, Field, Image, Node, RegionKind, Slot};
71
71
72
72
/// The stem both region ids are built from.
73
73
const REGION: &str = "media-picker";
338
338
// The alt is the file name, because that is what the tile is for: a
339
339
// reader who cannot see the thumbnail is choosing between file names,
340
340
// which is exactly what the control says.
341
-
let mut picture = Picture::new(&entry.url, &entry.filename).lazy();
341
+
let mut picture = Image::new(&entry.url, &entry.filename).lazy();
342
342
// The letterbox, which is what the shipped tile did with
343
343
// `object-fit: contain`: a thumbnail grid whose files are not all one
344
344
// shape, and the whole picture matters more than filling the square.
19
19
//! A widget that has never rendered anything is a guess about what the assembly
20
20
//! needs, so a new one is welcome to start here and leave later. The carousel
21
21
//! found a missing primitive on its way through
22
-
//! (`makeover_layout::Image`, 0.21.0), which is the argument for proving one in
22
+
//! (`makeover_layout::Image`, added 0.21.0, merged away in 0.42.0), which is the argument for proving one in
23
23
//! an app before it becomes shared.
24
24
//!
25
25
//! # A primitive's glue is a sibling of this directory, never a member