Skip to main content

max / makenotwork

server: serve every script quasi-webview ships, and take quasi 0.54 Shell::under("/static") links quasi-download.js by default and build.rs was writing two of the four scripts out, so every described page has been linking a 404 since that script shipped -- an export control reached through htmx would have swapped the file's contents into a region as text. The new quasi-fill.js (f35aafee) would have been the second. A loop over the crate's constants rather than one fs::write per name, so a script the renderer starts shipping and this file forgets is one line to add rather than a silent 404. Both new names gitignored beside the other generated assets. Nothing here uses Act::fills yet; 6fb46f7c (Shape 4, the media picker) is the consumer it was ruled for. The pin moves because quasi did.
Author: Max Johnson <me@maxj.phd> · 2026-08-22 17:47 UTC
Signed with PGP, not checked
Commit: 9b74828be3fced2bcb87c97a11fb0f2efd57be73
Parent: 3531fca
4 files changed, +52 insertions, -40 deletions
M .gitignore +2
@@ -12,6 +12,8 @@
12 12 # makeover-webview; the crates are the source, a checked-in copy would drift)
13 13 server/static/quasi-selection.js
14 14 server/static/quasi-clock.js
15 + server/static/quasi-download.js
16 + server/static/quasi-fill.js
15 17 server/static/geometry.css
16 18 server/static/layout.css
17 19 server/static/embed-geometry.css
M server/Cargo.lock +24 -24
@@ -2865,7 +2865,7 @@
2865 2865 checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
2866 2866 dependencies = [
2867 2867 "libc",
2868 - "windows-sys 0.61.2",
2868 + "windows-sys 0.52.0",
2869 2869 ]
2870 2870
2871 2871 [[package]]
@@ -3650,7 +3650,7 @@
3650 3650 checksum = "1a791e6620676a875f362f3156ed213e73ca099a09bf992c18812abe65cc37b1"
3651 3651 dependencies = [
3652 3652 "bstr",
3653 - "hashbrown 0.17.1",
3653 + "hashbrown 0.15.5",
3654 3654 ]
3655 3655
3656 3656 [[package]]
@@ -4801,7 +4801,7 @@
4801 4801 source = "registry+https://github.com/rust-lang/crates.io-index"
4802 4802 checksum = "82cb6a9f675da968c63b6208c641b9dca58fc0133ae53375736b1767b0cab8bd"
4803 4803 dependencies = [
4804 - "windows-sys 0.61.2",
4804 + "windows-sys 0.59.0",
4805 4805 ]
4806 4806
4807 4807 [[package]]
@@ -5703,7 +5703,7 @@
5703 5703 source = "registry+https://github.com/rust-lang/crates.io-index"
5704 5704 checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
5705 5705 dependencies = [
5706 - "windows-sys 0.61.2",
5706 + "windows-sys 0.59.0",
5707 5707 ]
5708 5708
5709 5709 [[package]]
@@ -6617,7 +6617,7 @@
6617 6617
6618 6618 [[package]]
6619 6619 name = "quasi-axum"
6620 - version = "0.53.0"
6620 + version = "0.54.0"
6621 6621 dependencies = [
6622 6622 "axum",
6623 6623 "http 1.4.2",
@@ -6628,7 +6628,7 @@
6628 6628
6629 6629 [[package]]
6630 6630 name = "quasi-basics"
6631 - version = "0.53.0"
6631 + version = "0.54.0"
6632 6632 dependencies = [
6633 6633 "makeover-layout",
6634 6634 "quasi-router",
@@ -6636,7 +6636,7 @@
6636 6636
6637 6637 [[package]]
6638 6638 name = "quasi-http"
6639 - version = "0.53.0"
6639 + version = "0.54.0"
6640 6640 dependencies = [
6641 6641 "form_urlencoded",
6642 6642 "http 1.4.2",
@@ -6645,7 +6645,7 @@
6645 6645
6646 6646 [[package]]
6647 6647 name = "quasi-router"
6648 - version = "0.53.0"
6648 + version = "0.54.0"
6649 6649 dependencies = [
6650 6650 "makeover-layout",
6651 6651 ]
@@ -6668,7 +6668,7 @@
6668 6668
6669 6669 [[package]]
6670 6670 name = "quasi-webview"
6671 - version = "0.53.0"
6671 + version = "0.54.0"
6672 6672 dependencies = [
6673 6673 "docengine",
6674 6674 "makeover-layout",
@@ -7320,7 +7320,7 @@
7320 7320 "errno",
7321 7321 "libc",
7322 7322 "linux-raw-sys 0.12.1",
7323 - "windows-sys 0.61.2",
7323 + "windows-sys 0.52.0",
7324 7324 ]
7325 7325
7326 7326 [[package]]
@@ -7400,7 +7400,7 @@
7400 7400 "security-framework 3.7.0",
7401 7401 "security-framework-sys",
7402 7402 "webpki-root-certs",
7403 - "windows-sys 0.61.2",
7403 + "windows-sys 0.52.0",
7404 7404 ]
7405 7405
7406 7406 [[package]]
@@ -8526,7 +8526,7 @@
8526 8526 "getrandom 0.4.3",
8527 8527 "once_cell",
8528 8528 "rustix 1.1.4",
8529 - "windows-sys 0.61.2",
8529 + "windows-sys 0.52.0",
8530 8530 ]
8531 8531
8532 8532 [[package]]
@@ -9952,7 +9952,7 @@
9952 9952 source = "registry+https://github.com/rust-lang/crates.io-index"
9953 9953 checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
9954 9954 dependencies = [
9955 - "windows-sys 0.61.2",
9955 + "windows-sys 0.48.0",
9956 9956 ]
9957 9957
9958 9958 [[package]]
@@ -10752,13 +10752,21 @@
10752 10752 name = "painhours"
10753 10753 version = "0.1.0"
10754 10754
10755 + [[patch.unused]]
10756 + name = "synckit-client"
10757 + version = "0.8.1"
10758 +
10759 + [[patch.unused]]
10760 + name = "synckit-config"
10761 + version = "0.2.0"
10762 +
10755 10763 [[patch.unused]]
10756 10764 name = "quasi-immediate"
10757 - version = "0.53.0"
10765 + version = "0.54.0"
10758 10766
10759 10767 [[patch.unused]]
10760 10768 name = "quasi-notifs"
10761 - version = "0.53.0"
10769 + version = "0.54.0"
10762 10770
10763 10771 [[patch.unused]]
10764 10772 name = "quasi-store"
@@ -10766,12 +10774,4 @@
10766 10774
10767 10775 [[patch.unused]]
10768 10776 name = "quasi-tauri"
10769 - version = "0.53.0"
10770 -
10771 - [[patch.unused]]
10772 - name = "synckit-client"
10773 - version = "0.8.1"
10774 -
10775 - [[patch.unused]]
10776 - name = "synckit-config"
10777 - version = "0.2.0"
10777 + version = "0.54.0"
@@ -157,7 +157,7 @@
157 157 # through quasi beside its Askama equivalent, so the cost of describing a screen
158 158 # here is measured rather than argued. Not load-bearing for any shipped route.
159 159 # See wiki look-wave-2, tier G.
160 - quasi-router = { git = "https://makenot.work/git/max/quasi.git", version = "0.53" }
160 + quasi-router = { git = "https://makenot.work/git/max/quasi.git", version = "0.54" }
161 161 # The description vocabulary quasi's screen types are built from. Pinned here
162 162 # rather than reached through quasi-router's re-export because a described
163 163 # screen names FieldKind and Tone directly; it has to track what quasi-router
@@ -173,13 +173,13 @@
173 173 # For the request head the per-viewer state factory reads. axum re-exports it,
174 174 # but the factory's signature is quasi-axum's and names `http::request::Parts`.
175 175 http = "1.3.1"
176 - quasi-axum = { git = "https://makenot.work/git/max/quasi.git", version = "0.53" }
177 - quasi-webview = { git = "https://makenot.work/git/max/quasi.git", version = "0.53" }
176 + quasi-axum = { git = "https://makenot.work/git/max/quasi.git", version = "0.54" }
177 + quasi-webview = { git = "https://makenot.work/git/max/quasi.git", version = "0.54" }
178 178 # The first-party widget set. The carousel was proved here against three pages
179 179 # and then moved there; what is left in `quasi/widgets/carousel.rs` is the
180 180 # Askama glue. Not `makeover-basics`: a widget is an assembly of `Node`s, so it
181 181 # sits above quasi-router rather than inside the description suite.
182 - quasi-basics = { git = "https://makenot.work/git/max/quasi.git", version = "0.53" }
182 + quasi-basics = { git = "https://makenot.work/git/max/quasi.git", version = "0.54" }
183 183
184 184 # Git source browser
185 185 gix = { version = "0.86", default-features = false, features = ["blame", "mailmap", "revision", "sha1", "max-performance-safe"] }
@@ -273,7 +273,7 @@
273 273 # Written from the crate rather than copied into the repo for the reason the
274 274 # constants exist: a stale copy in a static directory is a silently dead bulk
275 275 # bar, and the version has to be the one the emitter agrees with.
276 - quasi-webview = { git = "https://makenot.work/git/max/quasi.git", version = "0.53" }
276 + quasi-webview = { git = "https://makenot.work/git/max/quasi.git", version = "0.54" }
277 277
278 278 [dev-dependencies]
279 279 tower = { version = "0.5.3", features = ["util"] }
M server/build.rs +21 -11
@@ -21,22 +21,32 @@
21 21 // No explicit touch selector: density hangs off (hover: none),
22 22 // (pointer: coarse) alone, because the server has no mode class to key it
23 23 // on. GO passes `.ui-mode-mobile` because it has one.
24 - // The two scripts quasi-webview ships, written where the shell already says
25 - // they are served from. Both are behaviour a description cannot state and a
24 + // The four scripts quasi-webview ships, written where the shell already says
25 + // they are served from. Each is behaviour a description cannot state and a
26 26 // renderer therefore owns: how many rows are ticked and that a control over
27 - // none of them should not be pressable (`quasi-selection.js`), and a readout
28 - // reckoned against the current time that keeps moving (`quasi-clock.js`).
29 - // `Shell::under("/static")` has named both addresses since S1 and neither
30 - // file existed, so every page linked two scripts that 404ed and the first
31 - // described bulk bar would have shipped without its count.
27 + // none of them should not be pressable (`quasi-selection.js`), a readout
28 + // reckoned against the current time that keeps moving (`quasi-clock.js`),
29 + // an htmx answer that has to become a saved file rather than page text
30 + // (`quasi-download.js`), and a chosen value that lands in the box the
31 + // reader is typing in (`quasi-fill.js`).
32 + // `Shell::under("/static")` has named these addresses since each script
33 + // existed and only two of the files were being written, so every page has
34 + // been linking a script that 404s -- which is what the loop is for: a name
35 + // added to the renderer and forgotten here is a feature that silently does
36 + // nothing.
32 37 //
33 38 // Written from the crate's own constants for the reason they are constants:
34 39 // the script reads hooks the emitter writes, so a copy checked in here goes
35 40 // stale against the next bump in silence. Gitignored, like the stylesheets.
36 - fs::write("static/quasi-selection.js", quasi_webview::SELECTION_JS)
37 - .expect("write static/quasi-selection.js");
38 - fs::write("static/quasi-clock.js", quasi_webview::CLOCK_JS)
39 - .expect("write static/quasi-clock.js");
41 + for (name, source) in [
42 + ("quasi-selection.js", quasi_webview::SELECTION_JS),
43 + ("quasi-clock.js", quasi_webview::CLOCK_JS),
44 + ("quasi-download.js", quasi_webview::DOWNLOAD_JS),
45 + ("quasi-fill.js", quasi_webview::FILL_JS),
46 + ] {
47 + fs::write(format!("static/{name}"), source)
48 + .unwrap_or_else(|error| panic!("write static/{name}: {error}"));
49 + }
40 50
41 51 makeover_build::geometry_css("static/geometry.css", None);
42 52 makeover_build::layout_css("static/layout.css", &makeover_build::Emit::default());