Skip to main content

max / quasi

A row can say it is addressable, 0.101.0 `Row::addressed` and `Cells::addressed` set a new `address` field, and quasi-webview emits it as an `id`. The vocabulary had one word for two facts. `value` is what the app reads back to know which row a press was about: unique within its table, and two tables of the same things on one screen carry the same values twice without anything being wrong. An address is unique in the whole document, because it is what a reader copies and sends on. MNW's git file view needed the second and could only say the first, so it wrote `identified` and the renderer emitted `data-value` -- every line number on every file view linking to an `id` no document carried. Breaking, because both structs have public fields: 0.100.0 to 0.101.0, with the 13 consumer requirements moved in the same pass. Closes the second of the two blockers on phase 1 of the declaration transition (GoingsOn 65d99281), and GoingsOn problem a9259e9f.
Author: Max Johnson <me@maxj.phd> · 2026-09-03 12:32 UTC
Signed with PGP, not checked
Commit: 19c825fd2a492a06101b0c4a47ce59158fc5adba
Parent: c7f3895
15 files changed, +164 insertions, -45 deletions
M Cargo.lock +15 -15
@@ -3476,11 +3476,11 @@
3476 3476
3477 3477 [[package]]
3478 3478 name = "quasi"
3479 - version = "0.100.0"
3479 + version = "0.101.0"
3480 3480
3481 3481 [[package]]
3482 3482 name = "quasi-axum"
3483 - version = "0.100.0"
3483 + version = "0.101.0"
3484 3484 dependencies = [
3485 3485 "axum",
3486 3486 "http",
@@ -3494,7 +3494,7 @@
3494 3494
3495 3495 [[package]]
3496 3496 name = "quasi-basics"
3497 - version = "0.100.0"
3497 + version = "0.101.0"
3498 3498 dependencies = [
3499 3499 "makeover-layout",
3500 3500 "quasi-http",
@@ -3504,7 +3504,7 @@
3504 3504
3505 3505 [[package]]
3506 3506 name = "quasi-bench"
3507 - version = "0.100.0"
3507 + version = "0.101.0"
3508 3508 dependencies = [
3509 3509 "askama",
3510 3510 "dhat",
@@ -3521,7 +3521,7 @@
3521 3521
3522 3522 [[package]]
3523 3523 name = "quasi-http"
3524 - version = "0.100.0"
3524 + version = "0.101.0"
3525 3525 dependencies = [
3526 3526 "form_urlencoded",
3527 3527 "http",
@@ -3530,7 +3530,7 @@
3530 3530
3531 3531 [[package]]
3532 3532 name = "quasi-immediate"
3533 - version = "0.100.0"
3533 + version = "0.101.0"
3534 3534 dependencies = [
3535 3535 "docengine",
3536 3536 "egui",
@@ -3541,7 +3541,7 @@
3541 3541
3542 3542 [[package]]
3543 3543 name = "quasi-notifs"
3544 - version = "0.100.0"
3544 + version = "0.101.0"
3545 3545 dependencies = [
3546 3546 "quasi-router",
3547 3547 "synckit-config",
@@ -3551,7 +3551,7 @@
3551 3551
3552 3552 [[package]]
3553 3553 name = "quasi-router"
3554 - version = "0.100.0"
3554 + version = "0.101.0"
3555 3555 dependencies = [
3556 3556 "makeover-layout",
3557 3557 ]
@@ -3568,7 +3568,7 @@
3568 3568
3569 3569 [[package]]
3570 3570 name = "quasi-tauri"
3571 - version = "0.100.0"
3571 + version = "0.101.0"
3572 3572 dependencies = [
3573 3573 "http",
3574 3574 "quasi-http",
@@ -3579,7 +3579,7 @@
3579 3579
3580 3580 [[package]]
3581 3581 name = "quasi-tui"
3582 - version = "0.100.0"
3582 + version = "0.101.0"
3583 3583 dependencies = [
3584 3584 "docengine",
3585 3585 "makeover",
@@ -3592,7 +3592,7 @@
3592 3592
3593 3593 [[package]]
3594 3594 name = "quasi-webview"
3595 - version = "0.100.0"
3595 + version = "0.101.0"
3596 3596 dependencies = [
3597 3597 "docengine",
3598 3598 "makeover-layout",
@@ -6283,10 +6283,10 @@
6283 6283 name = "tagtree"
6284 6284 version = "0.4.1"
6285 6285
6286 - [[patch.unused]]
6287 - name = "quasi-type"
6288 - version = "0.1.3"
6289 -
6290 6286 [[patch.unused]]
6291 6287 name = "synckit-client"
6292 6288 version = "0.10.0"
6289 +
6290 + [[patch.unused]]
6291 + name = "quasi-type"
6292 + version = "0.1.3"
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-axum"
3 - version = "0.100.0"
3 + version = "0.101.0"
4 4 description = "The axum host adapter for quasi-router: an HTTP request in, a rendered description out"
5 5 edition.workspace = true
6 6 rust-version.workspace = true
@@ -13,14 +13,14 @@
13 13 workspace = true
14 14
15 15 [dependencies]
16 - quasi-router = { path = "../quasi-router", version = "0.100.0" }
17 - quasi-http = { path = "../quasi-http", version = "0.100.0" }
16 + quasi-router = { path = "../quasi-router", version = "0.101.0" }
17 + quasi-http = { path = "../quasi-http", version = "0.101.0" }
18 18 axum = "0.8.8"
19 19 http = "1.3.1"
20 20 tokio = { version = "1.50.0", features = ["rt"] }
21 21
22 22 [dev-dependencies]
23 - quasi-webview = { path = "../quasi-webview", version = "0.100.0" }
23 + quasi-webview = { path = "../quasi-webview", version = "0.101.0" }
24 24 tokio = { version = "1.50.0", features = ["macros", "rt-multi-thread"] }
25 25 tower = { version = "0.5.3", features = ["util"] }
26 26 http-body-util = "0.1.3"
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-basics"
3 - version = "0.100.0"
3 + version = "0.101.0"
4 4 description = "The first-party widget set: named assemblies of primitives, shared across our apps"
5 5 edition.workspace = true
6 6 rust-version.workspace = true
@@ -13,12 +13,12 @@
13 13 workspace = true
14 14
15 15 [dependencies]
16 - quasi-router = { path = "../quasi-router", version = "0.100.0" }
16 + quasi-router = { path = "../quasi-router", version = "0.101.0" }
17 17 makeover-layout = "0.44"
18 18
19 19 [dev-dependencies]
20 20 # A widget's guarantees are claims about what a renderer draws, so they are
21 21 # tested against a real one rather than by walking the tree the assembly just
22 22 # built. The webview is the renderer that recognises names today.
23 - quasi-webview = { path = "../quasi-webview", version = "0.100.0" }
24 - quasi-http = { path = "../quasi-http", version = "0.100.0" }
23 + quasi-webview = { path = "../quasi-webview", version = "0.101.0" }
24 + quasi-http = { path = "../quasi-http", version = "0.101.0" }
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-bench"
3 - version = "0.100.0"
3 + version = "0.101.0"
4 4 description = "What a described screen costs to render, in time and in allocations"
5 5 edition.workspace = true
6 6 rust-version.workspace = true
@@ -26,13 +26,13 @@
26 26 askama = ["dep:askama"]
27 27
28 28 [dependencies]
29 - quasi-router = { path = "../quasi-router", version = "0.100.0" }
30 - quasi-webview = { path = "../quasi-webview", version = "0.100.0" }
31 - quasi-tui = { path = "../quasi-tui", version = "0.100.0" }
29 + quasi-router = { path = "../quasi-router", version = "0.101.0" }
30 + quasi-webview = { path = "../quasi-webview", version = "0.101.0" }
31 + quasi-tui = { path = "../quasi-tui", version = "0.101.0" }
32 32 # `Serves` is the trait carrying `screen` and `fragment`, which is what the
33 33 # webview is measured through. Taken directly rather than through quasi-webview
34 34 # because a bench calling a trait method should name the trait it calls.
35 - quasi-http = { path = "../quasi-http", version = "0.100.0" }
35 + quasi-http = { path = "../quasi-http", version = "0.101.0" }
36 36 makeover-layout = "0.44"
37 37 # The renderer's own escaper, so the staged path fills a hole exactly the way
38 38 # `Node::Text` does and the guarantee is not quietly reimplemented.
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-http"
3 - version = "0.100.0"
3 + version = "0.101.0"
4 4 description = "The http-shaped seam quasi's webview host adapters share: decoding in, a rendered description out"
5 5 edition.workspace = true
6 6 rust-version.workspace = true
@@ -13,6 +13,6 @@
13 13 workspace = true
14 14
15 15 [dependencies]
16 - quasi-router = { path = "../quasi-router", version = "0.100.0" }
16 + quasi-router = { path = "../quasi-router", version = "0.101.0" }
17 17 http = "1.3.1"
18 18 form_urlencoded = "1.2.2"
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-immediate"
3 - version = "0.100.0"
3 + version = "0.101.0"
4 4 edition = "2024"
5 5 description = "The immediate-mode renderer for quasi-router: a described screen in, an egui frame out. Immediate mode is the constraint that matters, not the library."
6 6 license = "MIT"
@@ -12,7 +12,7 @@
12 12 categories = ["gui"]
13 13
14 14 [dependencies]
15 - quasi-router = { path = "../quasi-router", version = "0.100.0" }
15 + quasi-router = { path = "../quasi-router", version = "0.101.0" }
16 16 # The node drawing, which is the makeover layer's and not this crate's. Every
17 17 # widget here that is not a container comes from it: a screen walk that painted
18 18 # its own meter would be the divergence the suite exists to end, one copy per
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-notifs"
3 - version = "0.100.0"
3 + version = "0.101.0"
4 4 description = "Declared notification kinds and the registry that holds them: what a notification says and what it is for, apart from how it reaches a person"
5 5 edition.workspace = true
6 6 rust-version.workspace = true
@@ -28,7 +28,7 @@
28 28 tauri = ["dep:tauri", "dep:tauri-plugin-notification"]
29 29
30 30 [dependencies]
31 - quasi-router = { path = "../quasi-router", version = "0.100.0", optional = true }
31 + quasi-router = { path = "../quasi-router", version = "0.101.0", optional = true }
32 32 synckit-config = { git = "https://makenot.work/git/max/synckit.git", version = "0.2", optional = true }
33 33 tauri-plugin-notification = { version = "2.3.3", optional = true }
34 34 # Default features off, for `quasi-tauri`'s reason: this takes an `AppHandle`
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "quasi-router"
3 - version = "0.100.0"
3 + version = "0.101.0"
4 4 description = "Host-agnostic router: a request in, a renderer-agnostic description out"
5 5 edition.workspace = true
6 6 rust-version.workspace = true