Skip to main content

max / makenotwork

Adopt the makeover cascade layer in the server Bumps makeover-build 0.3.1 -> 0.7.0, so geometry.css and layout.css are emitted inside @layer makeover, and declares the order in the generated head partial ahead of every stylesheet link. The declaration goes in build.rs rather than style.css because a layer's position is fixed where its name is first seen. Left to link order the two generated sheets would establish `makeover` by loading first, and it also has to precede the per-page sheets (wizard.css, media-player.css) that _head_assets.html does not link. NO RULE DELETIONS, and that is the finding rather than an omission. The task expected 21 hand-written focus and disabled rules to fall out. Measured with both parses, none of them should: - The server never adopted makeover's component vocabulary. `.card`, `.tab` and `.badge` here are the server's own components that share a name: `.tab` is surface-sunken with no border where makeover's is a raised chip, `.card` is surface-overlay with --shadow-card where makeover's is surface-raised with the bevel. Generated rules lose on every property the server sets, which is correct, and win where it is silent. Retargeting those at the bevel is Platinum phases 4 and 5, not this task. - The focus ring is already `*:focus-visible`, universal, at 2px offset 2px on --focus-ring. That is byte-identical to what makeover now emits and covers far more than makeover's eight selectors, so it stays. It also defeats the generated per-primitive rings, including the depth-derived inset ring on .field, since an unlayered universal rule outranks a layered class rule. - The disabled block is on `button`, `[aria-disabled]` and the .btn-* variants, which are element and app selectors makeover does not emit. What the server does gain is real: it had 0 generated :focus-visible and 0 :disabled before, and the primitives it HAS adopted (.button, .chip, .toggle, .field, .progress, all of which style.css is silent about) now carry the full state set.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-08-02 17:38 UTC
Signed with PGP, not checked
Commit: 6878f38dac839a9d64b9c51b0809de9487035d32
Parent: fcf2aa6
3 files changed, +48 insertions, -20 deletions
M server/Cargo.lock +31 -19
@@ -134,7 +134,7 @@
134 134 source = "registry+https://github.com/rust-lang/crates.io-index"
135 135 checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
136 136 dependencies = [
137 - "windows-sys 0.60.2",
137 + "windows-sys 0.61.2",
138 138 ]
139 139
140 140 [[package]]
@@ -145,7 +145,7 @@
145 145 dependencies = [
146 146 "anstyle",
147 147 "once_cell_polyfill",
148 - "windows-sys 0.60.2",
148 + "windows-sys 0.61.2",
149 149 ]
150 150
151 151 [[package]]
@@ -2814,7 +2814,7 @@
2814 2814 checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
2815 2815 dependencies = [
2816 2816 "libc",
2817 - "windows-sys 0.52.0",
2817 + "windows-sys 0.61.2",
2818 2818 ]
2819 2819
2820 2820 [[package]]
@@ -3586,7 +3586,7 @@
3586 3586 checksum = "1a791e6620676a875f362f3156ed213e73ca099a09bf992c18812abe65cc37b1"
3587 3587 dependencies = [
3588 3588 "bstr",
3589 - "hashbrown 0.15.5",
3589 + "hashbrown 0.17.1",
3590 3590 ]
3591 3591
3592 3592 [[package]]
@@ -4721,7 +4721,7 @@
4721 4721 source = "registry+https://github.com/rust-lang/crates.io-index"
4722 4722 checksum = "82cb6a9f675da968c63b6208c641b9dca58fc0133ae53375736b1767b0cab8bd"
4723 4723 dependencies = [
4724 - "windows-sys 0.59.0",
4724 + "windows-sys 0.61.2",
4725 4725 ]
4726 4726
4727 4727 [[package]]
@@ -5270,9 +5270,9 @@
5270 5270
5271 5271 [[package]]
5272 5272 name = "makeover-build"
5273 - version = "0.3.1"
5273 + version = "0.7.0"
5274 5274 source = "registry+https://github.com/rust-lang/crates.io-index"
5275 - checksum = "d9b46dc1c83e6855486eeb765a895febd2f0f4a5abde5e44cc9760f419339bf5"
5275 + checksum = "6e0f93fd97d0ce7e3854c0dd8edddefac444de8197bbaa215dfced38cf7a03b6"
5276 5276 dependencies = [
5277 5277 "makeover",
5278 5278 "makeover-geometry",
@@ -5281,23 +5281,35 @@
5281 5281
5282 5282 [[package]]
5283 5283 name = "makeover-geometry"
5284 - version = "0.4.0"
5284 + version = "0.6.0"
5285 5285 source = "registry+https://github.com/rust-lang/crates.io-index"
5286 - checksum = "ec63a50eb9934c2cd416912048c9437a61657064c1947e40571f5fd37a22ffe6"
5286 + checksum = "b2466b8ca54dba9ef62f3679b33c90a0554e507c23e7b725c178ce9d277f542e"
5287 5287
5288 5288 [[package]]
5289 5289 name = "makeover-layout"
5290 - version = "0.6.0"
5290 + version = "0.7.0"
5291 5291 source = "registry+https://github.com/rust-lang/crates.io-index"
5292 - checksum = "ad745601b5220b2244d73a5da3f3854aefe4cdc955dd45c6d3aa5781ad645f5a"
5292 + checksum = "00d6235015ee1a15bc6b3936c5265229de3454524053eb67bf95fc6b741299b0"
5293 +
5294 + [[package]]
5295 + name = "makeover-touch"
5296 + version = "0.2.0"
5297 + source = "registry+https://github.com/rust-lang/crates.io-index"
5298 + checksum = "064bb24217e6d49ccafbefbcc29c7c42572c164feb98e5876e9ca49e77d58808"
5299 + dependencies = [
5300 + "makeover-geometry",
5301 + "makeover-layout",
5302 + ]
5293 5303
5294 5304 [[package]]
5295 5305 name = "makeover-webview"
5296 - version = "0.9.0"
5306 + version = "0.13.0"
5297 5307 source = "registry+https://github.com/rust-lang/crates.io-index"
5298 - checksum = "d4ae8b0857cfa95b5d698e22d5df17eb19bae978839d568ae5de02344892962b"
5308 + checksum = "ac7fbadaa7cf1e4a074a0b0c62a9ea3b1616f9de4e40990fab209560b807046f"
5299 5309 dependencies = [
5310 + "makeover-geometry",
5300 5311 "makeover-layout",
5312 + "makeover-touch",
5301 5313 ]
5302 5314
5303 5315 [[package]]
@@ -5597,7 +5609,7 @@
5597 5609 source = "registry+https://github.com/rust-lang/crates.io-index"
5598 5610 checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
5599 5611 dependencies = [
5600 - "windows-sys 0.59.0",
5612 + "windows-sys 0.61.2",
5601 5613 ]
5602 5614
5603 5615 [[package]]
@@ -7107,7 +7119,7 @@
7107 7119 "errno",
7108 7120 "libc",
7109 7121 "linux-raw-sys 0.12.1",
7110 - "windows-sys 0.52.0",
7122 + "windows-sys 0.61.2",
7111 7123 ]
7112 7124
7113 7125 [[package]]
@@ -7187,7 +7199,7 @@
7187 7199 "security-framework 3.7.0",
7188 7200 "security-framework-sys",
7189 7201 "webpki-root-certs",
7190 - "windows-sys 0.52.0",
7202 + "windows-sys 0.61.2",
7191 7203 ]
7192 7204
7193 7205 [[package]]
@@ -7742,7 +7754,7 @@
7742 7754 checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
7743 7755 dependencies = [
7744 7756 "libc",
7745 - "windows-sys 0.60.2",
7757 + "windows-sys 0.61.2",
7746 7758 ]
7747 7759
7748 7760 [[package]]
@@ -8176,7 +8188,7 @@
8176 8188 "getrandom 0.4.3",
8177 8189 "once_cell",
8178 8190 "rustix 1.1.4",
8179 - "windows-sys 0.52.0",
8191 + "windows-sys 0.61.2",
8180 8192 ]
8181 8193
8182 8194 [[package]]
@@ -9620,7 +9632,7 @@
9620 9632 source = "registry+https://github.com/rust-lang/crates.io-index"
9621 9633 checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
9622 9634 dependencies = [
9623 - "windows-sys 0.48.0",
9635 + "windows-sys 0.61.2",
9624 9636 ]
9625 9637
9626 9638 [[package]]
@@ -173,7 +173,7 @@
173 173 # Emits static/geometry.css (makeover-geometry) and static/layout.css
174 174 # (makeover-webview). The same generator GO and BB run; only the output paths
175 175 # differ, since the server serves its stylesheets rather than bundling them.
176 - makeover-build = "0.3.1"
176 + makeover-build = "0.7.0"
177 177
178 178 [dev-dependencies]
179 179 tower = { version = "0.5.3", features = ["util"] }
@@ -74,6 +74,22 @@
74 74 let partial = format!(
75 75 r#" <link rel="preload" href="/static/fonts/Lato-Regular.woff2" as="font" type="font/woff2" crossorigin>
76 76 <link rel="preload" href="/static/fonts/ysrf.woff2" as="font" type="font/woff2" crossorigin>
77 + <!-- Cascade layer order, declared before any stylesheet so it is a statement
78 + rather than an accident of link order. A layer's position is fixed where
79 + its name is FIRST seen, so without this the two generated sheets below
80 + would establish `makeover` simply by loading first, and reordering these
81 + links would silently reorder the cascade. It also has to precede the
82 + per-page sheets (wizard.css, media-player.css), which this partial does
83 + not link and which base.html therefore cannot order on its own.
84 +
85 + Earlier in the list = lower priority. `makeover` is first because the
86 + design system is what the site overrides, never the reverse. Unlayered
87 + rules still beat every named layer, which is why style.css works today
88 + with no layers of its own, and why the theme block that theming.rs
89 + injects into <head> keeps outranking everything. The other three names
90 + are declared ahead of any layer adoption in style.css and are empty
91 + until then; declaring an empty layer costs nothing. -->
92 + <style>@layer makeover, base, components, responsive;</style>
77 93 <link rel="stylesheet" href="/static/geometry.css?v={version}">
78 94 <link rel="stylesheet" href="/static/layout.css?v={version}">
79 95 <link rel="stylesheet" href="/static/style.css?v={version}">