Skip to main content

max / goingson

Take quasi 0.53, and name the timer band an Activity panel Chrome grew `nav` and roled panels (quasi c3c2130, ruling `71aa29b4`). The band is `Role::Activity`: it is about a thing in progress, present while a timer runs, rather than about the app's condition. The sync indicator is the `Status` one this app will declare and does not yet. `Chrome::panel` is a lookup by id now that there can be several, so the two tests that read the field ask for it by name.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-08-22 15:45 UTC
Signed with PGP, not checked
Commit: c183ef28810e51deebc6c10489633af6394c8eab
Parent: fb0ad8d
4 files changed, +47 insertions, -41 deletions
M Cargo.lock +31 -31
@@ -1387,7 +1387,7 @@
1387 1387 "libc",
1388 1388 "option-ext",
1389 1389 "redox_users",
1390 - "windows-sys 0.61.2",
1390 + "windows-sys 0.60.2",
1391 1391 ]
1392 1392
1393 1393 [[package]]
@@ -1628,7 +1628,7 @@
1628 1628 checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1629 1629 dependencies = [
1630 1630 "libc",
1631 - "windows-sys 0.61.2",
1631 + "windows-sys 0.60.2",
1632 1632 ]
1633 1633
1634 1634 [[package]]
@@ -3639,7 +3639,7 @@
3639 3639 "png 0.18.1",
3640 3640 "serde",
3641 3641 "thiserror 2.0.20",
3642 - "windows-sys 0.61.2",
3642 + "windows-sys 0.60.2",
3643 3643 ]
3644 3644
3645 3645 [[package]]
@@ -3772,7 +3772,7 @@
3772 3772 source = "registry+https://github.com/rust-lang/crates.io-index"
3773 3773 checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
3774 3774 dependencies = [
3775 - "windows-sys 0.61.2",
3775 + "windows-sys 0.60.2",
3776 3776 ]
3777 3777
3778 3778 [[package]]
@@ -4706,7 +4706,7 @@
4706 4706
4707 4707 [[package]]
4708 4708 name = "quasi-http"
4709 - version = "0.52.0"
4709 + version = "0.53.0"
4710 4710 dependencies = [
4711 4711 "form_urlencoded",
4712 4712 "http",
@@ -4715,7 +4715,7 @@
4715 4715
4716 4716 [[package]]
4717 4717 name = "quasi-notifs"
4718 - version = "0.52.0"
4718 + version = "0.53.0"
4719 4719 dependencies = [
4720 4720 "quasi-router",
4721 4721 "synckit-config",
@@ -4723,14 +4723,14 @@
4723 4723
4724 4724 [[package]]
4725 4725 name = "quasi-router"
4726 - version = "0.52.0"
4726 + version = "0.53.0"
4727 4727 dependencies = [
4728 4728 "makeover-layout",
4729 4729 ]
4730 4730
4731 4731 [[package]]
4732 4732 name = "quasi-tauri"
4733 - version = "0.52.0"
4733 + version = "0.53.0"
4734 4734 dependencies = [
4735 4735 "http",
4736 4736 "quasi-http",
@@ -4756,7 +4756,7 @@
4756 4756
4757 4757 [[package]]
4758 4758 name = "quasi-webview"
4759 - version = "0.52.0"
4759 + version = "0.53.0"
4760 4760 dependencies = [
4761 4761 "docengine",
4762 4762 "makeover-layout",
@@ -5195,7 +5195,7 @@
5195 5195 "errno",
5196 5196 "libc",
5197 5197 "linux-raw-sys",
5198 - "windows-sys 0.61.2",
5198 + "windows-sys 0.60.2",
5199 5199 ]
5200 5200
5201 5201 [[package]]
@@ -5252,7 +5252,7 @@
5252 5252 "security-framework",
5253 5253 "security-framework-sys",
5254 5254 "webpki-root-certs",
5255 - "windows-sys 0.61.2",
5255 + "windows-sys 0.60.2",
5256 5256 ]
5257 5257
5258 5258 [[package]]
@@ -5792,7 +5792,7 @@
5792 5792 checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4"
5793 5793 dependencies = [
5794 5794 "libc",
5795 - "windows-sys 0.61.2",
5795 + "windows-sys 0.60.2",
5796 5796 ]
5797 5797
5798 5798 [[package]]
@@ -6567,7 +6567,7 @@
6567 6567 "getrandom 0.4.3",
6568 6568 "once_cell",
6569 6569 "rustix",
6570 - "windows-sys 0.61.2",
6570 + "windows-sys 0.60.2",
6571 6571 ]
6572 6572
6573 6573 [[package]]
@@ -6589,7 +6589,7 @@
6589 6589 "parking_lot",
6590 6590 "rustix",
6591 6591 "signal-hook",
6592 - "windows-sys 0.61.2",
6592 + "windows-sys 0.60.2",
6593 6593 ]
6594 6594
6595 6595 [[package]]
@@ -7071,7 +7071,7 @@
7071 7071 "png 0.18.1",
7072 7072 "serde",
7073 7073 "thiserror 2.0.20",
7074 - "windows-sys 0.61.2",
7074 + "windows-sys 0.60.2",
7075 7075 ]
7076 7076
7077 7077 [[package]]
@@ -7106,7 +7106,7 @@
7106 7106 dependencies = [
7107 7107 "memoffset",
7108 7108 "tempfile",
7109 - "windows-sys 0.61.2",
7109 + "windows-sys 0.60.2",
7110 7110 ]
7111 7111
7112 7112 [[package]]
@@ -7636,7 +7636,7 @@
7636 7636 source = "registry+https://github.com/rust-lang/crates.io-index"
7637 7637 checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
7638 7638 dependencies = [
7639 - "windows-sys 0.61.2",
7639 + "windows-sys 0.60.2",
7640 7640 ]
7641 7641
7642 7642 [[package]]
@@ -8494,21 +8494,21 @@
8494 8494 ]
8495 8495
8496 8496 [[patch.unused]]
8497 - name = "quasi-axum"
8498 - version = "0.52.0"
8499 -
8500 - [[patch.unused]]
8501 - name = "quasi-basics"
8502 - version = "0.52.0"
8503 -
8504 - [[patch.unused]]
8505 - name = "quasi-immediate"
8506 - version = "0.52.0"
8507 -
8508 - [[patch.unused]]
8509 - name = "quasi-store"
8497 + name = "ops-status"
8510 8498 version = "0.1.0"
8511 8499
8512 8500 [[patch.unused]]
8513 - name = "ops-status"
8501 + name = "quasi-axum"
8502 + version = "0.53.0"
8503 +
8504 + [[patch.unused]]
8505 + name = "quasi-basics"
8506 + version = "0.53.0"
8507 +
8508 + [[patch.unused]]
8509 + name = "quasi-immediate"
8510 + version = "0.53.0"
8511 +
8512 + [[patch.unused]]
8513 + name = "quasi-store"
8514 8514 version = "0.1.0"
@@ -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.52", optional = true }
41 + quasi-webview = { git = "https://makenot.work/git/max/quasi.git", version = "0.53", 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.52", optional = true }
60 - quasi-http = { git = "https://makenot.work/git/max/quasi.git", version = "0.52", optional = true }
61 - quasi-webview = { git = "https://makenot.work/git/max/quasi.git", version = "0.52", optional = true }
62 - quasi-tauri = { git = "https://makenot.work/git/max/quasi.git", version = "0.52", optional = true }
59 + quasi-router = { git = "https://makenot.work/git/max/quasi.git", version = "0.53", optional = true }
60 + quasi-http = { git = "https://makenot.work/git/max/quasi.git", version = "0.53", optional = true }
61 + quasi-webview = { git = "https://makenot.work/git/max/quasi.git", version = "0.53", optional = true }
62 + quasi-tauri = { git = "https://makenot.work/git/max/quasi.git", version = "0.53", 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.52", features = ["synckit"] }
79 + quasi-notifs = { git = "https://makenot.work/git/max/quasi.git", version = "0.53", features = ["synckit"] }
80 80
81 81 # Tauri
82 82 tauri = { workspace = true, features = ["image-png", "devtools"] }
@@ -178,7 +178,9 @@
178 178 use goingson_core::{Task, TaskFilterQuery, TaskId, TaskStatus, TimeSession, TimeSessionMode};
179 179 use makeover_layout::Tone;
180 180 use quasi_router::screen::{Act, Field, Figure, Meter, Row, Tag};
181 - use quasi_router::{Action, Chrome, Node, RegionKind, Response, RouteError, Router, Screen, Slot};
181 + use quasi_router::{
182 + Action, Chrome, Node, RegionKind, Response, Role, RouteError, Router, Screen, Slot,
183 + };
182 184
183 185 use crate::state::{AppState, DESKTOP_USER_ID};
184 186
@@ -206,7 +208,11 @@
206 208 /// round trip.
207 209 #[must_use]
208 210 pub fn chrome() -> Chrome {
209 - Chrome::new().presenting(PANEL, Node::Region(band()))
211 + // `Role::Activity`: the band is about a thing in progress, present while a
212 + // timer runs, rather than about the app's condition. The sync indicator is
213 + // the `Status` one and is not described yet; see `super::mod`'s shell
214 + // section.
215 + Chrome::new().presenting(PANEL, Role::Activity, Node::Region(band()))
210 216 }
211 217
212 218 /// The empty band, carrying the address and the call every answer repeats.
@@ -93,7 +93,7 @@
93 93 // Max, 2026-08-20. The point of the ruling: no screen mentions the timer,
94 94 // and every screen shows it.
95 95 let chrome = super::chrome();
96 - let declared = chrome.panel.as_ref().expect("a panel is declared");
96 + let declared = chrome.panel(PANEL).expect("a panel is declared");
97 97 assert_eq!(declared.id, PANEL);
98 98
99 99 let state = state().await;
@@ -201,7 +201,7 @@
201 201 // a panel that updated once. Both the declaration and the answer carry it.
202 202 let state = state().await;
203 203 let declared = super::chrome();
204 - let quasi_router::Node::Region(slot) = &declared.panel.expect("declared").content else {
204 + let quasi_router::Node::Region(slot) = &declared.panel(PANEL).expect("declared").content else {
205 205 panic!("the panel holds a region");
206 206 };
207 207 assert_eq!(slot.id, BODY);