Skip to main content

max / goingson

Take quasi 0.14, and serve the selection script The renderers say the two things about a selection a description cannot: how many rows are ticked, and that a control over none of them should not fire. The terminal and egui read their own `View`; the webview reads the DOM through `SELECTION_JS`, which quasi-webview ships and a host serves. So build.rs writes it into `frontend/js/`, under the `quasi` feature only, and it is gitignored like every other generated file here. Written out rather than copied in because it reads two hooks quasi-webview emits, and a fossilised copy is a bulk bar that silently stops counting. Nothing serves the described screens yet -- the feature is off, and none of the three scripts is wired -- but the asset being in place is what makes turning it on a one-line change rather than a scavenger hunt.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-08-16 15:52 UTC
Signed with PGP, not checked
Commit: 696071e67e4350435e2e5031bb24e380011bd61b
Parent: 6c8dedb
4 files changed, +54 insertions, -29 deletions
M .gitignore +6
@@ -56,6 +56,12 @@
56 56 /src-tauri/frontend/tables.columns.json
57 57 /src-tauri/frontend/js/tables.generated.js
58 58
59 + # Written by src-tauri/build.rs out of quasi-webview, under the `quasi` feature
60 + # only. Not committed for the reason none of the above are: it is a copy of
61 + # somebody else's source, and a copy that can go stale against the markup it
62 + # reads is the one failure mode it has.
63 + /src-tauri/frontend/js/quasi-selection.js
64 +
59 65 # Secrets and credentials. The baseline every repo under ~/Code carries, kept
60 66 # identical so no repo is the one that forgot. Suffix-matched rather than
61 67 # `*.env`, which would also catch committed environment files that hold no
M Cargo.lock +25 -25
@@ -1367,7 +1367,7 @@
1367 1367 "libc",
1368 1368 "option-ext",
1369 1369 "redox_users",
1370 - "windows-sys 0.61.2",
1370 + "windows-sys 0.60.2",
1371 1371 ]
1372 1372
1373 1373 [[package]]
@@ -1608,7 +1608,7 @@
1608 1608 checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1609 1609 dependencies = [
1610 1610 "libc",
1611 - "windows-sys 0.61.2",
1611 + "windows-sys 0.60.2",
1612 1612 ]
1613 1613
1614 1614 [[package]]
@@ -3593,7 +3593,7 @@
3593 3593 "png 0.18.1",
3594 3594 "serde",
3595 3595 "thiserror 2.0.20",
3596 - "windows-sys 0.61.2",
3596 + "windows-sys 0.60.2",
3597 3597 ]
3598 3598
3599 3599 [[package]]
@@ -3726,7 +3726,7 @@
3726 3726 source = "registry+https://github.com/rust-lang/crates.io-index"
3727 3727 checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
3728 3728 dependencies = [
3729 - "windows-sys 0.61.2",
3729 + "windows-sys 0.60.2",
3730 3730 ]
3731 3731
3732 3732 [[package]]
@@ -4651,7 +4651,7 @@
4651 4651
4652 4652 [[package]]
4653 4653 name = "quasi-http"
4654 - version = "0.13.0"
4654 + version = "0.14.0"
4655 4655 dependencies = [
4656 4656 "form_urlencoded",
4657 4657 "http",
@@ -4660,14 +4660,14 @@
4660 4660
4661 4661 [[package]]
4662 4662 name = "quasi-router"
4663 - version = "0.13.0"
4663 + version = "0.14.0"
4664 4664 dependencies = [
4665 4665 "makeover-layout",
4666 4666 ]
4667 4667
4668 4668 [[package]]
4669 4669 name = "quasi-tauri"
4670 - version = "0.13.0"
4670 + version = "0.14.0"
4671 4671 dependencies = [
4672 4672 "http",
4673 4673 "quasi-http",
@@ -4677,7 +4677,7 @@
4677 4677
4678 4678 [[package]]
4679 4679 name = "quasi-webview"
4680 - version = "0.13.0"
4680 + version = "0.14.0"
4681 4681 dependencies = [
4682 4682 "docengine",
4683 4683 "makeover-layout",
@@ -4999,7 +4999,7 @@
4999 4999 "pin-project-lite",
5000 5000 "rustls",
5001 5001 "rustls-pki-types",
5002 - "rustls-platform-verifier 0.7.0",
5002 + "rustls-platform-verifier 0.6.2",
5003 5003 "serde",
5004 5004 "serde_json",
5005 5005 "serde_urlencoded",
@@ -5105,7 +5105,7 @@
5105 5105 "errno",
5106 5106 "libc",
5107 5107 "linux-raw-sys",
5108 - "windows-sys 0.61.2",
5108 + "windows-sys 0.60.2",
5109 5109 ]
5110 5110
5111 5111 [[package]]
@@ -5162,7 +5162,7 @@
5162 5162 "security-framework",
5163 5163 "security-framework-sys",
5164 5164 "webpki-root-certs",
5165 - "windows-sys 0.61.2",
5165 + "windows-sys 0.60.2",
5166 5166 ]
5167 5167
5168 5168 [[package]]
@@ -5183,7 +5183,7 @@
5183 5183 "security-framework",
5184 5184 "security-framework-sys",
5185 5185 "webpki-root-certs",
5186 - "windows-sys 0.61.2",
5186 + "windows-sys 0.60.2",
5187 5187 ]
5188 5188
5189 5189 [[package]]
@@ -5713,7 +5713,7 @@
5713 5713 checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4"
5714 5714 dependencies = [
5715 5715 "libc",
5716 - "windows-sys 0.61.2",
5716 + "windows-sys 0.60.2",
5717 5717 ]
5718 5718
5719 5719 [[package]]
@@ -6488,7 +6488,7 @@
6488 6488 "getrandom 0.4.3",
6489 6489 "once_cell",
6490 6490 "rustix",
6491 - "windows-sys 0.61.2",
6491 + "windows-sys 0.60.2",
6492 6492 ]
6493 6493
6494 6494 [[package]]
@@ -6510,7 +6510,7 @@
6510 6510 "parking_lot",
6511 6511 "rustix",
6512 6512 "signal-hook",
6513 - "windows-sys 0.61.2",
6513 + "windows-sys 0.60.2",
6514 6514 ]
6515 6515
6516 6516 [[package]]
@@ -6992,7 +6992,7 @@
6992 6992 "png 0.18.1",
6993 6993 "serde",
6994 6994 "thiserror 2.0.20",
6995 - "windows-sys 0.61.2",
6995 + "windows-sys 0.60.2",
6996 6996 ]
6997 6997
6998 6998 [[package]]
@@ -7027,7 +7027,7 @@
7027 7027 dependencies = [
7028 7028 "memoffset",
7029 7029 "tempfile",
7030 - "windows-sys 0.61.2",
7030 + "windows-sys 0.60.2",
7031 7031 ]
7032 7032
7033 7033 [[package]]
@@ -7548,7 +7548,7 @@
7548 7548 source = "registry+https://github.com/rust-lang/crates.io-index"
7549 7549 checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
7550 7550 dependencies = [
7551 - "windows-sys 0.61.2",
7551 + "windows-sys 0.60.2",
7552 7552 ]
7553 7553
7554 7554 [[package]]
@@ -8373,22 +8373,22 @@
8373 8373 "winnow 1.0.4",
8374 8374 ]
8375 8375
8376 - [[patch.unused]]
8377 - name = "ops-status"
8378 - version = "0.1.0"
8379 -
8380 8376 [[patch.unused]]
8381 8377 name = "quasi-axum"
8382 - version = "0.13.0"
8378 + version = "0.14.0"
8383 8379
8384 8380 [[patch.unused]]
8385 8381 name = "quasi-basics"
8386 - version = "0.13.0"
8382 + version = "0.14.0"
8387 8383
8388 8384 [[patch.unused]]
8389 8385 name = "quasi-immediate"
8390 - version = "0.13.0"
8386 + version = "0.14.0"
8391 8387
8392 8388 [[patch.unused]]
8393 8389 name = "quasi-store"
8394 8390 version = "0.1.0"
8391 +
8392 + [[patch.unused]]
8393 + name = "ops-status"
8394 + version = "0.1.0"
@@ -28,6 +28,11 @@
28 28 # pass keys off SizeClass::Compact and a boundary reached transitively is a
29 29 # boundary nobody pinned.
30 30 makeover-geometry = "0.7"
31 + # Only to write its selection script into the frontend, and only under the
32 + # `quasi` feature. Optional here as well as below so a default build compiles
33 + # neither: one `dep:` name covers both tables, which is what lets the feature
34 + # gate the build script and the crate together.
35 + quasi-webview = { git = "https://makenot.work/git/max/quasi.git", version = "0.14", optional = true }
31 36
32 37 [dependencies]
33 38 goingson-core = { workspace = true }
@@ -45,10 +50,10 @@
45 50 # dependency's source even with the feature off -- so a public clone could not
46 51 # build at all against a URL it could not reach. quasi went public that day and
47 52 # the URL moved here with it.
48 - quasi-router = { git = "https://makenot.work/git/max/quasi.git", version = "0.13", optional = true }
49 - quasi-http = { git = "https://makenot.work/git/max/quasi.git", version = "0.13", optional = true }
50 - quasi-webview = { git = "https://makenot.work/git/max/quasi.git", version = "0.13", optional = true }
51 - quasi-tauri = { git = "https://makenot.work/git/max/quasi.git", version = "0.13", optional = true }
53 + quasi-router = { git = "https://makenot.work/git/max/quasi.git", version = "0.14", optional = true }
54 + quasi-http = { git = "https://makenot.work/git/max/quasi.git", version = "0.14", optional = true }
55 + quasi-webview = { git = "https://makenot.work/git/max/quasi.git", version = "0.14", optional = true }
56 + quasi-tauri = { git = "https://makenot.work/git/max/quasi.git", version = "0.14", optional = true }
52 57
53 58 # Tauri
54 59 tauri = { workspace = true, features = ["image-png", "devtools"] }
@@ -609,6 +609,20 @@
609 609 fs::write(frontend.join("js/tables.generated.js"), table_columns_js())
610 610 .expect("write js/tables.generated.js");
611 611
612 + // quasi-webview's selection script, written out rather than copied in, so
613 + // it cannot go stale against the markup that feeds it: it reads two hooks
614 + // that crate emits, and a fossilised copy here is a bulk bar that silently
615 + // stops counting. Written unconditionally, though nothing serves the
616 + // described screens yet — the `quasi` feature is off — because the asset
617 + // being in place is what makes turning the feature on a one-line change
618 + // rather than a scavenger hunt for three scripts.
619 + #[cfg(feature = "quasi")]
620 + fs::write(
621 + frontend.join("js/quasi-selection.js"),
622 + quasi_webview::SELECTION_JS,
623 + )
624 + .expect("write js/quasi-selection.js");
625 +
612 626 // The generated files above cannot drift from SizeClass. The hand-written
613 627 // ones can, so they are checked rather than trusted.
614 628 //