Skip to main content

max / goingson

Take the makeover 0.33 cascade `Field::unit` and the pins that carry it. The runtime form path builds its fields from the JS form spec, which has no field for what a number is measured in, so `unit` is None there on the same footing as the constraints and the curve above it: this app says nothing rather than parsing a unit out of a label. The dead-vocabulary seal goes 41 to 42 for `.form-unit`, which no markup here writes for that reason. It tightens the day the spec grows a unit.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-08-22 00:31 UTC
Signed with PGP, not checked
Commit: 5118f39efc46a774cb71c6d2a4cddccf74d77e51
Parent: 8ff982d
5 files changed, +59 insertions, -39 deletions
M Cargo.lock +32 -26
@@ -3444,7 +3444,9 @@
3444 3444
3445 3445 [[package]]
3446 3446 name = "makeover-build"
3447 - version = "0.48.0"
3447 + version = "0.49.0"
3448 + source = "registry+https://github.com/rust-lang/crates.io-index"
3449 + checksum = "08975ffa5588135d21fbfb10ce0a70e5cd4da193e679a5f6a56160049ed0183b"
3448 3450 dependencies = [
3449 3451 "makeover",
3450 3452 "makeover-geometry",
@@ -3459,11 +3461,15 @@
3459 3461
3460 3462 [[package]]
3461 3463 name = "makeover-layout"
3462 - version = "0.32.0"
3464 + version = "0.33.0"
3465 + source = "registry+https://github.com/rust-lang/crates.io-index"
3466 + checksum = "7ba9bae28e348ef6df04ddf04222703b5ea680ac2c978f0dce8679e2acbdc5a0"
3463 3467
3464 3468 [[package]]
3465 3469 name = "makeover-touch"
3466 - version = "0.22.1"
3470 + version = "0.23.0"
3471 + source = "registry+https://github.com/rust-lang/crates.io-index"
3472 + checksum = "0f6272302ba50183af43fe35064db861d77b4786ab6f8994ed9bb6c18c57bba0"
3467 3473 dependencies = [
3468 3474 "makeover-geometry",
3469 3475 "makeover-layout",
@@ -3471,7 +3477,9 @@
3471 3477
3472 3478 [[package]]
3473 3479 name = "makeover-tui"
3474 - version = "0.31.0"
3480 + version = "0.32.0"
3481 + source = "registry+https://github.com/rust-lang/crates.io-index"
3482 + checksum = "778fc5d11417d03fa54b43176d63b26d7db397cf05595d1832cbdbdc71a93a48"
3475 3483 dependencies = [
3476 3484 "makeover",
3477 3485 "makeover-layout",
@@ -3480,7 +3488,9 @@
3480 3488
3481 3489 [[package]]
3482 3490 name = "makeover-webview"
3483 - version = "0.54.0"
3491 + version = "0.55.0"
3492 + source = "registry+https://github.com/rust-lang/crates.io-index"
3493 + checksum = "2cd308d279ece9665206044886d0da8762ce9eb81368e0f15a5afb8c0650cb41"
3484 3494 dependencies = [
3485 3495 "makeover-geometry",
3486 3496 "makeover-layout",
@@ -4696,7 +4706,7 @@
4696 4706
4697 4707 [[package]]
4698 4708 name = "quasi-http"
4699 - version = "0.47.0"
4709 + version = "0.48.0"
4700 4710 dependencies = [
4701 4711 "form_urlencoded",
4702 4712 "http",
@@ -4705,7 +4715,7 @@
4705 4715
4706 4716 [[package]]
4707 4717 name = "quasi-notifs"
4708 - version = "0.47.0"
4718 + version = "0.48.0"
4709 4719 dependencies = [
4710 4720 "quasi-router",
4711 4721 "synckit-config",
@@ -4713,14 +4723,14 @@
4713 4723
4714 4724 [[package]]
4715 4725 name = "quasi-router"
4716 - version = "0.47.0"
4726 + version = "0.48.0"
4717 4727 dependencies = [
4718 4728 "makeover-layout",
4719 4729 ]
4720 4730
4721 4731 [[package]]
4722 4732 name = "quasi-tauri"
4723 - version = "0.47.0"
4733 + version = "0.48.0"
4724 4734 dependencies = [
4725 4735 "http",
4726 4736 "quasi-http",
@@ -4746,7 +4756,7 @@
4746 4756
4747 4757 [[package]]
4748 4758 name = "quasi-webview"
4749 - version = "0.47.0"
4759 + version = "0.48.0"
4750 4760 dependencies = [
4751 4761 "docengine",
4752 4762 "makeover-layout",
@@ -8484,25 +8494,21 @@
8484 8494 ]
8485 8495
8486 8496 [[patch.unused]]
8487 - name = "quasi-axum"
8488 - version = "0.47.0"
8489 -
8490 - [[patch.unused]]
8491 - name = "quasi-basics"
8492 - version = "0.47.0"
8493 -
8494 - [[patch.unused]]
8495 - name = "quasi-immediate"
8496 - version = "0.47.0"
8497 -
8498 - [[patch.unused]]
8499 - name = "quasi-store"
8497 + name = "ops-status"
8500 8498 version = "0.1.0"
8501 8499
8502 8500 [[patch.unused]]
8503 - name = "makeover-immediate"
8504 - version = "0.31.0"
8501 + name = "quasi-axum"
8502 + version = "0.48.0"
8505 8503
8506 8504 [[patch.unused]]
8507 - name = "ops-status"
8505 + name = "quasi-basics"
8506 + version = "0.48.0"
8507 +
8508 + [[patch.unused]]
8509 + name = "quasi-immediate"
8510 + version = "0.48.0"
8511 +
8512 + [[patch.unused]]
8513 + name = "quasi-store"
8508 8514 version = "0.1.0"
M Cargo.toml +1 -1
@@ -105,7 +105,7 @@
105 105 notify = "8.2"
106 106 notify-debouncer-mini = "0.7"
107 107 makeover = "3.0"
108 - makeover-tui = "0.31.0"
108 + makeover-tui = "0.32.0"
109 109 toml = "1.1"
110 110
111 111 # Enums
@@ -18,7 +18,7 @@
18 18 # Materialises all three generated files: themes/, geometry.css, layout.css,
19 19 # and holds both drift checks this build.rs used to carry itself: touch density
20 20 # as of 0.17, breakpoints as of 0.18.
21 - makeover-build = "0.48.0"
21 + makeover-build = "0.49.0"
22 22 # Cuts the two house faces into frontend/fonts/. A git dependency because
23 23 # quasi-type is `publish = false`, which is also why makeover-build cannot do
24 24 # this and only emits the CSS that fetches the result. The rev is the one
@@ -28,8 +28,8 @@
28 28 # The table CSS is generated here too: the columns are this app's, so the
29 29 # shared helper cannot know them, but the tracks and the narrowing rules come
30 30 # from the description rather than from hand-written nth-child cuts.
31 - makeover-webview = "0.54.0"
32 - makeover-layout = "0.32.0"
31 + makeover-webview = "0.55.0"
32 + makeover-layout = "0.33.0"
33 33 # Width. Direct rather than through makeover-webview, because the narrow table
34 34 # pass keys off SizeClass::Compact and a boundary reached transitively is a
35 35 # boundary nobody pinned.
@@ -38,7 +38,7 @@
38 38 # `quasi` feature. Optional here as well as below so a default build compiles
39 39 # neither: one `dep:` name covers both tables, which is what lets the feature
40 40 # gate the build script and the crate together.
41 - quasi-webview = { git = "https://makenot.work/git/max/quasi.git", version = "0.47", optional = true }
41 + quasi-webview = { git = "https://makenot.work/git/max/quasi.git", version = "0.48", optional = true }
42 42
43 43 [dependencies]
44 44 goingson-core = { workspace = true }
@@ -56,10 +56,10 @@
56 56 # dependency's source even with the feature off -- so a public clone could not
57 57 # build at all against a URL it could not reach. quasi went public that day and
58 58 # the URL moved here with it.
59 - quasi-router = { git = "https://makenot.work/git/max/quasi.git", version = "0.47", optional = true }
60 - quasi-http = { git = "https://makenot.work/git/max/quasi.git", version = "0.47", optional = true }
61 - quasi-webview = { git = "https://makenot.work/git/max/quasi.git", version = "0.47", optional = true }
62 - quasi-tauri = { git = "https://makenot.work/git/max/quasi.git", version = "0.47", optional = true }
59 + quasi-router = { git = "https://makenot.work/git/max/quasi.git", version = "0.48", optional = true }
60 + quasi-http = { git = "https://makenot.work/git/max/quasi.git", version = "0.48", optional = true }
61 + quasi-webview = { git = "https://makenot.work/git/max/quasi.git", version = "0.48", optional = true }
62 + quasi-tauri = { git = "https://makenot.work/git/max/quasi.git", version = "0.48", optional = true }
63 63
64 64 # The notification declaration, and it is NOT behind the `quasi` feature: the
65 65 # watcher is desktop app behaviour rather than a described screen, and the
@@ -76,7 +76,7 @@
76 76 # before it has ported its screens cannot take it. `notifications::Notifier` is
77 77 # the eight lines meanwhile, and it goes when the flip makes quasi-router
78 78 # unconditional here.
79 - quasi-notifs = { git = "https://makenot.work/git/max/quasi.git", version = "0.47", features = ["synckit"] }
79 + quasi-notifs = { git = "https://makenot.work/git/max/quasi.git", version = "0.48", features = ["synckit"] }
80 80
81 81 # Tauri
82 82 tauri = { workspace = true, features = ["image-png", "devtools"] }
@@ -141,8 +141,8 @@
141 141 # The forms emitter and the description it renders. Runtime deps, not build:
142 142 # form markup depends on the value, the error and the options at the moment a
143 143 # modal opens, so it cannot be materialised the way the stylesheet is.
144 - makeover-webview = "0.54.0"
145 - makeover-layout = "0.32.0"
144 + makeover-webview = "0.55.0"
145 + makeover-layout = "0.33.0"
146 146 # Browser opening
147 147 open = { workspace = true }
148 148
@@ -642,10 +642,20 @@
642 642 /// It tightens the day a described field here owns a list, which is what the
643 643 /// rule below asks for.
644 644 ///
645 + /// Raised 41 to 42 on the makeover-build 0.48 to 0.49 bump, which carries
646 + /// makeover-webview 0.55.0 and makeover-layout 0.33.0's `Field::unit`. The
647 + /// denominator went 72 to 73 and the one new class is `.form-unit`, drawn
648 + /// beside a described number. goingson's runtime form path builds its fields
649 + /// from the JS form spec, which has no field for what a number is measured in,
650 + /// so nothing here sets a unit yet and nothing writes the class.
651 + ///
652 + /// It tightens the day that spec grows one, which is the same shape as the
653 + /// suggestion note above.
654 + ///
645 655 /// The one direction this number should move is down, so if it ever needs
646 656 /// raising for a class goingson's own markup *should* be writing, that is the
647 657 /// defect this exists to catch and the answer is the markup, not the seal.
648 - const DEAD_VOCABULARY_HIGH_WATER: usize = 41;
658 + const DEAD_VOCABULARY_HIGH_WATER: usize = 42;
649 659
650 660 /// Every file that can carry a class name.
651 661 fn markup_files(frontend: &Path) -> Vec<PathBuf> {
@@ -209,6 +209,10 @@
209 209 // linear track with the host's own granularity is what the app
210 210 // actually says rather than a mapping invented here.
211 211 curve: Curve::default(),
212 + // makeover-layout 0.33.0's unit, on the same footing again: the JS
213 + // form spec has no field for what a number is measured in, so this
214 + // says nothing rather than parsing one out of the label.
215 + unit: None,
212 216 extended: spec.extended,
213 217 };
214 218