Skip to main content

Follow quasi's marks onto the nodes audiofiles builds and reads quasi-router grew `marks` on the container nodes, so a staged twin can say which run it built. audiofiles was never carried across and had not compiled against the working copy since: the Form it builds was missing the field, and four matches over Form and Stats spelled every member. The form is not staged, so it carries Marks::none(); the matches take `..`, which is what the other arms in the same walk already do for Table.

  • Co-Authored-ByClaude Opus 5 (1M context) <noreply@anthropic.com>
  • Claude-Sessionhttps://claude.ai/code/session_01WFBzMprSmNCfvdj2cGZyka

Author: Max Johnson <me@maxj.phd> - 2026-09-08 21:30 UTC

Signed with PGP, not checked

Commit:

e8a1968fb3a39f245c097a9177fc3a407b6f8fad

Parent:

79f3886

3 files changed,

+7 insertions,

-2 deletions

OldNewLine
@@ -287,6 +287,7 @@
287
287
submit,
288
288
action,
289
289
fields,
290
..
290
291
} => {
291
292
out.push(Role::Button, submit.clone(), false);
292
293
out.addresses.push(action.destination.as_str().to_owned());
@@ -312,7 +313,7 @@
312
313
walk(&placed.node, out);
313
314
}
314
315
}
315
Node::Stats { figures } => {
316
Node::Stats { figures, .. } => {
316
317
for (figure, action) in figures {
317
318
if let Some(action) = action {
318
319
out.push(Role::Button, figure.caption.clone(), false);
OldNewLine
@@ -1555,6 +1555,7 @@
1555
1555
submit,
1556
1556
action,
1557
1557
fields,
1558
..
1558
1559
} => Some((
1559
1560
submit,
1560
1561
action.destination.as_str().to_owned(),
@@ -8475,7 +8476,7 @@
8475
8476
let figures: Vec<(String, String)> = deep_nodes(&imported(&import))
8476
8477
.into_iter()
8477
8478
.flat_map(|node| match node {
8478
Node::Stats { figures } => figures,
8479
Node::Stats { figures, .. } => figures,
8479
8480
_ => Vec::new(),
8480
8481
})
8481
8482
.map(|(figure, _)| (figure.value, figure.caption))
OldNewLine
@@ -87,6 +87,7 @@
87
87
88
88
use quasi_declare::declare;
89
89
use quasi_router::layout::{FieldKind, Priority, Tone};
90
use quasi_router::stage::Marks;
90
91
use quasi_router::{
91
92
Action, Choice, Consult, Field, Node, RegionKind, Request, Response, RouteError, Router,
92
93
Screen, Slot,
@@ -166,6 +167,8 @@
166
167
"A dynamic collection re-applies these filters, so it updates itself as samples match.",
167
168
))
168
169
.with(Node::Form {
170
// Nothing here is staged, so the run carries no marks.
171
marks: Marks::none(),
169
172
fields: vec![
170
173
Field::new(FieldKind::Text, NAME, "Name")
171
174
.required()