diff --git a/site/astro.config.mjs b/site/astro.config.mjs index de87a12..c47254b 100644 --- a/site/astro.config.mjs +++ b/site/astro.config.mjs @@ -93,7 +93,18 @@ export default defineConfig({ useStarlightUiThemeColors: false, styleOverrides: { borderColor: "var(--kit-line)", - borderRadius: "0.5rem", + // The panel step, taken from the same token the stylesheet uses + // rather than repeated as a number here. Expressive Code emits this + // straight into --ec-brdRad and draws the frame at that plus its + // border width, so a block's outer edge measures 9px and its content + // measures the 8px the scale asks for. That pixel is the border, not + // a fifth radius. + // + // Changing this needs the Astro cache cleared to see the effect. The + // dev server keeps serving the previously generated Expressive Code + // stylesheet, and the stale one renders every block at 0px, which + // reads as a broken value rather than as a stale build. + borderRadius: "var(--kit-radius-panel)", frames: { frameBoxShadowCssValue: "none" }, }, }, diff --git a/site/scripts/generate.mjs b/site/scripts/generate.mjs index e675e41..f7b7835 100755 --- a/site/scripts/generate.mjs +++ b/site/scripts/generate.mjs @@ -84,6 +84,19 @@ export function parseRules(text) { }) } +/** + * The first sentence of a rule's Check, for the two homepage panels that are + * too small to hold the whole clause. Quoting a prefix is the only abridgement + * that cannot say something the standard does not: the panel used to carry a + * hand-written summary of R-CI-01's Check, and it dropped the `branches:` + * filter condition, so it told a repository carrying one that it passed. + * @param {string} check + */ +export function leadClause(check) { + const end = check.indexOf(". ") + return end === -1 ? check : check.slice(0, end + 1) +} + /** @param {Record} fields @param {string} body */ export function frontmatter(fields, body) { const head = Object.entries(fields) diff --git a/site/src/components/FaIcon.astro b/site/src/components/FaIcon.astro index 3c91e6e..5e234c6 100644 --- a/site/src/components/FaIcon.astro +++ b/site/src/components/FaIcon.astro @@ -40,7 +40,10 @@ if (!glyph) throw new Error(`FaIcon: no icon mapped for "${name}"`) const svg = icon(glyph, { attributes: { "aria-hidden": label ? "false" : "true", - "aria-label": label, + // Spread rather than assigned: an undefined label serialized to the literal + // string aria-label="undefined" on every icon the site draws. Masked while + // the icon stays hidden, and live the moment one is given a name. + ...(label && { "aria-label": label }), focusable: "false", }, }).html.join("") diff --git a/site/src/components/HomeHero.astro b/site/src/components/HomeHero.astro index 9dd4bc0..9e9761d 100644 --- a/site/src/components/HomeHero.astro +++ b/site/src/components/HomeHero.astro @@ -9,7 +9,7 @@ FORM: user-pinned lateral control surface based on approved composition A; no co import DomainIcon from "./FaIcon.astro" import InlineCode from "./InlineCode.astro" import InstallCommand from "./InstallCommand.astro" -import { domains, sampleRule } from "../lib/content.mjs" +import { domains, leadClause, sampleRule } from "../lib/content.mjs" ---
@@ -31,12 +31,17 @@ import { domains, sampleRule } from "../lib/content.mjs"
-
- Cross-domain scan - oss-audit + {/* The rail named oss-audit and never said what it produces. Its two + captions read "Cross-domain scan" and "Every standard domain", both were + hidden below 34rem, and the definition a reader needed sat a thousand + pixels down the page in the domain rack. It says it here now, and the + whole strip is the link rather than the one word inside it. */} + + oss-audit - Every standard domain -
+ Evidence and gaps across every standard domain + +
@@ -67,11 +72,14 @@ import { domains, sampleRule } from "../lib/content.mjs" {/* The lit bay used to say so in green and in nothing else. The marker is a shape rather than a second tint, and the word - behind it is what a reader who cannot see either one gets. */} + behind it is what a reader who cannot see either one gets. + That word said "Scanning now.", which described an activity + no visitor had started on a repository none had supplied. + The bay is lit because the route below expands it. */} {domain.area === "SEC" && ( <>