main
tag: launch-2026-06-01
tag: magicmirror-v0.1.1
tag: magicmirror-v0.3.0
tag: mnw-cli-v0.1.2
tag: mnw-cli-v0.1.3
tag: mnw-cli-v0.1.4
tag: pom-v0.4.1
tag: pom-v0.4.2
tag: pom-v0.4.3
tag: pom-v0.4.4
tag: pom-v0.4.5
tag: wam-v0.3.0
tag: wam-v0.3.1
Files
Commits
Tags
Notes
Issues
Return Row from every shape, now that the alias is gone
Wave 3's app half. `-> Cells` was the grammar's second spelling for one type
and `declare!` emitted it verbatim into the generated signature, so retiring
`pub type Cells = Row` moves these eight shapes with it. The bodies are
untouched: `cells { .. }` is still what a table row's shape says, and the
emitter reads that rather than the return type to pick the form.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session
https://claude.ai/code/session_01P8ostB2UmZJGj5WjSHRSot
7 files changed,
+10 insertions,
-12 deletions
396
396
/// checkable when both halves are in front of you, and here they never are.
397
397
/// The names must match [`table`]'s `column` strings exactly, since a name
398
398
/// no column carries is dropped rather than reported.
399
-
shape row(item: &DiscoverItem) -> Cells;
399
+
shape row(item: &DiscoverItem) -> Row;
400
400
401
401
cells {
402
402
cell at "Type" "" {
179
179
/// The short oid opens the commit; the link beside it opens the same commit
180
180
/// at its notes. Two addresses on one cell, which is what a cell holding a
181
181
/// run of leaves is for.
182
-
shape row(view: &View<'_>, base: &str, line: &BlameLine) -> Cells;
182
+
shape row(view: &View<'_>, base: &str, line: &BlameLine) -> Row;
183
183
184
184
let commit = "{base}/commit/{line.commit_oid}";
185
185
302
302
303
303
declare! {
304
304
/// One version.
305
-
shape row(item_id: &str, version: &Version) -> Cells;
305
+
shape row(item_id: &str, version: &Version) -> Row;
306
306
307
307
cells {
308
308
cell at COL_VERSION "" {
136
136
137
137
declare! {
138
138
/// One sale.
139
-
shape row(item: ItemId, sale: &SaleRow) -> Cells;
139
+
shape row(item: ItemId, sale: &SaleRow) -> Row;
140
140
141
141
cells {
142
142
cell at COL_DATE sale.date.clone();
855
855
/// The cells name their columns. [`table`] is a shape away and decides both
856
856
/// the order and how many there are, so anything counted to a position here
857
857
/// would be counted against a list this declaration cannot see.
858
-
shape item_row(slug: &str, view: &View, row: &Placed<'_>) -> Cells;
858
+
shape item_row(slug: &str, view: &View, row: &Placed<'_>) -> Row;
859
859
860
860
cells {
861
861
ticking row.item.id.clone() view.ticked;
919
919
/// has nothing to put in the position column, and an empty cell that has to
920
920
/// be counted past is exactly what naming removes. `#` is simply not
921
921
/// mentioned here.
922
-
shape child_row(view: &View, child: &ContentItem) -> Cells;
922
+
shape child_row(view: &View, child: &ContentItem) -> Row;
923
923
924
924
cells {
925
925
ticking child.id.clone() view.ticked;
255
255
/// Each cell names the column it belongs to. The headings live in
256
256
/// [`table`], so counting to a position here would be counting against a
257
257
/// list this function cannot see.
258
-
shape row(member: &ProjectMemberRow, project: &str) -> Cells;
258
+
shape row(member: &ProjectMemberRow, project: &str) -> Row;
259
259
260
260
cells {
261
261
// The template drew the display name and `@username` as two lines in
20
20
//! `/pricing` would give the site-wide shortcut a pricing-shaped address and
21
21
//! move it the first time a second screen converted.
22
22
23
-
use quasi_router::screen::{Cell, Cells, Column, Row, Table};
23
+
use quasi_router::screen::{Cell, Column, Row, Table};
24
24
use quasi_router::{
25
25
Action, Chrome, Node, Outcome, RegionKind, Request, Response, RouteError, Router, Screen, Slot,
26
26
};
65
65
/// `keyboard.js`, and this is the same thing said once.
66
66
pub fn screen(_state: &(), _request: Request) -> Result<Response, RouteError> {
67
67
// `Row::cells`, not `Row::new`: this row answers the two columns above
68
-
// positionally, and `new` names the primary column of the default set. The
69
-
// 2026-09-05 collapse made `Cells::new` resolve to `Row::new`, so the old
70
-
// spelling is now a different constructor rather than a renamed one.
71
-
let mut rows: Vec<Cells> = chrome()
68
+
// positionally, and `new` names the primary column of the default set.
69
+
let mut rows: Vec<Row> = chrome()
72
70
.bindings
73
71
.iter()
74
72
.map(|binding| Row::cells([Cell::new(&binding.key), Cell::new(&binding.label)]))