Say what each comment means instead of citing a plan or review id
Fiesta is public, and its comments, test messages and docs named things only rastrillo's own records explain: the review and spec ids (A7, C9, Astra A2 and the like), the porting plan's task numbers, and SEED as the name for the commit the tree was seeded from. Each is reworded to say what the code does or why, keeping the rastrillo history a reader can use: 'at the seed commit' for the commit, which hack/seed/README.md names, and 'rastrillo's drive' for the drive whose page a fixture holds. Ported test bodies are untouched apart from the comment and message prose that named an id; no assertion, threshold or selector moved. The two fixture-index notes that named the plan are changed in index.json and in the seed exporter that writes them, so a reseed reproduces the same file. css/ and its baseline twin under check/testdata/seed/ are frozen and keep their comments; js/light.js is byte-pinned to its seed hash and keeps its three, for the same reason. Those are noted for the release task.
Human
Prompt
Pre-release cleanup, part A: sweep plan and spec ids out of public comments and docs, rewording each to say what the code does or why, with ported test bodies byte-identical apart from comment and message prose.
From this commit's own message. The prompt ledger has no entries for it — which is what a squashed, rebased or amended commit looks like, and what every commit looks like in a repo without a ledger.
Summary
Comments, test messages, the seed README and two fixture-index notes no longer cite review, spec or plan ids; 52 files, prose only. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
52 files changed,
+285
−273
check/accent_browser_test.go+4 −4check/apitokens_browser_test.go+4 −3check/blocks_browser_test.go+2 −1check/bulkbar_browser_test.go+2 −1check/card_browser_test.go+2 −2check/console_shell_browser_test.go+2 −2check/contrast_face_test.go+5 −4check/contrast_test.go+2 −2check/css_test.go+20 −20check/datetime_test.go+6 −5check/depth_browser_test.go+11 −11check/depth_media_browser_test.go+3 −3check/depth_media_test.go+1 −1check/depth_rows_browser_test.go+13 −13check/dropdown_browser_test.go+3 −2check/fields_browser_test.go+2 −2check/fixture_test.go+7 −6check/flat_override_browser_test.go+3 −3check/header_rule_browser_test.go+5 −5check/index_browser_test.go+1 −1check/light_browser_test.go+34 −34check/light_test.go+2 −2check/markup_v3_browser_test.go+3 −3check/matrix_browser_test.go+5 −6check/mediagrid_browser_test.go+3 −3check/menus_browser_test.go+10 −9check/pagination_browser_test.go+3 −2check/prerender_browser_test.go+2 −2check/profile_browser_test.go+2 −2check/rig_browser_test.go+2 −2check/rowmenu_browser_test.go+3 −2check/rows_browser_test.go+4 −3check/scheme_browser_test.go+23 −23check/scripts_test.go+5 −5check/shell_browser_test.go+11 −11check/shells_browser_test.go+8 −8check/signin_browser_test.go+7 −7check/sizing_browser_test.go+8 −8check/sizing_test.go+1 −1check/spelling_fixture_test.go+2 −2check/strings_test.go+1 −1check/switch_browser_test.go+1 −1check/switch_day_browser_test.go+3 −3check/testdata/fixtures/index.json+2 −2check/vendored_legacy_browser_test.go+5 −5hack/seed/README.md+3 −3hack/seed/_rastrillo/designsystem_fiestaseed_test.go+11 −10hack/seed/_rastrillo/ui_fiestaseed_test.go+11 −11hack/seed/run.sh+3 −3internal/build/build_test.go+4 −4internal/build/strip_test.go+4 −3internal/gallery/keyboard_browser_test.go+1 −1
diff --git a/check/accent_browser_test.go b/check/accent_browser_test.go| index b762f73..f25b38b 100644 |
| --- a/check/accent_browser_test.go |
| +++ b/check/accent_browser_test.go |
| @@ -213,7 +213,7 @@ func paintCSS(t *testing.T, ctx context.Context, css string) string { |
| // walks: twelve hues at 30 degree steps, at a chroma a brand would use |
| // (oklch 0.6 0.15), three achromatic accents, and the three sRGB |
| // primaries' edges (cyan, green, yellow), the accents whose fills clip |
| -// hardest and gain the most luminance (Astra A1 computed cyan's dark |
| +// hardest and gain the most luminance (rastrillo's review computed cyan's dark |
| // hover at 4.43:1 under the sheen). A single colour, not a light-dark() |
| // pair, so the same accent serves both schemes, which is what an app |
| // that writes one hex gets. |
| @@ -255,8 +255,8 @@ func brightestInside(t *testing.T, ctx context.Context, selector string, states |
| return best |
| } |
| -// TestAnyAccentKeepsTheFillLabelReadable is review I2 and I3, and |
| -// Astra A1: a green-to-cyan accent at day's fill lightness clips to |
| +// TestAnyAccentKeepsTheFillLabelReadable holds three findings of |
| +// rastrillo's reviews: a green-to-cyan accent at day's fill lightness clips to |
| // sRGB and gains luminance, and a grey accent used to take a fixed |
| // chroma at a powerless hue and come out crimson. For every accent in |
| // the sweep, in both schemes, the primary button's label clears 4.5:1 |
| @@ -266,7 +266,7 @@ func brightestInside(t *testing.T, ctx context.Context, selector string, states |
| // under the face shade's white at rest, and under the shade and the |
| // full sheen hovered. The bare fill cleared for every hue while the |
| // composed face did not (cyan in dark: 4.74:1 bare, 4.15:1 composed), |
| -// which is what A1 found. An achromatic accent gives an achromatic |
| +// which is what the review found. An achromatic accent gives an achromatic |
| // fill. |
| func TestAnyAccentKeepsTheFillLabelReadable(t *testing.T) { |
| for _, scheme := range []string{"light", "dark"} { |
diff --git a/check/apitokens_browser_test.go b/check/apitokens_browser_test.go| index 2d25ec1..645eb98 100644 |
| --- a/check/apitokens_browser_test.go |
| +++ b/check/apitokens_browser_test.go |
| @@ -1,7 +1,8 @@ |
| //go:build browser |
| // The API token list on a phone and on a desktop, from rastrillo's |
| -// ui/apitokens_browser_test.go at SEED, its page read through fixture. |
| +// ui/apitokens_browser_test.go at the seed commit, its page read |
| +// through fixture. |
| package check |
| import ( |
| @@ -16,7 +17,7 @@ import ( |
| // tokensFactHeadings are the four facts a token row shows beside its |
| // identity, in the row's order, each the column heading the seeded |
| -// page's head row carries (SEED read them from its catalog under |
| +// page's head row carries (rastrillo read them from its catalog under |
| // api_tokens_access, api_tokens_col_created, api_tokens_col_last_used |
| // and api_tokens_expires). |
| func tokensFactHeadings() []string { |
| @@ -24,7 +25,7 @@ func tokensFactHeadings() []string { |
| } |
| // tokensRows is how many token rows the seeded page lists: the |
| -// four-token fixture, as SEED's tokensPage() built it. |
| +// four-token fixture, as rastrillo's tokensPage() built it. |
| const tokensRows = 4 |
| // tokensPageDoc is the token page with the four-token fixture in a |
diff --git a/check/blocks_browser_test.go b/check/blocks_browser_test.go| index cad167a..cfcacfa 100644 |
| --- a/check/blocks_browser_test.go |
| +++ b/check/blocks_browser_test.go |
| @@ -1,7 +1,8 @@ |
| //go:build browser |
| // The block components' spacing and baselines, from rastrillo's |
| -// ui/blocks_browser_test.go at SEED, each page read through fixture. |
| +// ui/blocks_browser_test.go at the seed commit, each page read |
| +// through fixture. |
| package check |
| import ( |
diff --git a/check/bulkbar_browser_test.go b/check/bulkbar_browser_test.go| index 1ed064e..f65fd8e 100644 |
| --- a/check/bulkbar_browser_test.go |
| +++ b/check/bulkbar_browser_test.go |
| @@ -1,7 +1,8 @@ |
| //go:build browser |
| // The bulk bar on a phone and on a desktop, from rastrillo's |
| -// ui/bulkbar_browser_test.go at SEED, its page read through fixture. |
| +// ui/bulkbar_browser_test.go at the seed commit, its page |
| +// read through fixture. |
| package check |
| import ( |
diff --git a/check/card_browser_test.go b/check/card_browser_test.go| index 27764bd..2e2171b 100644 |
| --- a/check/card_browser_test.go |
| +++ b/check/card_browser_test.go |
| @@ -17,7 +17,7 @@ import ( |
| "amadan.net/rastrillo/fiesta/internal/harness" |
| ) |
| -// topbarPage is the real topbar layout as SEED's drive rendered it, in |
| +// topbarPage is the real topbar layout as rastrillo's drive rendered it, in |
| // one direction: a nav whose current item is Posts (#nav-posts, |
| // #nav-drafts, #nav-settings), an account menu (#acct-profile), a |
| // language menu (#bar-locale), and a link in the page (#main-link) far |
| @@ -27,7 +27,7 @@ func topbarPage(t *testing.T, dir string) string { |
| return fixture(t, "card_browser_test.go", "topbarPage", dir) |
| } |
| -// cardPage is one of the other pages this file's drives read, as SEED |
| +// cardPage is one of the other pages this file's drives read, as rastrillo |
| // rendered it, by the drive's name and the page's case. |
| func cardPage(t *testing.T, test, kase string) string { |
| t.Helper() |
diff --git a/check/console_shell_browser_test.go b/check/console_shell_browser_test.go| index bd3425b..4908006 100644 |
| --- a/check/console_shell_browser_test.go |
| +++ b/check/console_shell_browser_test.go |
| @@ -22,7 +22,7 @@ |
| // and a theme; the shell's own <script defer> tags resolve to addresses |
| // this mux does not serve, exactly as the other shell drives leave |
| // them. Every state change below is a click on a <summary>. The pages |
| -// are the ones rastrillo's drives rendered at SEED, read through |
| +// are the ones rastrillo's drives rendered at the seed commit, read through |
| // fixture (testdata/fixtures/). |
| package check |
| @@ -173,7 +173,7 @@ const consoleControlCSS = ` |
| } |
| }` |
| -// consolePage is the console shell as SEED's drive rendered it, by |
| +// consolePage is the console shell as rastrillo's drive rendered it, by |
| // case, and its control twin. Every case has two account links, the |
| // language menu as #bar-locale (English and Gaeilge) and a foot; the |
| // cases differ in their nav, direction and view: "ltr" is Posts (the |
diff --git a/check/contrast_face_test.go b/check/contrast_face_test.go| index 83aef8d..0415955 100644 |
| --- a/check/contrast_face_test.go |
| +++ b/check/contrast_face_test.go |
| @@ -15,10 +15,10 @@ import ( |
| // label does not sit on a token: it sits on the fill, under a face |
| // gradient that lightens the top by --rst-depth-face and darkens the |
| // bottom by the same, under a sheen while the pointer is on it, and |
| -// over a press that darkens by a wash plus a spot while it is held |
| -// (spec C4, A2). This file composes those points and holds each to |
| +// over a press that darkens by a wash plus a spot while it is held. |
| +// This file composes those points and holds each to |
| // 4.5:1. The review computed 4.48:1 for a 15% sheen on the light |
| -// primary and the cap came down (A7); if a value fails, lower the shade |
| +// primary and the cap came down; if a value fails, lower the shade |
| // or the sheen, never lighten the fill. |
| func faceShadeShape(t *testing.T) { |
| @@ -113,7 +113,8 @@ func pressNumber(t *testing.T, theme, scheme, name string) float64 { |
| return f |
| } |
| -// TestButtonFacesClearContrastAtTheirLightestAndDarkestPoints is C4. |
| +// TestButtonFacesClearContrastAtTheirLightestAndDarkestPoints holds |
| +// every composed face to 4.5:1. |
| func TestButtonFacesClearContrastAtTheirLightestAndDarkestPoints(t *testing.T) { |
| faceShadeShape(t) |
| for _, theme := range fiesta.ThemeNames() { |
diff --git a/check/contrast_test.go b/check/contrast_test.go| index 72a2134..7ce2393 100644 |
| --- a/check/contrast_test.go |
| +++ b/check/contrast_test.go |
| @@ -285,7 +285,7 @@ func TestThemeTokenContrastMeetsWCAG(t *testing.T) { |
| // with the accent at 45%, which on a light surface is under 3:1 by |
| // construction; day and plain make it the line, which is a hairline |
| // divider and carries no floor either. That is not a defect and |
| - // must not be "fixed" by adding a row here — the ruling says so in |
| + // must not be "fixed" by adding a row here — the design doc says so in |
| // writing precisely so this argument has already been answered. |
| pairs := []pair{ |
| {"--rst-text", "--rst-surface", 4.5, "body text on a card"}, |
| @@ -333,7 +333,7 @@ func TestThemeTokenContrastMeetsWCAG(t *testing.T) { |
| // dedicated --rst-danger-* pair. This is the real pair the danger |
| // button's label renders against, so it belongs in the gate anyway. |
| {"--rst-on-accent", "--rst-tone-negative-fg", 4.5, "danger button label"}, |
| - // The depth axis's pairs (spec C3, C5, A2). Filled controls read |
| + // The depth axis's pairs. Filled controls read |
| // their own fill now, so the label pairs are these; the old |
| // --rst-on-accent on --rst-accent rows stay for the places still |
| // painted with the accent itself. |
diff --git a/check/css_test.go b/check/css_test.go| index 4ebdf8f..2bd03f7 100644 |
| --- a/check/css_test.go |
| +++ b/check/css_test.go |
| @@ -12,14 +12,14 @@ import ( |
| ) |
| // The gates that read tokens.css, shell.css and the themes as text, |
| -// ported from rastrillo's ui/ui_test.go at SEED: what the stylesheets |
| -// embed, the one-block theme structure, the motion and scheme gates, |
| -// the selectors the components rely on, and the markup contracts the |
| -// examples hold (the dropdown's native exclusivity, the modal as a |
| -// rendered-open dialog). The CSS readers they share (braceMatchEnd, |
| -// leafRules, selectorList, blockBody) live here and in |
| -// contrast_test.go; the tests over markup read the example state the |
| -// manifest's idiom table names. |
| +// ported from rastrillo's ui/ui_test.go at the seed commit: what the |
| +// stylesheets embed, the one-block theme structure, the motion and |
| +// scheme gates, the selectors the components rely on, and the markup |
| +// contracts the examples hold (the dropdown's native exclusivity, |
| +// the modal as a rendered-open dialog). The CSS readers they share |
| +// (braceMatchEnd, leafRules, selectorList, blockBody) live here and |
| +// in contrast_test.go; the tests over markup read the example state |
| +// the manifest's idiom table names. |
| func TestTokensCSSIsEmbedded(t *testing.T) { |
| css := fiesta.TokensCSS() |
| @@ -152,7 +152,7 @@ func TestThemeCSSIsEmbedded(t *testing.T) { |
| t.Errorf("themes/%s.css is missing %q", name, want) |
| } |
| } |
| - // A theme restates nothing per scheme but numbers (A4): |
| + // A theme restates nothing per scheme but numbers: |
| // light-dark() cannot wrap a number, so the press strengths are |
| // written once in :root for light and again in two blocks for |
| // dark, and those blocks hold --rst-* numbers, the same numbers |
| @@ -870,7 +870,7 @@ func TestThemesDeclareIdenticalTokenSets(t *testing.T) { |
| for _, shape := range []string{ |
| "--rst-radius", "--rst-radius-sm", "--rst-radius-pill", |
| "--rst-shadow-pop", "--rst-shadow-knob", "--rst-shadow-knob-hover", "--rst-shadow-lift", "--rst-overlay", |
| - // The depth axis (spec C2, as amended by A6 and A15). day turns |
| + // The depth axis. day turns |
| // it on; plain and signal declare the same names at today's |
| // values. A name missing from day here is a token tokens.css |
| // would read through its fallback forever. |
| @@ -933,7 +933,7 @@ func schemeNumberBlocks(t *testing.T, name, css string) []string { |
| return blocks |
| } |
| -// schemeNumberProblems reads a theme file against the shape A4 allows: |
| +// schemeNumberProblems reads a theme file against the shape a theme may take: |
| // one `:root {` block; the two toggle rules |
| // `:root[data-theme="light"] { color-scheme: light; }` and |
| // `:root[data-theme="dark"] { color-scheme: dark; }`; and, together or |
| @@ -1082,7 +1082,7 @@ func TestTokensCSSHasNoColourLiterals(t *testing.T) { |
| // so this gate also matches rgba()/rgb()/hsl() function values, not |
| // just bare hex, to keep that claim enforced instead of just stated. |
| decl := regexp.MustCompile(`:\s*[^;]*(#[0-9a-fA-F]{3,6}|rgba?\(|hsl\()`) |
| - // Ink and light (A5): tokens.css may paint pure black or pure white |
| + // Ink and light: tokens.css may paint pure black or pure white |
| // at an alpha, where the strength is a number token or a fixed |
| // fraction. Those two spellings are the only literals allowed; a |
| // line that mixes one with any other colour function still fails. |
| @@ -1119,12 +1119,12 @@ func TestHiddenButtonsStayHidden(t *testing.T) { |
| } |
| // The depth axis is a theme decision: day turns it on, and plain and |
| -// signal prove a theme can switch it off (spec §3, A13). Flat means the |
| +// signal prove a theme can switch it off (spec §3). Flat means the |
| // highlight, the shadows, the sheen and the wash are transparent, the |
| // face does not shade, the press has no strength and no drop, and the |
| // rim is the line: declared as var(--rst-line), so an app's override of |
| -// the line reaches it (Astra A2), or as the line's own value. Pinned by |
| -// value for day because its numbers were measured (A7); pinned flat |
| +// the line reaches it, or as the line's own value. Pinned by |
| +// value for day because its numbers were measured; pinned flat |
| // for the others because "renders as today" is a promise a later theme |
| // edit could quietly break. |
| func TestDayTurnsDepthOnAndTheOthersStayFlat(t *testing.T) { |
| @@ -1142,12 +1142,12 @@ func TestDayTurnsDepthOnAndTheOthersStayFlat(t *testing.T) { |
| t.Errorf("day/%s is flat; the depth axis is day's to turn on", scheme) |
| } |
| if tok["--rst-depth-face"] != "0.04" || tok["--rst-press-drop"] != "1px" { |
| - t.Errorf("day/%s shades a filled face by %q and drops a press by %q, want 0.04 and 1px (A7, A2)", scheme, tok["--rst-depth-face"], tok["--rst-press-drop"]) |
| + t.Errorf("day/%s shades a filled face by %q and drops a press by %q, want 0.04 and 1px", scheme, tok["--rst-depth-face"], tok["--rst-press-drop"]) |
| } |
| continue |
| } |
| if !flat { |
| - t.Errorf("%s/%s is not flat (A13: plain and signal render as today)", name, scheme) |
| + t.Errorf("%s/%s is not flat (plain and signal render as they did)", name, scheme) |
| } |
| } |
| } |
| @@ -1158,7 +1158,7 @@ func TestDayTurnsDepthOnAndTheOthersStayFlat(t *testing.T) { |
| } { |
| for tokName, v := range want { |
| if day[scheme][tokName] != v { |
| - t.Errorf("day/%s %s = %q, want %q (spec §1, §2, C15, A7)", scheme, tokName, day[scheme][tokName], v) |
| + t.Errorf("day/%s %s = %q, want %q", scheme, tokName, day[scheme][tokName], v) |
| } |
| } |
| } |
| @@ -1168,13 +1168,13 @@ func TestDayTurnsDepthOnAndTheOthersStayFlat(t *testing.T) { |
| resolved := resolvedTokens(t, "day") |
| for scheme, want := range map[string]string{"light": "#2059dd", "dark": "#3160ea"} { |
| if got := resolved[scheme]["--rst-accent-fill"]; got != want { |
| - t.Errorf("day/%s --rst-accent-fill resolves to %q, want %q (A7, derived)", scheme, got, want) |
| + t.Errorf("day/%s --rst-accent-fill resolves to %q, want %q (derived)", scheme, got, want) |
| } |
| } |
| css, _ := fiesta.ThemeCSS("day") |
| blocks := schemeNumberBlocks(t, "day", string(css)) |
| if len(blocks) != 2 || !strings.Contains(blocks[0], "--rst-press-wash: 0.18;") { |
| - t.Errorf("day restates no dark press strengths; want --rst-press-wash: 0.18 in both scheme blocks (A2)") |
| + t.Errorf("day restates no dark press strengths; want --rst-press-wash: 0.18 in both scheme blocks") |
| } |
| } |
diff --git a/check/datetime_test.go b/check/datetime_test.go| index d8cf619..ede4271 100644 |
| --- a/check/datetime_test.go |
| +++ b/check/datetime_test.go |
| @@ -13,11 +13,12 @@ import ( |
| "amadan.net/rastrillo/fiesta/internal/nodetest" |
| ) |
| -// Ported from rastrillo's ui/datetime_test.go at SEED. The parser and |
| -// the calendar's arithmetic run in Node (node/datetime_node.mjs); the |
| -// contracts read the scripts as text. The vocabulary the browser reads |
| -// off data-rst-date-words comes from i18n/<lang>.json's date-words |
| -// now, through fiesta.Strings, rather than from rastrillo's catalogs. |
| +// Ported from rastrillo's ui/datetime_test.go at the seed commit. The |
| +// parser and the calendar's arithmetic run in Node |
| +// (node/datetime_node.mjs); the contracts read the scripts as text. |
| +// The vocabulary the browser reads off data-rst-date-words comes from |
| +// i18n/<lang>.json's date-words now, through fiesta.Strings, rather |
| +// than from rastrillo's catalogs. |
| // shippedScript returns one script by its file name, failing the test |
| // when the tree does not ship it. |
diff --git a/check/depth_browser_test.go b/check/depth_browser_test.go| index 3190184..4d919ed 100644 |
| --- a/check/depth_browser_test.go |
| +++ b/check/depth_browser_test.go |
| @@ -78,7 +78,7 @@ func TestEveryButtonVariantHasItsOwnHoverAndPress(t *testing.T) { |
| } |
| if id == "#b-primary" || id == "#b-danger" || id == "#b-link" { |
| if hover.bg == rest.bg { |
| - t.Errorf("%s: hover keeps the rest fill %s; every state reads its own token (C3)", id, rest.bg) |
| + t.Errorf("%s: hover keeps the rest fill %s; every state reads its own token", id, rest.bg) |
| } |
| if isGrey(hover.bg) { |
| t.Errorf("%s: hovered fill %s is grey; a filled button's hover keeps its fill", id, hover.bg) |
| @@ -154,7 +154,7 @@ func expectedStack(sheen, spotAlpha, washAlpha, face string) string { |
| func alphaStr(a float64) string { return strconv.FormatFloat(a, 'f', -1, 64) } |
| -// TestEveryButtonPaintsItsWholeStack (A4, A18, C4): for primary, danger |
| +// TestEveryButtonPaintsItsWholeStack: for primary, danger |
| // and plain, at rest, hovered and pressed, in both schemes, the resolved |
| // background-image is exactly the four layers the table composes from |
| // day's tokens, the background-colour is the state's fill and the |
| @@ -227,7 +227,7 @@ func TestEveryButtonPaintsItsWholeStack(t *testing.T) { |
| // norm collapses whitespace differences in a serialised gradient. |
| func norm(s string) string { return strings.Join(strings.Fields(s), " ") } |
| -// TestAPressIsInstantAndSlowToLeave is A2's drive: --rst-press is 1 and |
| +// TestAPressIsInstantAndSlowToLeave is the press's drive: --rst-press is 1 and |
| // the button sits 1px lower while held, with the same box; on release |
| // the fade is a 0.7s transition on the spec's curve, and 250ms into it |
| // the value is what the curve gives (about 0.223); under reduced motion |
| @@ -401,8 +401,8 @@ func TestTheFaceStillPaintsWithoutARegisteredPress(t *testing.T) { |
| } |
| } |
| -// TestHoverTintsPaintWithoutRegisteredNumbers (Astra, day-followups |
| -// review 1): the row, tile and rail hover tints read --rst-hover and |
| +// TestHoverTintsPaintWithoutRegisteredNumbers (from rastrillo's day |
| +// follow-ups review): the row, tile and rail hover tints read --rst-hover and |
| // --rst-pressed, and in an engine without @property (Firefox before |
| // 128) an unset var() invalidates the whole declaration at computed |
| // value time: the hover rule sets --rst-hover itself, but --rst-pressed |
| @@ -545,7 +545,7 @@ func TestCardsRestOnThePageWithNoScript(t *testing.T) { |
| // too, where the rail sits beside the page; a hovered item takes the |
| // hover tint and a pressed one the press tint, in both rails and the |
| // topbar's phone card; a pressed tab or chip is its hovered self; every |
| -// surface has its tap highlight off (A1). |
| +// surface has its tap highlight off. |
| func TestEveryNavSurfaceHasItsStates(t *testing.T) { |
| rig := sizingRig(t, false, depthDoc(t), harness.WithHover()) |
| ctx, cancel := context.WithTimeout(rig.Context(), 60*time.Second) |
| @@ -592,7 +592,7 @@ func TestEveryNavSurfaceHasItsStates(t *testing.T) { |
| forceState(t, ctx, "#nav-x") |
| for _, sel := range []string{"#nav-x", "#cnav-x", "#tnav-x", "#tab-1", "#page-1"} { |
| if got := computed(t, ctx, sel, "-webkit-tap-highlight-color"); got != "rgba(0, 0, 0, 0)" { |
| - t.Errorf("%s tap highlight is %s, want transparent (A1)", sel, got) |
| + t.Errorf("%s tap highlight is %s, want transparent", sel, got) |
| } |
| } |
| // Chromium serialises a zero letter-spacing as "normal", whatever |
| @@ -609,7 +609,7 @@ func TestEveryNavSurfaceHasItsStates(t *testing.T) { |
| // card tint and presses to the tap tint, and its current link wears |
| // the thumb's three shadow layers; plain and signal, swapped in on |
| // the same page, paint nothing on hover or press, as they did before |
| - // the card had a hover (A15). |
| + // the card had a hover. |
| narrow := sizingRig(t, false, depthDoc(t), harness.WithHover()) |
| nctx, ncancel := context.WithTimeout(narrow.Context(), 60*time.Second) |
| defer ncancel() |
| @@ -668,13 +668,13 @@ func TestEveryNavSurfaceHasItsStates(t *testing.T) { |
| css, _ := fiesta.ThemeCSS(c.theme) |
| mustRun(t, nctx, chromedp.Evaluate(`(() => { const l = document.querySelector('link[href="/theme.css"]'); if (l) l.remove(); for (const s of document.querySelectorAll("style[data-swap]")) s.remove(); const s = document.createElement("style"); s.dataset.swap = "1"; s.textContent = `+jsStr(string(css))+`; document.head.append(s); return true; })()`, nil)) |
| if hover, press := cardFace("hover"), cardFace("hover", "active"); hover != c.cardHover || press != c.cardHover { |
| - t.Errorf("%s: topbar phone-card link hover %s press %s; want transparent, as before the card had a hover (A15)", c.theme, hover, press) |
| + t.Errorf("%s: topbar phone-card link hover %s press %s; want transparent, as before the card had a hover", c.theme, hover, press) |
| } |
| indexRows(c.theme, c.hoverTint, c.pressTint) |
| } |
| } |
| -// TestFieldsSitIntoThePageAndFocusKeepsTheOutline (spec §3, C5, C14): |
| +// TestFieldsSitIntoThePageAndFocusKeepsTheOutline (spec §3): |
| // an input has a 1px inset ambient shadow and a --rst-line-strong |
| // border at rest; focused, its border is the accent, it gains the 3px |
| // halo, and the solid 2px outline is still there. The textarea does |
| @@ -687,7 +687,7 @@ func TestFieldsSitIntoThePageAndFocusKeepsTheOutline(t *testing.T) { |
| open(t, ctx, rig, "/", false) |
| still(t, ctx) |
| for _, f := range []struct{ box, focus string }{{"#field", "#field"}, {"#area", "#area"}, {"#search", "#search-in"}} { |
| - // day's light --rst-line-strong is #868691 (a ruling: the sign-in |
| + // day's light --rst-line-strong is #868691 (a review decision: the sign-in |
| // border needed it darker than the #8a8a95 first proposed). |
| if sh, border := computed(t, ctx, f.box, "box-shadow"), computed(t, ctx, f.box, "border-top-color"); !strings.HasPrefix(sh, "rgba(16, 24, 40, 0.06) 0px 1px 1px 0px inset") || border != "rgb(134, 134, 145)" { |
| t.Errorf("%s at rest: box-shadow %q border %s; want the inset ambient shadow and --rst-line-strong", f.box, sh, border) |
diff --git a/check/depth_media_browser_test.go b/check/depth_media_browser_test.go| index 283b4f3..7a7e599 100644 |
| --- a/check/depth_media_browser_test.go |
| +++ b/check/depth_media_browser_test.go |
| @@ -93,8 +93,8 @@ func emulatedRig(t *testing.T, media *emulation.SetEmulatedMediaParams, width, h |
| var forcedMedia = emulation.SetEmulatedMedia().WithFeatures([]*emulation.MediaFeature{{Name: "forced-colors", Value: "active"}, {Name: "prefers-color-scheme", Value: "light"}}) |
| -// TestForcedColoursKeepBordersAndSelection emulates forced colours |
| -// (C6): cards, buttons, fields and summaries have a visible border and |
| +// TestForcedColoursKeepBordersAndSelection emulates forced colours: |
| +// cards, buttons, fields and summaries have a visible border and |
| // no painted shadow in every state; the knob is painted and its track |
| // bordered; the current item in each of the three shells, the current |
| // menu item, tab and chip use the highlight pair and paint no shadow |
| @@ -132,7 +132,7 @@ func TestForcedColoursKeepBordersAndSelection(t *testing.T) { |
| // HighlightText: the pair a palette guarantees contrasts. ButtonText |
| // on Highlight need not (a white ButtonText on a cyan Highlight is |
| // about 1.25:1), for the ordinary switch and the toggle block's head |
| - // alike (Astra A4). Highlight and HighlightText are held apart from |
| + // alike. Highlight and HighlightText are held apart from |
| // ButtonText first, or the knob could pass by coincidence. |
| hl, hlText, btnText := systemColour(t, ctx, "Highlight"), systemColour(t, ctx, "HighlightText"), systemColour(t, ctx, "ButtonText") |
| if hlText == btnText || hl == hlText { |
diff --git a/check/depth_media_test.go b/check/depth_media_test.go| index 752af9c..7f0c790 100644 |
| --- a/check/depth_media_test.go |
| +++ b/check/depth_media_test.go |
| @@ -8,7 +8,7 @@ import ( |
| ) |
| // The two media blocks that undo the depth language where it would do |
| -// harm (spec C6, C17, A17). Each flattens the axis at html:root, so no |
| +// harm. Each flattens the axis at html:root, so no |
| // state rule can keep a shadow, a gradient, a tint or a drop; and each |
| // names the components that need a border or a system colour the |
| // tokens cannot give them. A token or a component left out keeps a |
diff --git a/check/depth_rows_browser_test.go b/check/depth_rows_browser_test.go| index 99c5c89..c02e674 100644 |
| --- a/check/depth_rows_browser_test.go |
| +++ b/check/depth_rows_browser_test.go |
| @@ -2,8 +2,8 @@ |
| // The row's lift, the tint on menus, tiles and options, the shell |
| // tail's flat summaries and the toggle-block head, from rastrillo's |
| -// ui/depth_rows_browser_test.go at SEED, on the rows fixture and the |
| -// depth page rig_browser_test.go serves. |
| +// ui/depth_rows_browser_test.go at the seed commit, on the rows |
| +// fixture and the depth page rig_browser_test.go serves. |
| package check |
| import ( |
| @@ -25,7 +25,7 @@ const ( |
| rowA, linkA, rowInert = "#row-a", "#link-a", "#row-n" |
| ) |
| -// TestARowLiftsOnHoverAndSinksOnPress (spec §3, C7, A1), with a mouse: |
| +// TestARowLiftsOnHoverAndSinksOnPress (spec §3), with a mouse: |
| // an actionable row's hover changes its background to the hover tint |
| // with only inset shadows and no stacking context; pressed, or with |
| // its overlay link :active, it takes the press tint; an inert row |
| @@ -44,15 +44,15 @@ func TestARowLiftsOnHoverAndSinksOnPress(t *testing.T) { |
| t.Errorf("hovered row background %s, want the hover tint rgb(245, 247, 253)", got) |
| } |
| if sh := computed(t, ctx, rowA, "box-shadow"); !strings.Contains(sh, "inset") || strings.Count(sh, "inset") != strings.Count(sh, "rgb") { |
| - t.Errorf("hovered row box-shadow %q, want inset layers only (C7)", sh) |
| + t.Errorf("hovered row box-shadow %q, want inset layers only", sh) |
| } |
| if pos, z := computed(t, ctx, rowA, "position"), computed(t, ctx, rowA, "z-index"); pos != "relative" || z != "auto" { |
| - t.Errorf("hovered row position %s z-index %s; the lift must add no stacking context (C7)", pos, z) |
| + t.Errorf("hovered row position %s z-index %s; the lift must add no stacking context", pos, z) |
| } |
| forceState(t, ctx, rowA) |
| forceState(t, ctx, linkA, "active") |
| if got := computed(t, ctx, rowA, "background-color"); got != "rgb(236, 241, 252)" { |
| - t.Errorf("row with its link :active has background %s, want the press tint rgb(236, 241, 252) (A1)", got) |
| + t.Errorf("row with its link :active has background %s, want the press tint rgb(236, 241, 252)", got) |
| } |
| forceState(t, ctx, linkA) |
| forceState(t, ctx, rowInert, "hover", "active") |
| @@ -72,7 +72,7 @@ func TestARowLiftsOnHoverAndSinksOnPress(t *testing.T) { |
| // menu button, keyboard-active option, media tile and list-row-action |
| // row take the hover tint (the option through .is-active with no |
| // pointer at all), the current menu item keeps the accent tint, and a |
| -// dropdown nested in a menu keeps no button face in any state (A12). |
| +// dropdown nested in a menu keeps no button face in any state. |
| // A tile or a row is pressed through its overlay link: the press |
| // selectors read the link's :active with the container hovered, so the |
| // hover is held on the container and the active forced on the link. |
| @@ -123,7 +123,7 @@ func TestMenusTilesAndOptionsTakeTheTint(t *testing.T) { |
| for _, states := range [][]string{{}, {"hover"}, {"hover", "active"}, {"active"}} { |
| forceState(t, ctx, "#dd-nested-sum", states...) |
| if bg, bw, sh := computed(t, ctx, "#dd-nested-sum", "background-color"), computed(t, ctx, "#dd-nested-sum", "border-top-width"), computed(t, ctx, "#dd-nested-sum", "box-shadow"); bg != "rgba(0, 0, 0, 0)" || bw != "0px" || sh != "none" { |
| - t.Errorf("a dropdown nested in a menu, state %v: %s, border %s, shadow %q; it is a row of the menu, not a button (A12)", states, bg, bw, sh) |
| + t.Errorf("a dropdown nested in a menu, state %v: %s, border %s, shadow %q; it is a row of the menu, not a button", states, bg, bw, sh) |
| } |
| forceState(t, ctx, "#dd-nested-sum") |
| } |
| @@ -134,7 +134,7 @@ func TestMenusTilesAndOptionsTakeTheTint(t *testing.T) { |
| forceState(t, ctx, "#lra") |
| for _, sel := range []string{"#link-a", "#lra-link", "#tile-link", "#dd-sum", "#menu-a", "#menu-btn", "#opt-a", "#sw"} { |
| if got := computed(t, ctx, sel, "-webkit-tap-highlight-color"); got != "rgba(0, 0, 0, 0)" { |
| - t.Errorf("%s tap highlight is %s, want transparent (A1)", sel, got) |
| + t.Errorf("%s tap highlight is %s, want transparent", sel, got) |
| } |
| } |
| } |
| @@ -217,7 +217,7 @@ const shellTailBody = `<div rst-shell-topbar><header rst-shell-bar><a rst-shell- |
| // markup-spelling: old-spelling end |
| -// TestTheShellTailsMenusWearNoFace (A12, ruling 6.I2): in day, the |
| +// TestTheShellTailsMenusWearNoFace: in day, the |
| // locale and scheme summaries in a shell's tail stay flat, as their |
| // neighbours do, in the desktop bar at 1280 and as rows of the phone |
| // card at 390, in every state; the same menu on the page wears the |
| @@ -256,9 +256,9 @@ func TestTheShellTailsMenusWearNoFace(t *testing.T) { |
| // already held; the new claims are that the head is the press surface |
| // (no browser tap highlight) and that the pressed head takes no tint |
| // of its own, because its switch is the feedback. The highlight check |
| -// passes before Task 7 too: Task 6's tap-highlight rule already names |
| -// the head; the background check is what fails if the head's hover |
| -// tint leaves the hover query. |
| +// passed before the head had a hover rule: the tap-highlight rule |
| +// already named the head; the background check is what fails if the |
| +// head's hover tint leaves the hover query. |
| func TestATBlockHeadTapsWithoutAFlash(t *testing.T) { |
| body := `<div rst-page><div rst-tblock id="tb"><label rst-tblock-head id="head"><input type="checkbox"><span rst-switch-track aria-hidden="true"></span><span rst-tblock-title id="title">Block</span></label><div rst-tblock-body>body</div></div></div>` |
| rig := sizingRig(t, true, map[string]string{"/": sizingDoc("tblock", body)}) |
diff --git a/check/dropdown_browser_test.go b/check/dropdown_browser_test.go| index 1f1ffbb..d75a108 100644 |
| --- a/check/dropdown_browser_test.go |
| +++ b/check/dropdown_browser_test.go |
| @@ -2,8 +2,9 @@ |
| // A dropdown's panel under its summary, with and without anchor |
| // positioning and scripts, from rastrillo's ui/dropdown_browser_test.go |
| -// at SEED. The partial is read through fixture; the gallery sample is |
| -// the example state the manifest's idiom table names for dropdown. |
| +// at the seed commit. The partial is read through fixture; the gallery |
| +// sample is the example state the manifest's idiom table names for |
| +// dropdown. |
| package check |
| import ( |
diff --git a/check/fields_browser_test.go b/check/fields_browser_test.go| index e0e54b8..3426e75 100644 |
| --- a/check/fields_browser_test.go |
| +++ b/check/fields_browser_test.go |
| @@ -3,8 +3,8 @@ |
| // The enhanced fields in a browser: the select and date journeys, the |
| // Enter that must not submit, the field row's geometry, the calendar |
| // overlay, the native picker's button and the time field's clock. The |
| -// B half of rastrillo's ui/browser_test.go at SEED, each page read |
| -// through fixture so the page it drives is the page the SEED drive |
| +// B half of rastrillo's ui/browser_test.go at the seed commit, each page read |
| +// through fixture so the page it drives is the page the rastrillo drive |
| // drove; the A half is menus_browser_test.go. |
| // |
| // These drives used to carry a KNOWN LIMITATION saying they were |
diff --git a/check/fixture_test.go b/check/fixture_test.go| index 10b529f..9cf6b63 100644 |
| --- a/check/fixture_test.go |
| +++ b/check/fixture_test.go |
| @@ -12,10 +12,11 @@ import ( |
| ) |
| // The seeded fixtures: the pages rastrillo's browser drives built by |
| -// hand at SEED, written out once under testdata/fixtures/ and listed |
| -// in index.json by the file, builder and case they came from. A drive |
| -// ported here reads its page through fixture rather than retyping it, |
| -// so the page it drives is the page the SEED drive drove. |
| +// hand at the seed commit, written out once under testdata/fixtures/ |
| +// and listed in index.json by the file, builder and case they came |
| +// from. A drive ported here reads its page through fixture rather |
| +// than retyping it, so the page it drives is the page the rastrillo |
| +// drive drove. |
| // fixtureRow is one entry of testdata/fixtures/index.json. A row |
| // names either a path under testdata/fixtures/ or an example state |
| @@ -50,7 +51,7 @@ func fixtureIndex(t *testing.T) []fixtureRow { |
| // fixture returns the contents of the fixture file the index lists for |
| // the {file, builder, case} row: the body or the whole document, as |
| -// the row's kind says, exactly as the SEED builder wrote it. It fails |
| +// the row's kind says, exactly as the rastrillo builder wrote it. It fails |
| // the test when the row is missing, when the row names an example |
| // rather than a path, or when the file is absent. |
| func fixture(t *testing.T, file, builder, kase string) string { |
| @@ -73,7 +74,7 @@ func fixture(t *testing.T, file, builder, kase string) string { |
| } |
| // fixtureExample returns the markup of the example state the index |
| -// names for the {file, builder, case} row: the two rows whose SEED |
| +// names for the {file, builder, case} row: the two rows whose rastrillo |
| // page was a styleguide sample carry "example/state" instead of a |
| // path, and read through the example package. It fails the test when |
| // the row is missing, when the row names a path rather than an |
diff --git a/check/flat_override_browser_test.go b/check/flat_override_browser_test.go| index 2333801..12472ea 100644 |
| --- a/check/flat_override_browser_test.go |
| +++ b/check/flat_override_browser_test.go |
| @@ -31,8 +31,8 @@ const appOverrides = `<style>:root { |
| --rst-tone-negative-fg: light-dark(#6a1b9a, #d7a4ff); |
| }</style>` |
| -// TestFlatThemesFollowAnAppsOverrides is Astra A2 (A15 for an app that |
| -// customised): under the v0.28 pair, an app's override of --rst-accent |
| +// TestFlatThemesFollowAnAppsOverrides is the promise to an app that |
| +// customised: under the v0.28 pair, an app's override of --rst-accent |
| // reached a plain button's hovered text and border, --rst-accent-soft |
| // reached the hover tints and the current nav item, --rst-surface the |
| // control faces and the switch's knob, --rst-surface-2 the linked rows, |
| @@ -77,7 +77,7 @@ func TestFlatThemesFollowAnAppsOverrides(t *testing.T) { |
| sort.Strings(keys) |
| // 40 per channel, not the matrix's 24: the only pixels |
| // left differing after the aliases are the rounded |
| - // corners the matrix comment describes (A9), 44 to 88 |
| + // corners the matrix comment describes, 44 to 88 |
| // per card, measured at up to 32 with this hairline |
| // (#d6c184 on #fff7e3) where the stock pair's measured |
| // 9 to 16. A token that kept a stock colour is a whole |
diff --git a/check/header_rule_browser_test.go b/check/header_rule_browser_test.go| index 203abad..f0671dd 100644 |
| --- a/check/header_rule_browser_test.go |
| +++ b/check/header_rule_browser_test.go |
| @@ -77,9 +77,9 @@ import ( |
| "amadan.net/rastrillo/fiesta/internal/harness" |
| ) |
| -// headerRuleMix is the ruling, transcribed: how much of the accent each |
| -// theme folds into its line. plain has no accent hue to fold, so its |
| -// token is the line itself and its share is zero. |
| +// headerRuleMix is the design decision, transcribed: how much of the |
| +// accent each theme folds into its line. plain has no accent hue to |
| +// fold, so its token is the line itself and its share is zero. |
| // |
| // This table and the themes' declarations are meant to stay in |
| // lockstep, the same way contrast_test.go's pair table and the |
| @@ -321,7 +321,7 @@ func rgbString(c []int) string { |
| // on screen (and still reads as a progress bar at 12%); |
| // - the border still names --rst-line, so all three themes draw the |
| // same grey and the theme axis gained a token nothing uses; |
| -// - a theme's percentage drifts from the ruling — 45% typed as 4.5%, |
| +// - a theme's percentage drifts from the decision — 45% typed as 4.5%, |
| // or a tint creeping back into day's neutral rule — which is |
| // invisible against a grey line and exactly the kind of thing a |
| // source-reading test would confirm rather than catch; |
| @@ -346,7 +346,7 @@ func TestTheHeaderRuleIsTheThemesTintedHairline(t *testing.T) { |
| for _, theme := range fiesta.ThemeNames() { |
| share, ruled := headerRuleMix[theme] |
| if !ruled { |
| - t.Errorf("theme %q is shipped but headerRuleMix does not say how much accent its rule carries; add it, with the ruling's number", theme) |
| + t.Errorf("theme %q is shipped but headerRuleMix does not say how much accent its rule carries; add it, with the number the design settled on", theme) |
| continue |
| } |
| tint[theme] = map[string]float64{} |
diff --git a/check/index_browser_test.go b/check/index_browser_test.go| index ca84dc0..dbebbfa 100644 |
| --- a/check/index_browser_test.go |
| +++ b/check/index_browser_test.go |
| @@ -17,7 +17,7 @@ import ( |
| "amadan.net/rastrillo/fiesta/internal/harness" |
| ) |
| -// indexPage is one page of this file's drives as SEED's shellLayoutPage |
| +// indexPage is one page of this file's drives as rastrillo's shellLayoutPage |
| // rendered it: a layout with a nav of three sections (Invoices, Orders |
| // and Team, with ids, so the scriptless focus return has fragments to |
| // use), the title and brand Harbour, the language menu as #rail-locale |
diff --git a/check/light_browser_test.go b/check/light_browser_test.go| index 766b0d8..3e67407 100644 |
| --- a/check/light_browser_test.go |
| +++ b/check/light_browser_test.go |
| @@ -31,7 +31,7 @@ func lightDoc(t *testing.T) map[string]string { |
| return pages |
| } |
| -// lightFollows reads the mode the shipped file is in (C9's fallback |
| +// lightFollows reads the mode the shipped file is in (the FOLLOW fallback |
| // flips it), so the drives assert the behaviour of the file that ships. |
| func lightFollows() bool { return strings.Contains(string(lightJS()), "var FOLLOW = true") } |
| @@ -98,7 +98,7 @@ func openLight(t *testing.T, ctx context.Context, rig *harness.Rig, reduce bool) |
| mustRun(t, ctx, chromedp.Evaluate(`new Promise(r => addEventListener("load", r, {once: true}) || document.readyState === "complete" && r())`, nil, awaitPromise)) |
| } |
| -// TestTheLightFollowsThePointerAndSettles (spec §4, C9, A2): in FOLLOW |
| +// TestTheLightFollowsThePointerAndSettles (spec §4): in FOLLOW |
| // mode a move to the right edge raises --rst-light-x toward 1 and the |
| // loop stops once settled; in hour mode the light is the hour's and a |
| // move leaves it; either way the button under the pointer takes |
| @@ -156,13 +156,13 @@ func TestTheLightFollowsThePointerAndSettles(t *testing.T) { |
| var writes int |
| mustRun(t, ctx, chromedp.Evaluate(`new Promise(r => { let n = 0; const o = new MutationObserver(m => n += m.length); o.observe(document.documentElement, {attributes: true, attributeFilter: ["style"]}); setTimeout(() => { o.disconnect(); r(n); }, 400); })`, &writes, awaitPromise)) |
| if writes != 0 { |
| - t.Errorf("the loop wrote <html> style %d times after settling; it must stop (C9)", writes) |
| + t.Errorf("the loop wrote <html> style %d times after settling; it must stop", writes) |
| } |
| }) |
| } |
| } |
| -// TestReducedMotionIsTotal (C8): under reduce nothing is written; when |
| +// TestReducedMotionIsTotal: under reduce nothing is written; when |
| // the setting turns off mid-session the script starts; when it turns |
| // on again the loop stops, a pending card timeout is cancelled, and |
| // every property is cleared, including on a card that was tapped just |
| @@ -231,7 +231,7 @@ func TestACardBreathes(t *testing.T) { |
| if !(early > 0.05 && early < 0.9 && late > 0.9) { |
| t.Errorf("card lit %v after 300ms and %v after 1.5s; want a fade in over about a second", early, late) |
| } |
| - // The rim follows the pointer in every mode (C9's fallback drops |
| + // The rim follows the pointer in every mode (the FOLLOW fallback drops |
| // the root light only): 100px further right inside the card, the |
| // spot has walked there a second later. |
| move(t, ctx, bx+140, by+20) |
| @@ -325,7 +325,7 @@ func TestTheHookFreezesTheLight(t *testing.T) { |
| } |
| } |
| -// TestATouchPressShowsNoSheen (A2): on a coarse pointer a held button |
| +// TestATouchPressShowsNoSheen: on a coarse pointer a held button |
| // has its press point and no sheen layer. |
| func TestATouchPressShowsNoSheen(t *testing.T) { |
| rig := sizingRig(t, true, lightDoc(t)) |
| @@ -347,7 +347,7 @@ func TestATouchPressShowsNoSheen(t *testing.T) { |
| mustRun(t, ctx, input.DispatchTouchEvent(input.TouchEnd, nil)) |
| } |
| -// lightFrameBudgetMS is C9's budget on what light.js adds: style |
| +// lightFrameBudgetMS is the spec's budget on what light.js adds: style |
| // recalculation, layout, pre-paint and paint per frame while the |
| // pointer moves over a 500-row list, summed as thread time from the |
| // browser's own trace events, on the page with the script minus the |
| @@ -363,7 +363,7 @@ func TestATouchPressShowsNoSheen(t *testing.T) { |
| // PASS; FOLLOW = true 2.46 added, FAIL), so 2ms holds the shipped mode |
| // with its headroom halved |
| // under load, keeps the fallback's verdict on the other, and sits at |
| -// half of what C9 allows. |
| +// half of what the spec allows. |
| const lightFrameBudgetMS = 2.0 |
| // traceCategories are the ones that carry the rendering events this |
| @@ -374,7 +374,7 @@ const lightFrameBudgetMS = 2.0 |
| // summed to a passing zero. |
| var traceCategories = []string{"devtools.timeline", "blink", "disabled-by-default-devtools.timeline"} |
| -// TestTheLightStaysWithinItsFrameBudget (C9): two seconds of pointer |
| +// TestTheLightStaysWithinItsFrameBudget: two seconds of pointer |
| // movement over 500 rows, a move every 16ms, on the page with light.js |
| // and again on the same page without it. The trace's UpdateLayoutTree |
| // (style), Layout, PrePaint and Paint thread time inside the marked |
| @@ -541,12 +541,12 @@ func TestTheLightStaysWithinItsFrameBudget(t *testing.T) { |
| // Only the frame cost takes the cheapest window: the coalescing and |
| // long-task rules are held on every window, here in the closure. |
| // Keeping the cheapest window's long-task count let a first window |
| - // with a long task pass behind a clean faster one (Astra A5), and a |
| + // with a long task pass behind a clean faster one (a review finding), and a |
| // long task in a slow window is a long task a reader saw; by thread |
| // time, a task that did 50ms of work, not one that waited that long. |
| with, without := cheapestWindows(func(path string) budgetWindow { |
| pf, wpf, f, writes, w := window(path) |
| - t.Logf("C9 %s: %.2f ms of style+layout+paint thread time per frame (%.2f wall) over %d frames (%d root writes, %d of %d tasks over 50ms of thread time, events %v, ms %v)", side(path), pf, wpf, f, writes, w.Long, w.Tasks, w.Counts, w.Sums) |
| + t.Logf("frame budget %s: %.2f ms of style+layout+paint thread time per frame (%.2f wall) over %d frames (%d root writes, %d of %d tasks over 50ms of thread time, events %v, ms %v)", side(path), pf, wpf, f, writes, w.Long, w.Tasks, w.Counts, w.Sums) |
| if writes > 2*f { |
| t.Errorf("%s: <html> style written %d times in %d frames; moves must be coalesced to one update (two properties) a frame", side(path), writes, f) |
| } |
| @@ -562,9 +562,9 @@ func TestTheLightStaysWithinItsFrameBudget(t *testing.T) { |
| } |
| } |
| delta := with.perFrame - without.perFrame |
| - t.Logf("C9: light.js adds %.2f ms a frame (%.2f with, %.2f without), budget %.1f", delta, with.perFrame, without.perFrame, lightFrameBudgetMS) |
| + t.Logf("frame budget: light.js adds %.2f ms a frame (%.2f with, %.2f without), budget %.1f", delta, with.perFrame, without.perFrame, lightFrameBudgetMS) |
| if delta > lightFrameBudgetMS { |
| - t.Errorf("light.js adds %.2f ms a frame of style+layout+paint (%.2f with it, %.2f without), over the %.1f ms budget (C9): set FOLLOW = false in light.js and record why", delta, with.perFrame, without.perFrame, lightFrameBudgetMS) |
| + t.Errorf("light.js adds %.2f ms a frame of style+layout+paint (%.2f with it, %.2f without), over the %.1f ms budget: set FOLLOW = false in light.js and record why", delta, with.perFrame, without.perFrame, lightFrameBudgetMS) |
| } |
| } |
| @@ -576,17 +576,17 @@ func side(path string) string { |
| return "without light.js" |
| } |
| -// TestALeaveAfterAQueuedMoveNeverRelightsACard is Astra A6: a move over |
| -// a card and the document's pointerleave in the same task, before the |
| -// frame that would read the move. onLeave dims every lit card; it must |
| -// also drop the queued move, or the next frame reads it and lights the |
| -// card the pointer has just left, and the card settles lit with no |
| -// pointer on the page. The move is a synthetic PointerEvent on the |
| -// card, because the harness's mouse cannot leave the document between |
| -// two frames; the leave is the document event the script listens for. |
| -// The control is the same move without the leave, which must light the |
| -// card, so a quiet card above is the leave's doing and not a move that |
| -// never arrived. |
| +// TestALeaveAfterAQueuedMoveNeverRelightsACard is the leave-after-move |
| +// finding: a move over a card and the document's pointerleave in the |
| +// same task, before the frame that would read the move. onLeave dims |
| +// every lit card; it must also drop the queued move, or the next frame |
| +// reads it and lights the card the pointer has just left, and the card |
| +// settles lit with no pointer on the page. The move is a synthetic |
| +// PointerEvent on the card, because the harness's mouse cannot leave |
| +// the document between two frames; the leave is the document event the |
| +// script listens for. The control is the same move without the leave, |
| +// which must light the card, so a quiet card above is the leave's |
| +// doing and not a move that never arrived. |
| func TestALeaveAfterAQueuedMoveNeverRelightsACard(t *testing.T) { |
| rig := sizingRig(t, false, lightDoc(t), harness.WithHover()) |
| ctx, cancel := context.WithTimeout(rig.Context(), 60*time.Second) |
| @@ -606,16 +606,16 @@ func TestALeaveAfterAQueuedMoveNeverRelightsACard(t *testing.T) { |
| } |
| } |
| -// TestAPreferenceToggleForgetsSettledCards is Astra A7: a card lit and |
| -// settled, reduced motion turned on (stop() clears every property the |
| -// script wrote), the pointer gone elsewhere while nothing listens, |
| -// reduced motion off again (start()), and the pointer back on the |
| -// same spot, to the pixel: the card lights again. Its state used to |
| -// outlive stop() in the cards WeakMap with l = 1 and still = true, so |
| -// the next light() found nothing left to ease and wrote nothing, and |
| -// the card stayed dark for good; a return a pixel off would ease the |
| -// spot and write, which is why the return is exact. Forced colours |
| -// take the same path through stop(). |
| +// TestAPreferenceToggleForgetsSettledCards is the preference-toggle |
| +// finding: a card lit and settled, reduced motion turned on (stop() |
| +// clears every property the script wrote), the pointer gone elsewhere |
| +// while nothing listens, reduced motion off again (start()), and the |
| +// pointer back on the same spot, to the pixel: the card lights again. |
| +// Its state used to outlive stop() in the cards WeakMap with l = 1 |
| +// and still = true, so the next light() found nothing left to ease |
| +// and wrote nothing, and the card stayed dark for good; a return a |
| +// pixel off would ease the spot and write, which is why the return is |
| +// exact. Forced colours take the same path through stop(). |
| func TestAPreferenceToggleForgetsSettledCards(t *testing.T) { |
| rig := sizingRig(t, false, lightDoc(t), harness.WithHover()) |
| ctx, cancel := context.WithTimeout(rig.Context(), 60*time.Second) |
diff --git a/check/light_test.go b/check/light_test.go| index ca334c1..a4c27c0 100644 |
| --- a/check/light_test.go |
| +++ b/check/light_test.go |
| @@ -298,7 +298,7 @@ type budgetWindow struct { |
| // minima are compared: the absolute drive stopped at the first window |
| // within budget, and for a difference that is unsafe, because load |
| // that inflates a bare window makes the subtraction pass more easily |
| -// (Astra, day-followups review 2). |
| +// (from rastrillo's day follow-ups review). |
| func cheapestWindows(measure func(path string) budgetWindow, tries int) (with, without budgetWindow) { |
| sides := map[string]*budgetWindow{} |
| for try := 1; try <= tries; try++ { |
| @@ -312,7 +312,7 @@ func cheapestWindows(measure func(path string) budgetWindow, tries int) (with, w |
| return *sides["/"], *sides["/bare"] |
| } |
| -// TestCheapestWindowsTakeEveryWindow (Astra, day-followups review 2): |
| +// TestCheapestWindowsTakeEveryWindow: |
| // load that inflates a bare window makes a subtraction pass more |
| // easily, so a selection that stops at the first pair within budget |
| // accepts 3.2 minus an inflated 2.0 where the cheapest windows say 3.2 |
diff --git a/check/markup_v3_browser_test.go b/check/markup_v3_browser_test.go| index 87e944b..d4add7b 100644 |
| --- a/check/markup_v3_browser_test.go |
| +++ b/check/markup_v3_browser_test.go |
| @@ -7,7 +7,7 @@ package check |
| // spelling is compared against. It ends at the file's end. |
| // The evidence for stage 1 of the markup migration (design spec §6-v3), |
| -// from rastrillo's ui/markup_v3_browser_test.go at SEED. |
| +// from rastrillo's ui/markup_v3_browser_test.go at the seed commit. |
| // |
| // The untagged spelling gates prove the two spellings are paired in the |
| // text of tokens.css and weigh the same on paper. That is a string |
| @@ -52,7 +52,7 @@ import ( |
| // ── The fixture ────────────────────────────────────────────────────── |
| // classFixture is the whole fixture in the class spelling, seeded from |
| -// SEED's classSpelling(t, classFixture(t)): the extras that the |
| +// rastrillo's classSpelling(t, classFixture(t)): the extras that the |
| // partials and the styleguide samples between them do not reach (the |
| // button and badge variants, the three tones in both their spellings, |
| // the card corner rules that are wrapped in :where(), the compact |
| @@ -200,7 +200,7 @@ type styleDetail struct { |
| // fixture in both vocabularies. |
| func TestBothSpellingsComputeTheSameStyles(t *testing.T) { |
| // The seeded fixture is the whole page in the class spelling, as |
| - // SEED translated it back from the partials and the styleguide, |
| + // rastrillo translated it back from the partials and the styleguide, |
| // which write attributes since the stage-2 flip, plus a hand-written |
| // block that was always in classes; it is translated forward here. |
| // Everything that survives the round trip unchanged is markup |
diff --git a/check/matrix_browser_test.go b/check/matrix_browser_test.go| index 219563a..d1bcab9 100644 |
| --- a/check/matrix_browser_test.go |
| +++ b/check/matrix_browser_test.go |
| @@ -24,14 +24,14 @@ import ( |
| ) |
| // The two promises this file holds, pixel for pixel: an app that takes |
| -// the new tokens.css and keeps its old theme renders as it did (C2, |
| -// A15), and plain and signal render as they did (A13). The page is the |
| +// the new tokens.css and keeps its old theme renders as it did, |
| +// and plain and signal render as they did. The page is the |
| // depth fixture; it is photographed once per state set (rest, hovered, |
| // pressed, focused and current) under the v0.28 stylesheet pair and |
| // under the new one, and every component is cropped out of each shot |
| // with a margin for its shadow; the two crops must agree. Antialiasing |
| // at a rounded corner differs where a hairline is now painted by a |
| -// gradient instead of a border colour (A9): Chromium antialiases the |
| +// gradient instead of a border colour: Chromium antialiases the |
| // inner corners of the padding-box clip under a transparent border |
| // differently from an opaque border's inner edge, measured at 9 to 16 |
| // units on 2 to 10 pixels per card, in every theme, with the straight |
| @@ -323,15 +323,14 @@ func matrixShots(t *testing.T, ctx context.Context, origin, dir, scheme string) |
| // tokens with the old day, plain and signal) against the old tokens |
| // with the same old theme, and for plain and signal also the new tokens |
| // with the NEW theme against the old pair: those two must not change at |
| -// all (A13). Its sensitivity is proved by the negative control at the |
| +// all. Its sensitivity is proved by the negative control at the |
| // end, which breaks compatibility on purpose and must be caught. |
| func TestEveryThemeRendersAsItDidExceptDay(t *testing.T) { |
| oldTokens := legacyFile(t, "tokens-v028.css") |
| // head is an app stylesheet after the theme on both pages: the |
| // square-pill case is an old custom theme that sets --rst-radius-pill |
| // to 0 (its chips and tabs square), which must not square its |
| - // switch, whose 10px radius never read that token (A15; switch |
| - // review fix 2). |
| + // switch, whose 10px radius never read that token. |
| for _, c := range []struct{ name, oldTheme, newTheme, head string }{ |
| {"old day theme", "day-v028.css", "", ""}, |
| {"old day theme, square pill", "day-v028.css", "", "<style>:root { --rst-radius-pill: 0; }</style>"}, |
diff --git a/check/mediagrid_browser_test.go b/check/mediagrid_browser_test.go| index 9e65e9d..1717dd3 100644 |
| --- a/check/mediagrid_browser_test.go |
| +++ b/check/mediagrid_browser_test.go |
| @@ -1,9 +1,9 @@ |
| //go:build browser |
| // The media grid's frames, its tile as the target and its no-script |
| -// selection, from rastrillo's ui/mediagrid_browser_test.go at SEED, its |
| -// page read through fixture. fixtureImages, the catch-all /images/ |
| -// handler, lives in rig_browser_test.go. |
| +// selection, from rastrillo's ui/mediagrid_browser_test.go at the |
| +// seed commit, its page read through fixture. fixtureImages, the |
| +// catch-all /images/ handler, lives in rig_browser_test.go. |
| package check |
| import ( |
diff --git a/check/menus_browser_test.go b/check/menus_browser_test.go| index 6c648a9..aca062c 100644 |
| --- a/check/menus_browser_test.go |
| +++ b/check/menus_browser_test.go |
| @@ -1,9 +1,9 @@ |
| //go:build browser |
| // The menu idioms, the modal panel, the busy rule and the name cell in |
| -// a browser: the A half of rastrillo's ui/browser_test.go at SEED, |
| +// a browser: the A half of rastrillo's ui/browser_test.go at the seed commit, |
| // each drive reading its page through fixture so the page it drives |
| -// is the page the SEED drive drove. The select and date journeys that |
| +// is the page the rastrillo drive drove. The select and date journeys that |
| // made up the file's other half are ported beside the scripts they |
| // drive. |
| package check |
| @@ -288,9 +288,10 @@ func TestGroupedSelectRendersItsGroups(t *testing.T) { |
| // list grid, a nested rst-menu-group inside the dropdown, the sidebar's |
| // chrome strip and a toggle-block. |
| // |
| -// Hand-assembled at SEED rather than rendered from the samples because |
| -// the two shell samples are whole page frames that cannot both be on |
| -// one page, and because the drive needs stable ids to click. |
| +// Hand-assembled at the seed commit rather than rendered from the |
| +// samples because the two shell samples are whole page frames that |
| +// cannot both be on one page, and because the drive needs stable ids |
| +// to click. |
| func menuPage(t *testing.T) http.Handler { |
| t.Helper() |
| // The mid-upgrade window, in the one spelling this repository no |
| @@ -548,9 +549,9 @@ func TestMenuExclusivityAndDropdownDismissDrive(t *testing.T) { |
| } |
| // modalPage serves the modal sample as a real page, exactly as |
| -// rastrillo's Styleguide()["modal"] wrote it at SEED (the same markup |
| -// is the modal example's default state), so the drive reads the |
| -// shipped markup rather than a copy of it. |
| +// rastrillo's Styleguide()["modal"] wrote it at the seed commit |
| +// (the same markup is the modal example's default state), so |
| +// the drive reads the shipped markup rather than a copy of it. |
| func modalPage(t *testing.T) http.Handler { |
| t.Helper() |
| return sizingMux(t, map[string]string{"/": fixture(t, "browser_test.go", "modalPage", "")}) |
| @@ -842,7 +843,7 @@ const extBackStateJS = `(function () { |
| func busyPage(t *testing.T) (http.Handler, chan string) { |
| t.Helper() |
| payloads := make(chan string, 8) |
| - // SEED's handler answered every GET path with the busy page, and |
| + // rastrillo's handler answered every GET path with the busy page, and |
| // the hold leg leaves for /elsewhere and comes back; the shared mux |
| // answers one path per page, so both are the busy page here. |
| page := fixture(t, "browser_test.go", "busyPage", "") |
diff --git a/check/pagination_browser_test.go b/check/pagination_browser_test.go| index 8efd611..9a15d26 100644 |
| --- a/check/pagination_browser_test.go |
| +++ b/check/pagination_browser_test.go |
| @@ -1,7 +1,8 @@ |
| //go:build browser |
| // The pagination strip on a phone and on a desktop, from rastrillo's |
| -// ui/pagination_browser_test.go at SEED, its page read through fixture. |
| +// ui/pagination_browser_test.go at the seed commit, its page read |
| +// through fixture. |
| package check |
| import ( |
| @@ -20,7 +21,7 @@ import ( |
| // chevrons, the page numbers, … for an ellipsis. "mid" is the gallery's |
| // sample. "flat" lists every page with no gaps, the way the generated |
| // list actions do, so the phone's ellipses there are the partial's own. |
| -// Each comment is the strip as SEED's pageStrip(current, shown...) |
| +// Each comment is the strip as rastrillo's pageStrip(current, shown...) |
| // built it: Previous, the pages shown with a gap wherever a run is |
| // skipped, and Next, disabled at either end. |
| var paginationCases = []struct { |
diff --git a/check/prerender_browser_test.go b/check/prerender_browser_test.go| index 3563019..4e1d602 100644 |
| --- a/check/prerender_browser_test.go |
| +++ b/check/prerender_browser_test.go |
| @@ -31,8 +31,8 @@ const speculationRulesPath = "/_speculation-rules" |
| // CSP never stops it loading, which is how rastrillo delivers it. |
| const speculationRules = `{"prerender":[{"source":"document","where":{"selector_matches":":is([rst-shell-sidebar~=page],[rst-shell-sidebar~=index],[rst-shell-console~=page],[rst-shell-console~=index],.rst-shell-sidebar--page,.rst-shell-sidebar--index,.rst-shell-console--page,.rst-shell-console--index) :is([rst-shell-nav],[rst-shell-back],.rst-shell__nav,.rst-shell__back) a[href]"},"eagerness":"moderate"}]}` |
| -// prerenderSite is the sidebar app SEED's drives served through |
| -// rastrillo's handler, read from the seeded pages: the index, three |
| +// prerenderSite is the sidebar app rastrillo's drives served through |
| +// its handler, read from the seeded pages: the index, three |
| // sections, a plain link in the index's content, a stage page with a |
| // link on it, and a page in a sidebar layout copied before the phone |
| // index; every response carries the Speculation-Rules header, and the |
diff --git a/check/profile_browser_test.go b/check/profile_browser_test.go| index 6bb4012..20f4987 100644 |
| --- a/check/profile_browser_test.go |
| +++ b/check/profile_browser_test.go |
| @@ -17,10 +17,10 @@ import ( |
| "amadan.net/rastrillo/fiesta/internal/harness" |
| ) |
| -// profilePage is one page of this file's drives as SEED rendered it, |
| +// profilePage is one page of this file's drives as rastrillo rendered it, |
| // by the drive's name and the page's case: a layout with the drives' |
| // standard nav (Invoices, Orders, Team) and language menu |
| -// (#rail-locale, English and Gaeilge), and the blocks SEED's |
| +// (#rail-locale, English and Gaeilge), and the blocks rastrillo's |
| // profileDefs filled for the profile menu: the app's name as the |
| // brand, Grace Hopper as the person, the account's links (#acct-profile |
| // and #acct-out), and a heading with a link in the page (#main-link). |
diff --git a/check/rig_browser_test.go b/check/rig_browser_test.go| index 27a87f1..df780d5 100644 |
| --- a/check/rig_browser_test.go |
| +++ b/check/rig_browser_test.go |
| @@ -3,7 +3,7 @@ |
| // The drive helpers every browser test in this package shares: the |
| // fixture server, the depth page, the pseudo-state inspector, the |
| // probes and the readers. Ported from rastrillo's ui/ test files at |
| -// SEED, each with every dependency it reaches, so the drives that |
| +// the seed commit, each with every dependency it reaches, so the drives that |
| // follow can be ported without them. |
| package check |
| @@ -95,7 +95,7 @@ func sizingMuxWith(t *testing.T, pages map[string]string, scripts func(name stri |
| }) |
| // One segment, after every literal page path: a page a drive |
| // registers at /x wins over this, so it only ever answers for a |
| - // script, or 404s for anything else, as the SEED mux did. |
| + // script, or 404s for anything else, as rastrillo's mux did. |
| mux.HandleFunc("GET /{file}", func(w http.ResponseWriter, r *http.Request) { |
| serveScript(w, r, r.PathValue("file")) |
| }) |
diff --git a/check/rowmenu_browser_test.go b/check/rowmenu_browser_test.go| index a0cb3d8..6208126 100644 |
| --- a/check/rowmenu_browser_test.go |
| +++ b/check/rowmenu_browser_test.go |
| @@ -1,8 +1,9 @@ |
| //go:build browser |
| // The row menu: its native exclusivity, dismissal, flip, spinner slot |
| -// and placement, from rastrillo's ui/rowmenu_browser_test.go at SEED, |
| -// its pages read through fixture. mustRun lives in rig_browser_test.go. |
| +// and placement, from rastrillo's ui/rowmenu_browser_test.go at the |
| +// seed commit, its pages read through fixture. mustRun lives in |
| +// rig_browser_test.go. |
| package check |
| import ( |
diff --git a/check/rows_browser_test.go b/check/rows_browser_test.go| index d952175..cf311fa 100644 |
| --- a/check/rows_browser_test.go |
| +++ b/check/rows_browser_test.go |
| @@ -1,9 +1,10 @@ |
| //go:build browser |
| // The whole-row target and the rows around it, from rastrillo's |
| -// ui/rows_browser_test.go at SEED, each page read through fixture so |
| -// the rows driven are the rows the SEED drive drove. The probes (at, |
| -// probe, point) live in rig_browser_test.go. |
| +// ui/rows_browser_test.go at the seed commit, each page read |
| +// through fixture so the rows driven are the rows the rastrillo |
| +// drive drove. The probes (at, probe, point) live in |
| +// rig_browser_test.go. |
| package check |
| import ( |
diff --git a/check/scheme_browser_test.go b/check/scheme_browser_test.go| index 2865986..f8274d2 100644 |
| --- a/check/scheme_browser_test.go |
| +++ b/check/scheme_browser_test.go |
| @@ -23,12 +23,12 @@ import ( |
| "amadan.net/rastrillo/fiesta/internal/harness" |
| ) |
| -// schemeMenu is the scheme-menu partial's markup at SEED, by hand: a |
| -// dropdown of three one-field forms, System current, no script. Task 5 |
| -// adds the example's standalone state, which carries the same shape. |
| -// The forms name no action, so a submit fiesta.js failed to take would |
| -// POST to the page itself and the fixture server would answer 405, |
| -// which the harness reports. |
| +// schemeMenu is the scheme-menu partial's markup at the seed commit, |
| +// by hand: a dropdown of three one-field forms, System current, no |
| +// script. The scheme-menu example's standalone state carries the same |
| +// shape. The forms name no action, so a submit fiesta.js failed to |
| +// take would POST to the page itself and the fixture server would |
| +// answer 405, which the harness reports. |
| const schemeMenu = `<details rst-dropdown rst-scheme name="rst-menus"> |
| <summary>Colour scheme</summary> |
| <div rst-dropdown-menu role="group" aria-label="Colour scheme"> |
| @@ -111,11 +111,11 @@ func chooseScheme(t *testing.T, ctx context.Context, scheme string) { |
| } |
| // driveSchemeRemember is the body of TestAStandaloneSchemeSurvivesAReload, |
| -// against any rig that serves schemePages (Task 12 drives it with the |
| -// release's scripts). Dark is chosen in place: the attribute changes, |
| -// the key is stored, no cookie is written, the menu closes and nothing |
| -// navigates. A reload paints Dark again and marks its button, which |
| -// can only have come from storage. System undoes all of it, reload |
| +// against any rig that serves schemePages (internal/build's drives run it |
| +// with the release's scripts). Dark is chosen in place: the attribute |
| +// changes, the key is stored, no cookie is written, the menu closes and |
| +// nothing navigates. A reload paints Dark again and marks its button, |
| +// which can only have come from storage. System undoes all of it, reload |
| // included. |
| func driveSchemeRemember(t *testing.T, rig *harness.Rig) { |
| t.Helper() |
| @@ -424,17 +424,17 @@ func TestASchemeFlipLandsOnTheNextFrame(t *testing.T) { |
| check("System, OS dark to light", got, schemeFlipState{Nav: light.Nav, Tile: light.Tile}) |
| } |
| -// TestASchemeFlipLandsWhileHovered is Astra A3's residual (#104 item |
| -// 2): a tile and a rail item under the pointer, with their hover tint |
| -// settled, when an app's own script flips data-theme the way an app's |
| -// switch does (no shipped switch, so nothing cancels a transition). |
| -// The hover tint used to be a background-color transition, and a flip |
| -// retargeted it: the one item under the pointer faded for 0.2 to |
| -// 0.25s while its text changed at once. The tint now rides a |
| -// registered percentage and is re-resolved from the scheme every |
| -// frame, so the very next frame's background is the value the item |
| -// settles to. Light to dark on the tile, dark to light on the rail |
| -// item, each with the mouse really over it. |
| +// TestASchemeFlipLandsWhileHovered is the hovered case of the flip |
| +// finding (rastrillo issue #104): a tile and a rail item under the |
| +// pointer, with their hover tint settled, when an app's own script |
| +// flips data-theme the way an app's switch does (no shipped switch, |
| +// so nothing cancels a transition). The hover tint used to be a |
| +// background-color transition, and a flip retargeted it: the one item |
| +// under the pointer faded for 0.2 to 0.25s while its text changed at |
| +// once. The tint now rides a registered percentage and is re-resolved |
| +// from the scheme every frame, so the very next frame's background is |
| +// the value the item settles to. Light to dark on the tile, dark to |
| +// light on the rail item, each with the mouse really over it. |
| func TestASchemeFlipLandsWhileHovered(t *testing.T) { |
| body := strings.Replace(schemeFlipBody, `<a href="#x">`, `<a href="#x" id="nav-x">`, 1) |
| rig := sizingRig(t, false, map[string]string{"/": sizingDoc("hovered scheme flip", body)}, harness.WithHover()) |
| @@ -488,7 +488,7 @@ func TestASchemeFlipLandsWhileHovered(t *testing.T) { |
| // schemeFlipReadJS, for the OS flip (see the test). |
| const schemeFlipSecondFrameJS = `new Promise(r => requestAnimationFrame(() => r(` + schemeFlipReadJS + `)))` |
| -// TestAnAppsOwnSchemeSwitchLandsAtRest is Astra A3: the shipped switch |
| +// TestAnAppsOwnSchemeSwitchLandsAtRest: the shipped switch |
| // lands a flip by cancelling the running transitions (land(), above), |
| // but an app that sets data-theme from its own script, or that took |
| // the new stylesheets with an old fiesta.js, never calls it. The |
diff --git a/check/scripts_test.go b/check/scripts_test.go| index 2f1fd66..8d7de63 100644 |
| --- a/check/scripts_test.go |
| +++ b/check/scripts_test.go |
| @@ -25,10 +25,10 @@ func fiestaJS(t *testing.T) []byte { |
| // and in Node (fiesta_node.mjs, below). What a Go test can hold honest |
| // is the contract the docs promise: the vocabulary the file answers to, |
| // its inert-by-default IIFE shape, and the absence of anything a CSP |
| -// would reject. Ported from rastrillo's ui/shim_test.go at SEED: the |
| -// polling strings are gone with the polling, and the cookie strings |
| -// are replaced by Fiesta's own contract, the event, the storage key, |
| -// the ownership attribute and the store. |
| +// would reject. Ported from rastrillo's ui/shim_test.go at the seed |
| +// commit: the polling strings are gone with the polling, and the cookie |
| +// strings are replaced by Fiesta's own contract, the event, the storage |
| +// key, the ownership attribute and the store. |
| func TestShimContract(t *testing.T) { |
| js := string(fiestaJS(t)) |
| for _, want := range []string{ |
| @@ -63,7 +63,7 @@ func TestShimContract(t *testing.T) { |
| // says the page remembers, and the store it remembers in. |
| `"[rst-scheme],.rst-scheme"`, "data-theme", |
| `"rst-scheme"`, `"fiesta-scheme"`, "data-rst-scheme-store", "localStorage", |
| - // The iOS touch listener (A3): :active lands on a tap only when |
| + // The iOS touch listener: :active lands on a tap only when |
| // a touchstart listener exists, and this file owns it so an app |
| // that deletes light.js keeps its pressed states. |
| `addEventListener("touchstart", function () {}, { passive: true })`, |
diff --git a/check/shell_browser_test.go b/check/shell_browser_test.go| index 44d8f9b..d745439 100644 |
| --- a/check/shell_browser_test.go |
| +++ b/check/shell_browser_test.go |
| @@ -14,9 +14,9 @@ |
| // is static markup plus tokens.css and a theme, and the only |
| // interaction is a click on a <details> summary, which the browser |
| // handles synchronously. The pages are the ones rastrillo's drives |
| -// rendered at SEED, read through fixture (testdata/fixtures/), and the |
| -// two routes every page links come from stylesheets |
| -// (rig_browser_test.go). |
| +// rendered at the seed commit, read through fixture |
| +// (testdata/fixtures/), and the two routes every page links come |
| +// from stylesheets (rig_browser_test.go). |
| package check |
| import ( |
| @@ -36,7 +36,7 @@ import ( |
| ) |
| // shellPiece is one seeded piece of this file's pages: the partial a |
| -// drive rendered at SEED, by the drive's name and the piece's. |
| +// drive rendered at the seed commit, by the drive's name and the piece's. |
| func shellPiece(t *testing.T, test, piece string) string { |
| t.Helper() |
| return fixture(t, "shell_browser_test.go", test, piece) |
| @@ -75,7 +75,7 @@ type clipReading struct { |
| // not leave the first and last rows square inside a rounded card, so |
| // the corner radii are read back off the engine too. |
| func TestAMenuOpenedInsideAListCardEscapesTheCard(t *testing.T) { |
| - // The bulk bar as SEED rendered it: three selected, an Actions menu |
| + // The bulk bar as rastrillo rendered it: three selected, an Actions menu |
| // of Export, Unpublish and a dangerous Delete. |
| bulkBar := shellPiece(t, "TestAMenuOpenedInsideAListCardEscapesTheCard", "bulk-bar") |
| @@ -265,7 +265,7 @@ const railMeasure = `(() => { |
| // page and the same menu sits at the top beside the heading: the foot |
| // is at the top of the rail and the open card stays on screen. |
| func TestTheSidebarRailPutsThePersonAtItsFootAndTheProfileMenuOpensUpward(t *testing.T) { |
| - // The sidebar shell as SEED's drive rendered it: a two-link nav, |
| + // The sidebar shell as rastrillo's drive rendered it: a two-link nav, |
| // Grace Hopper as the person, one account link (#acct-profile) and |
| // the language menu (#rail-locale, English and Gaeilge). Three |
| // pages: the content page, the index (the view written as index), |
| @@ -527,7 +527,7 @@ type barReading struct { |
| // leaves them. So everything here is <details>, a media query and two |
| // display rules, which is the claim §9 makes. |
| func TestTheTopbarCollapsesItsTailBehindOneDisclosure(t *testing.T) { |
| - // The topbar shell as SEED's drive rendered it: a two-link nav, two |
| + // The topbar shell as rastrillo's drive rendered it: a two-link nav, two |
| // account links, the language menu as #bar-locale, and the scheme |
| // menu the layout ships, which the four-row count below includes. |
| html := shellPiece(t, "TestTheTopbarCollapsesItsTailBehindOneDisclosure", "") |
| @@ -753,7 +753,7 @@ func (c cornerReading) uniform() bool { |
| // measured, because --rst-radius and --rst-radius-sm differ between them |
| // and a rule that ties in one could win in another. |
| func TestSelfShapedChildrenKeepTheirCornersInsideACard(t *testing.T) { |
| - // list-bar-search as SEED rendered it, with /posts as its action. |
| + // list-bar-search as rastrillo rendered it, with /posts as its action. |
| searchForm := shellPiece(t, "TestSelfShapedChildrenKeepTheirCornersInsideACard", "list-bar-search") |
| // The partial wraps its form in the <search> landmark. Strip that |
| // wrapper: the bare form as a card's direct child is the case under |
| @@ -921,7 +921,7 @@ type menuCorner struct { |
| mid bool |
| } |
| -// Each corner's menu is the piece SEED's drive rendered for it: the |
| +// Each corner's menu is the piece rastrillo's drive rendered for it: the |
| // dropdown partial with twelve entries, except bl, which is the |
| // hand-written row menu (so the drive covers BOTH panels the rule |
| // names), and mid, which has three. |
| @@ -1378,7 +1378,7 @@ const clearMeasure = `(() => { |
| // field mirrors, which is a claim about logical properties and nothing |
| // else. |
| func TestClearingASearchIsALinkAndTheNativeCrossIsGone(t *testing.T) { |
| - // list-bar-search as SEED rendered it: action /posts, the query |
| + // list-bar-search as rastrillo rendered it: action /posts, the query |
| // "sere", the placeholder "Search posts", and status=paid carried |
| // as a hidden field. |
| search := shellPiece(t, "TestClearingASearchIsALinkAndTheNativeCrossIsGone", "search") |
| @@ -1550,7 +1550,7 @@ type frameReading struct { |
| // frame's own height. If a future engine changed that, this drive would |
| // otherwise keep passing while testing nothing. |
| func TestAMenuOpenedInsideAShortFrameIsStillUsable(t *testing.T) { |
| - // The two menus as SEED rendered them through the dropdown partial: |
| + // The two menus as rastrillo rendered them through the dropdown partial: |
| // short has three entries, long the twelve transliterated locales. |
| menus := map[string]string{ |
| "short": shellPiece(t, "TestAMenuOpenedInsideAShortFrameIsStillUsable", "short"), |
diff --git a/check/shells_browser_test.go b/check/shells_browser_test.go| index 269b31f..8569b12 100644 |
| --- a/check/shells_browser_test.go |
| +++ b/check/shells_browser_test.go |
| @@ -16,9 +16,9 @@ import ( |
| // with content in its slot (shellPage). Where it depends on chrome the |
| // examples do not have (a brand, a nav link's id, the language menu's |
| // id, a view written with whitespace, a layout from before the phone |
| -// index) the page is the one rastrillo's drive rendered at SEED, read |
| -// through fixture or legacyLayout, so the assertion keeps the page it |
| -// was written against. |
| +// index) the page is the one rastrillo's drive rendered at the seed |
| +// commit, read through fixture or legacyLayout, so the assertion keeps |
| +// the page it was written against. |
| // shellPage is the default state of the layout example called |
| // layout-<shell> with content in its slot, its asset links rewritten |
| @@ -45,7 +45,7 @@ func shellPage(t *testing.T, shell, content string) string { |
| } |
| // legacyLayout is a layout as it was before the phone index, rendered |
| -// at SEED with the drives' standard blocks and kept under |
| +// at the seed commit with the drives' standard blocks and kept under |
| // testdata/legacy/ so the legacy rules in tokens.css stay pinned to |
| // real markup. legacyFile (matrix_browser_test.go) does the reading. |
| func legacyLayout(t *testing.T, name string) string { |
| @@ -53,10 +53,10 @@ func legacyLayout(t *testing.T, name string) string { |
| return string(legacyFile(t, name+".html")) |
| } |
| -// shellAssets serves pages with everything a layout links. At SEED it |
| -// added shell.js and shell.css to the sizing mux; sizingMux serves |
| -// both here, with every other script in the tree, so this is the mux |
| -// under the name the drives call it by. |
| +// shellAssets serves pages with everything a layout links. At the |
| +// seed commit it added shell.js and shell.css to the sizing mux; |
| +// sizingMux serves both here, with every other script in the tree, |
| +// so this is the mux under the name the drives call it by. |
| func shellAssets(t *testing.T, pages map[string]string) *http.ServeMux { |
| t.Helper() |
| return sizingMux(t, pages) |
diff --git a/check/signin_browser_test.go b/check/signin_browser_test.go| index c4a990b..015e5f0 100644 |
| --- a/check/signin_browser_test.go |
| +++ b/check/signin_browser_test.go |
| @@ -1,11 +1,11 @@ |
| //go:build browser |
| // The sign-in card as the browser lays it out, from rastrillo's |
| -// ui/signin_browser_test.go at SEED, its pages read through fixture. |
| -// The live passkey cases link /static/passkey-signin.mjs, which SEED's |
| -// server answered with an empty script; this one does the same, so |
| -// the door is measured as a browser leaves it when the script finds no |
| -// WebAuthn, button still hidden. |
| +// ui/signin_browser_test.go at the seed commit, its pages read through |
| +// fixture. The live passkey cases link /static/passkey-signin.mjs, |
| +// which rastrillo's server answered with an empty script; this one |
| +// does the same, so the door is measured as a browser leaves it when |
| +// the script finds no WebAuthn, button still hidden. |
| package check |
| import ( |
| @@ -31,7 +31,7 @@ func signinPage(t *testing.T) http.Handler { |
| return signinServer(t, fixture(t, "signin_browser_test.go", "signinPage", "")) |
| } |
| -// signinDoc wraps a body in the bare document SEED's signinServer |
| +// signinDoc wraps a body in the bare document rastrillo's signinServer |
| // wrote around every page: the two stylesheets and nothing else. |
| func signinDoc(body string) string { |
| return `<!doctype html><html lang="en"><head><meta charset="utf-8">` + |
| @@ -193,7 +193,7 @@ const fitJS = `(function () { |
| // border is wider than the column it fills. Every state, live and in |
| // Preview (where the passkey button shows), at the two phone widths |
| // the gallery and WCAG's reflow measure. The seeded page holds every |
| -// state as SEED built it, in a <div id="case-<n>-<preview>"> each; |
| +// state as rastrillo built it, in a <div id="case-<n>-<preview>"> each; |
| // Continue's live page, which refreshes to keymail at once and would |
| // take the drive with it, is absent, and its Preview is the same card |
| // with the link pointing at #. |
diff --git a/check/sizing_browser_test.go b/check/sizing_browser_test.go| index 32f81ba..aa6745c 100644 |
| --- a/check/sizing_browser_test.go |
| +++ b/check/sizing_browser_test.go |
| @@ -1,12 +1,12 @@ |
| //go:build browser |
| // The touch-size drives from rastrillo's ui/sizing_browser_test.go at |
| -// SEED: the type step, the target floor, the icons inside controls, the |
| -// calendar's docking and the floor block's desktop neutrality, each |
| -// reading the sizing page through fixture so the page it measures is |
| -// the page the SEED drive measured. The readers the drives share |
| -// (readTargets, settleUntil, the type and font readers) live in |
| -// rig_browser_test.go. |
| +// the seed commit: the type step, the target floor, the icons inside |
| +// controls, the calendar's docking and the floor block's desktop |
| +// neutrality, each reading the sizing page through fixture so the |
| +// page it measures is the page the rastrillo drive measured. The |
| +// readers the drives share (readTargets, settleUntil, the type and |
| +// font readers) live in rig_browser_test.go. |
| package check |
| import ( |
| @@ -29,7 +29,7 @@ import ( |
| // test data, every styleguide sample except the modal, and the extras |
| // (small parents, the bare and primary inputs, the button scale, the |
| // language menu, the short labels and the icon-and-text controls), as |
| -// SEED's sizingFixture built it. The modal is its own page: its overlay |
| +// rastrillo's sizingFixture built it. The modal is its own page: its overlay |
| // is fixed over the whole viewport and would occlude every hit test on |
| // this one. |
| func sizingFixture(t *testing.T) string { |
| @@ -39,7 +39,7 @@ func sizingFixture(t *testing.T) string { |
| // modalSample is the modal the sizing drives measure on a page of its |
| // own: the index names it as the example state that carries the |
| -// markup SEED's Styleguide()["modal"] held. |
| +// markup rastrillo's Styleguide()["modal"] held. |
| func modalSample(t *testing.T, builder string) string { |
| t.Helper() |
| return fixtureExample(t, "sizing_browser_test.go", builder, "modal") |
diff --git a/check/sizing_test.go b/check/sizing_test.go| index 89f17b3..d4d9314 100644 |
| --- a/check/sizing_test.go |
| +++ b/check/sizing_test.go |
| @@ -486,7 +486,7 @@ func TestEveryInteractiveRuleIsInTheTapInventory(t *testing.T) { |
| t.Errorf("tokens.css styles a control no row of §1.4's inventory names:\n\t%s\n\tadd a floor rule and a tapInventory row, or say why it is exempt", r.selector) |
| } |
| } |
| - // Where SEED looked in its sizing fixture plus the modal sample, this |
| + // Where rastrillo looked in its sizing fixture plus the modal sample, this |
| // looks in the sizing fixture plus every example piece, the modal's |
| // among them: a marker no example carries is one no drive can reach. |
| fixture, err := os.ReadFile("testdata/fixtures/sizing.html") |
diff --git a/check/spelling_fixture_test.go b/check/spelling_fixture_test.go| index 6efc595..b0886dd 100644 |
| --- a/check/spelling_fixture_test.go |
| +++ b/check/spelling_fixture_test.go |
| @@ -12,7 +12,7 @@ import ( |
| // browser drive (markup_v3_browser_test.go) compares the fixture |
| // against markup.Respell of it; a fixture that already carried the |
| // attribute spelling in places would compare those elements against |
| -// themselves and prove nothing about them, which is what SEED's own |
| +// themselves and prove nothing about them, which is what rastrillo's own |
| // fixture did before it was translated back to classes. |
| // mappedAttributes is every rst- attribute name the grammar writes for |
| @@ -72,7 +72,7 @@ func mappedClassesIn(html string) []string { |
| // TestTheClassFixtureIsGenuinelyClassSpelled: the seeded class page |
| // holds no rst- attribute the grammar maps, its markup.Respell twin |
| // holds no class="rst-…" token the grammar maps, and the two differ. |
| -// SEED's fixture was the partials and the styleguide, which write |
| +// rastrillo's fixture was the partials and the styleguide, which write |
| // attributes, behind a hand-written block in classes; the seed is that |
| // fixture translated back whole, and this is what says the translation |
| // reached all of it. |
diff --git a/check/strings_test.go b/check/strings_test.go| index b614d34..1ec0995 100644 |
| --- a/check/strings_test.go |
| +++ b/check/strings_test.go |
| @@ -15,7 +15,7 @@ import ( |
| // The interface strings datetime.js and select.js put on screen, one |
| // flat JSON object per shipped language under i18n/, seeded from |
| -// rastrillo's catalogs at SEED and read through fiesta.Strings. The |
| +// rastrillo's catalogs at the seed commit and read through fiesta.Strings. The |
| // scripts look a string up in three places, in this order: the |
| // element's own data-rst- attribute, then the page's table |
| // (self.fiestaStrings, filled by i18n/<lang>.js, picked by the |
diff --git a/check/switch_browser_test.go b/check/switch_browser_test.go| index 275be4f..e846c5d 100644 |
| --- a/check/switch_browser_test.go |
| +++ b/check/switch_browser_test.go |
| @@ -305,7 +305,7 @@ func switchSheen(t *testing.T, ctx context.Context, sel string) (present bool, o |
| return true, v |
| } |
| -// TestTheKnobIsLitAndTheTrackSheenFollowsIt (spec §3, C13, A10): the |
| +// TestTheKnobIsLitAndTheTrackSheenFollowsIt (spec §3): the |
| // knob is a white-topped gradient in both schemes; the off track is |
| // --rst-track-off and the on track the accent fill; hovered, the on |
| // track's sheen sits over the knob, at the inline end in LTR and the |
diff --git a/check/switch_day_browser_test.go b/check/switch_day_browser_test.go| index b5ce3f6..232c8ad 100644 |
| --- a/check/switch_day_browser_test.go |
| +++ b/check/switch_day_browser_test.go |
| @@ -24,7 +24,7 @@ import ( |
| // in and the knob stands on a drop shadow that deepens on hover; the |
| // on colour follows the knob, dragged or clicked; a released knob |
| // settles at the nearer end with a firm curve. plain and signal keep |
| -// today's switch (A15). |
| +// today's switch. |
| // swapTheme replaces the page's theme stylesheet with the named |
| // theme's CSS, inline, so one page can be read under every theme. |
| @@ -50,7 +50,7 @@ const daySwitchBody = `<div rst-page><p><label rst-switch id="on"><input type="c |
| // pointer and one for a coarse one, and the knob's travel follows from |
| // them. day is 40x23 with a 19px knob under a mouse and 51x31 with a |
| // 27px knob on a touch screen, the toggle block's head the same; plain |
| -// and signal are 34x19 with a 15px knob under both (A15). The label's |
| +// and signal are 34x19 with a 15px knob under both. The label's |
| // minimum block size, the target floor, is not the switch's to change. |
| func TestTheSwitchTakesItsSizeFromTheTheme(t *testing.T) { |
| type size struct{ W, H, K, Run float64 } |
| @@ -134,7 +134,7 @@ func paintsNothing(v string) bool { return painted(v) == nil } |
| // same. A disabled switch hovered keeps its rest shadow. plain and |
| // signal declare no depth: their track paints no shadow, and their |
| // knob paints its own theme shadow, the same layers hovered as at |
| -// rest (A15). Frozen first, for forceState. |
| +// rest. Frozen first, for forceState. |
| func TestTheTrackSitsInAndTheKnobLiftsOnHover(t *testing.T) { |
| rig := sizingRig(t, false, map[string]string{"/": sizingDoc("switch depth", daySwitchBody)}, harness.WithHover()) |
| ctx, cancel := context.WithTimeout(rig.Context(), 60*time.Second) |
diff --git a/check/testdata/fixtures/index.json b/check/testdata/fixtures/index.json| index 49eddb6..693d15b 100644 |
| --- a/check/testdata/fixtures/index.json |
| +++ b/check/testdata/fixtures/index.json |
| @@ -140,7 +140,7 @@ |
| "path": "scheme_browser_test/schemeApp.html", |
| "kind": "document", |
| "request": "/", |
| - "note": "the column shell through ui.Pages with no scheme cookie, so System is current; its server-backed tests stay in rastrillo and Task 9 ports only the three literal schemeFlipBody tests" |
| + "note": "the column shell through ui.Pages with no scheme cookie, so System is current; its server-backed tests stay in rastrillo; only the three literal schemeFlipBody tests are ported" |
| }, |
| { |
| "file": "sizing_browser_test.go", |
| @@ -288,7 +288,7 @@ |
| "path": "signin_browser_test/signinPage.html", |
| "kind": "document", |
| "request": "/", |
| - "note": "the live cases link \u003cscript type=\"module\" src=\"/static/passkey-signin.mjs\"\u003e, which SEED's signinServer answered with an empty script: serve /static/passkey-signin.mjs or strip it" |
| + "note": "the live cases link \u003cscript type=\"module\" src=\"/static/passkey-signin.mjs\"\u003e, which rastrillo's signinServer answered with an empty script: serve /static/passkey-signin.mjs or strip it" |
| }, |
| { |
| "file": "signin_browser_test.go", |
diff --git a/check/vendored_legacy_browser_test.go b/check/vendored_legacy_browser_test.go| index 3f7fd80..881b529 100644 |
| --- a/check/vendored_legacy_browser_test.go |
| +++ b/check/vendored_legacy_browser_test.go |
| @@ -13,11 +13,11 @@ import ( |
| "amadan.net/rastrillo/fiesta/internal/harness" |
| ) |
| -// TestLightJSOnAnOldThemeWritesOntoNothingItPaints (C2, review focus |
| -// 3): with the new tokens.css, light.js and the v0.28 day theme, every |
| -// property the script writes lands on a token the old theme never |
| -// painted, so the pixels are the old pair's after a pointer move too, |
| -// and the harness sees no console error. |
| +// TestLightJSOnAnOldThemeWritesOntoNothingItPaints: with the new |
| +// tokens.css, light.js and the v0.28 day theme, every property the |
| +// script writes lands on a token the old theme never painted, so the |
| +// pixels are the old pair's after a pointer move too, and the harness |
| +// sees no console error. |
| func TestLightJSOnAnOldThemeWritesOntoNothingItPaints(t *testing.T) { |
| oldTokens, oldTheme := legacyFile(t, "tokens-v028.css"), legacyFile(t, "day-v028.css") |
| rig := legacyRig(t, oldTokens, oldTheme, fiesta.TokensCSS(), oldTheme, true) |
diff --git a/hack/seed/README.md b/hack/seed/README.md| index b37e32e..6504cd1 100644 |
| --- a/hack/seed/README.md |
| +++ b/hack/seed/README.md |
| @@ -1,10 +1,10 @@ |
| -# SEED |
| +# Seeding from Rastrillo |
| -SEED: e14b745a7c08d0efa3bf221a8b6a5e75de15c46f |
| +The seed commit: e14b745a7c08d0efa3bf221a8b6a5e75de15c46f |
| Fiesta's CSS, scripts, icons, examples, fixtures and language files were taken from Rastrillo once, at the commit below, and are Fiesta's own from then on. Fiesta never imports Rastrillo. |
| -run.sh <rastrillo checkout> <SEED> does the seeding. It adds a scratch worktree of Rastrillo at SEED under $TMPDIR, copies the two exporters from _rastrillo/ into it, runs them as Go tests, and removes the worktree whether or not they passed. The exporters write the examples, examples.json, the fixtures under check/testdata, the twelve i18n files and sources.json. Set FIESTA_SEED_DRYRUN=1 to write nothing and list the state labels that need copy review. |
| +run.sh <rastrillo checkout> <seed commit> does the seeding. It adds a scratch worktree of Rastrillo at the seed commit under $TMPDIR, copies the two exporters from _rastrillo/ into it, runs them as Go tests, and removes the worktree whether or not they passed. The exporters write the examples, examples.json, the fixtures under check/testdata, the twelve i18n files and sources.json. Set FIESTA_SEED_DRYRUN=1 to write nothing and list the state labels that need copy review. |
| sources.json says where every example state came from: the partial, idiom, shell, format or screen in Rastrillo's gallery, and which of its states. check/testdata/fixtures/index.json does the same for the fixtures, and marks the page builders that were not seeded, with the reason. |
diff --git a/hack/seed/_rastrillo/designsystem_fiestaseed_test.go b/hack/seed/_rastrillo/designsystem_fiestaseed_test.go| index 935ba07..f8a1e2a 100644 |
| --- a/hack/seed/_rastrillo/designsystem_fiestaseed_test.go |
| +++ b/hack/seed/_rastrillo/designsystem_fiestaseed_test.go |
| @@ -1,10 +1,11 @@ |
| //go:build fiestaseed |
| // The Fiesta seed exporter for internal/designsystem. hack/seed/run.sh |
| -// copies this file into a scratch rastrillo worktree at SEED and runs |
| -// TestFiestaSeed there, so it has the gallery's own helpers in reach: |
| -// the sample tables, the partial tree, the shell demos, the formats |
| -// and the screens. It writes, under FIESTA_SEED_OUT: |
| +// copies this file into a scratch rastrillo worktree at the seed |
| +// commit and runs TestFiestaSeed there, so it has the gallery's own |
| +// helpers in reach: the sample tables, the partial tree, the shell |
| +// demos, the formats and the screens. It writes, under |
| +// FIESTA_SEED_OUT: |
| // |
| // - examples/<name>/<state>.html, one document per state, with the |
| // HTML-tab markup (never the deadened preview) as its body; |
| @@ -86,14 +87,14 @@ type seedSource struct { |
| var defaultStates = map[string]string{"scheme-menu": "standalone"} |
| // standaloneLabel is the one hand-written state label. It went |
| -// through copy review (Task 5, 2026-10-27), as did everything under |
| -// "approved copy" below; the dry run lists any label outside SEED's |
| +// through copy review (2026-10-27), as did everything under |
| +// "approved copy" below; the dry run lists any label outside rastrillo's |
| // strings and this set. |
| const standaloneLabel = "Standalone: the page remembers the choice" |
| -// Approved copy: where SEED's demo text named rastrillo, Fiesta says |
| +// Approved copy: where rastrillo's demo text named rastrillo, Fiesta says |
| // something else, and the exporter applies it so a reseed reproduces |
| -// it. labelOverrides maps a SEED state label to its replacement (the |
| +// it. labelOverrides maps a rastrillo state label to its replacement (the |
| // state id follows the new label). layoutBrand is the demo app's name |
| // in the shell examples, layoutTitle the shell title's text, and |
| // layoutFooter replaces "Made with rastrillo" wherever a sample says |
| @@ -110,7 +111,7 @@ var ( |
| // layouts and formats) shows its id, default. |
| exampleTitle = "{example}: {state}" |
| // layoutIntro is the note on each chrome shell's sample page, |
| - // replacing SEED's sentence (seedIntro below) with the shell's |
| + // replacing rastrillo's sentence (seedIntro below) with the shell's |
| // name filled in the same way. |
| layoutIntro = "This is the {shell} shell, one of the shells Fiesta ships. A screen is a column: a page header, then a section heading and its card, then the next one. Everything you see here is the shell, tokens.css and two components." |
| ) |
| @@ -238,7 +239,7 @@ func (s *seeder) write(rel string, body []byte) { |
| } |
| // clearOutputs removes what a previous run wrote and this exporter |
| -// owns, so a state that was renamed or a file SEED dropped does not |
| +// owns, so a state that was renamed or a file rastrillo dropped does not |
| // linger: every example directory (files directly under examples/, |
| // the README, stay), the language files, the datetime tables and the |
| // legacy stylesheets. The rendered legacy layouts beside those |
diff --git a/hack/seed/_rastrillo/ui_fiestaseed_test.go b/hack/seed/_rastrillo/ui_fiestaseed_test.go| index 1ae46c5..22fdfdc 100644 |
| --- a/hack/seed/_rastrillo/ui_fiestaseed_test.go |
| +++ b/hack/seed/_rastrillo/ui_fiestaseed_test.go |
| @@ -1,8 +1,8 @@ |
| //go:build fiestaseed && browser |
| // The Fiesta seed exporter for ui. hack/seed/run.sh copies this file |
| -// into a scratch rastrillo worktree at SEED and runs TestFiestaSeed |
| -// there, beside the browser drives Fiesta's Tasks 9, 10 and 11 port, |
| +// into a scratch rastrillo worktree at the seed commit and runs TestFiestaSeed |
| +// there, beside the browser drives Fiesta ports, |
| // so it can call their page builders. It writes, under FIESTA_SEED_OUT: |
| // |
| // - check/testdata/fixtures/sizing.html, the whole sizing fixture; |
| @@ -22,13 +22,13 @@ |
| // literal and reads the piece. Where a builder is a plain function it |
| // is called, so its own wrapper markup is in the fixture and the port |
| // retypes nothing; where a render sits inside a Test function the |
| -// exporter repeats that one call with SEED's data. |
| +// exporter repeats that one call with rastrillo's data. |
| // |
| -// The layout drives (Tasks 11's files) fill the chrome outside the |
| +// The layout drives fill the chrome outside the |
| // content slot with their own blocks: brand Harbour, nav-invoices, |
| // #rail-locale, a blank brand, a whitespace view. No layout-* example |
| // carries that chrome, so every one of their pages is seeded as a |
| -// document, with the defines the drive gives it, and the words SEED |
| +// document, with the defines the drive gives it, and the words rastrillo |
| // gives it, exactly: these are test data the ported assertions match. |
| // |
| // With FIESTA_SEED_DRYRUN set it writes nothing. The browser tag is |
| @@ -72,7 +72,7 @@ type fixtureWriter struct { |
| written int |
| } |
| -// The drives' own words, kept exactly as SEED writes them, because the |
| +// The drives' own words, kept exactly as rastrillo writes them, because the |
| // ported assertions match them. |
| const ( |
| postsNav3 = `<a href="#" aria-current="page">Posts</a><a href="#">Drafts</a><a href="#">Settings</a>` |
| @@ -113,7 +113,7 @@ func TestFiestaSeed(t *testing.T) { |
| Note: "shellLayoutPage(t, legacyLayout(t, " + name + "), \"ltr\") with no extra defines"}) |
| } |
| - // ── Task 9: browser_test.go's handlers, and scheme_browser_test.go ── |
| + // ── browser_test.go's handlers, and scheme_browser_test.go ─────── |
| h, _ := page(t, 40) |
| w.document("browser_test.go", "page", "40", "/", h, "page(t, 40)") |
| h, _ = datePage(t, "field-date", "due") |
| @@ -132,9 +132,9 @@ func TestFiestaSeed(t *testing.T) { |
| w.document("browser_test.go", "busyPage", "", "/", h, "") |
| w.document("browser_test.go", "bidiRowPage", "", "/", bidiRowPage(t), "") |
| w.document("scheme_browser_test.go", "schemeApp", "", "/", schemeApp(t), |
| - "the column shell through ui.Pages with no scheme cookie, so System is current; its server-backed tests stay in rastrillo and Task 9 ports only the three literal schemeFlipBody tests") |
| + "the column shell through ui.Pages with no scheme cookie, so System is current; its server-backed tests stay in rastrillo; only the three literal schemeFlipBody tests are ported") |
| - // ── Task 10: the component drives ──────────────────────────────── |
| + // ── The component drives ───────────────────────────────────────── |
| w.piece("sizing_browser_test.go", "TestTheCalendarDocksAndItsDaysAreTaps", "field", |
| render(t, "field-date", map[string]any{"Name": "due", "Label": "Due", "Value": "2026-08-28"}), "the field both pages hold") |
| w.add(fixtureEntry{File: "sizing_browser_test.go", Builder: "TestDesktopDensityIsPinned", Case: "modal", Example: "modal/default", Note: `Styleguide()["modal"]`}) |
| @@ -179,7 +179,7 @@ func TestFiestaSeed(t *testing.T) { |
| w.body("apitokens_browser_test.go", "tokensPageDoc", "", bodyOf(t, tokensPageDoc(t)), "") |
| w.document("signin_browser_test.go", "signinPage", "", "/", signinPage(t), |
| - "the live cases link <script type=\"module\" src=\"/static/passkey-signin.mjs\">, which SEED's signinServer answered with an empty script: serve /static/passkey-signin.mjs or strip it") |
| + "the live cases link <script type=\"module\" src=\"/static/passkey-signin.mjs\">, which rastrillo's signinServer answered with an empty script: serve /static/passkey-signin.mjs or strip it") |
| var signinBody strings.Builder |
| for i, c := range signinStates() { |
| for _, preview := range []bool{false, true} { |
| @@ -196,7 +196,7 @@ func TestFiestaSeed(t *testing.T) { |
| } |
| w.body("signin_browser_test.go", "TestSigninControlsStayInsideTheCardOnAPhone", "", signinBody.String(), "every signinStates entry, live and in Preview, as the test builds them; the live cases link /static/passkey-signin.mjs: serve it or strip it") |
| - // ── Task 11: the shell drives ──────────────────────────────────── |
| + // ── The shell drives ───────────────────────────────────────────── |
| w.piece("shell_browser_test.go", "TestAMenuOpenedInsideAListCardEscapesTheCard", "bulk-bar", render(t, "bulk-bar", map[string]any{ |
| "DoneHref": "/posts", "Count": "3 selected", |
| "MenuLabel": "Actions", |
diff --git a/hack/seed/run.sh b/hack/seed/run.sh| index bbf6bbe..732a9ab 100755 |
| --- a/hack/seed/run.sh |
| +++ b/hack/seed/run.sh |
| @@ -1,8 +1,8 @@ |
| #!/bin/sh |
| -# hack/seed/run.sh <rastrillo checkout> <SEED> |
| +# hack/seed/run.sh <rastrillo checkout> <seed commit> |
| # |
| # Runs the two seed exporters inside a scratch rastrillo worktree at |
| -# SEED and writes their output into this checkout: the examples, the |
| +# the seed commit and writes their output into this checkout: the examples, the |
| # manifest, the fixtures, the language files and the datetime tables. |
| # Fiesta never imports rastrillo, so the exporters live under |
| # hack/seed/_rastrillo/ (the leading _ keeps Go's tools out) and are |
| @@ -20,7 +20,7 @@ |
| set -eu |
| if [ $# -ne 2 ]; then |
| - echo "usage: $0 <rastrillo checkout> <SEED>" >&2 |
| + echo "usage: $0 <rastrillo checkout> <seed commit>" >&2 |
| exit 2 |
| fi |
| if [ -z "${TMPDIR:-}" ]; then |
diff --git a/internal/build/build_test.go b/internal/build/build_test.go| index 753f0e9..4f6efe3 100644 |
| --- a/internal/build/build_test.go |
| +++ b/internal/build/build_test.go |
| @@ -504,10 +504,10 @@ func TestTheStringsScriptIsTheJSON(t *testing.T) { |
| } |
| // TestVendoredAxeIsNotAShippedAsset is rastrillo's containment gate |
| -// (ui/axe_test.go at SEED) over the release instead of the accessors: |
| -// the vendored axe-core is test data, and no file of the dist carries |
| -// its banner. The script count is the precondition that keeps an empty |
| -// dist from passing. |
| +// (ui/axe_test.go at the seed commit) over the release instead of the |
| +// accessors: the vendored axe-core is test data, and no file of the |
| +// dist carries its banner. The script count is the precondition that |
| +// keeps an empty dist from passing. |
| func TestVendoredAxeIsNotAShippedAsset(t *testing.T) { |
| // The banner is present in every build of axe-core and appears in |
| // no hand-written asset, so it is the marker to hunt for. |
diff --git a/internal/build/strip_test.go b/internal/build/strip_test.go| index 1062d93..071cb06 100644 |
| --- a/internal/build/strip_test.go |
| +++ b/internal/build/strip_test.go |
| @@ -10,9 +10,10 @@ import ( |
| "amadan.net/rastrillo/fiesta/internal/nodetest" |
| ) |
| -// The strippers' own tests, from rastrillo's weight_test.go at SEED, |
| -// over Fiesta's tree: the hard cases each stripper must leave alone, |
| -// and every shipped file run as written and as stripped in Node. |
| +// The strippers' own tests, from rastrillo's weight_test.go at the |
| +// seed commit, over Fiesta's tree: the hard cases each stripper must |
| +// leave alone, and every shipped file run as written and as stripped |
| +// in Node. |
| // shippedFiles is every stylesheet and script in the tree, by file |
| // name. |
diff --git a/internal/gallery/keyboard_browser_test.go b/internal/gallery/keyboard_browser_test.go| index 1625ce6..b7907d1 100644 |
| --- a/internal/gallery/keyboard_browser_test.go |
| +++ b/internal/gallery/keyboard_browser_test.go |
| @@ -28,7 +28,7 @@ import ( |
| // paints nothing on, because it walked the gallery page with its |
| // frames. These walks open each state's document on its own, so |
| // there is no frame to stop on; an element of any kind with no ring |
| -// is a failure, and adding a kind here is a ruling somebody has to |
| +// is a failure, and adding a kind here is a decision somebody has to |
| // write down. |
| var focusRingExempt = map[string]string{ |
| // (none) |