diff --git a/.gitignore b/.gitignore index d5a45f1..b19db80 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,10 @@ node_modules/ packages/sitetile/astro/dist-smoke/ packages/sitetile/astro/dist/ packages/sitetile/astro/.astro/ +# the smoke's SECOND, isolated build — a throwaway rsync'd copy of astro/ with its own hostile +# content/blog fixture (site-level fields a single-page fixture can't exercise; see +# smoke-build.mjs's buildHostileBlogFixture for why). Rebuilt every smoke run, never committed. +packages/sitetile/.smoke-hostile-blog/ # @tile/build stashes the renderer's own content/, blog/, pagetile/ and public/ HERE while it builds # somebody's site, and moves them back afterwards — including when the build throws. The directory # should never outlive a build; it is ignored because the one time it does (a killed process) the diff --git a/packages/sitetile/astro/content/scheme-check.md b/packages/sitetile/astro/content/scheme-check.md new file mode 100644 index 0000000..83e0173 --- /dev/null +++ b/packages/sitetile/astro/content/scheme-check.md @@ -0,0 +1,151 @@ +--- +sitetile-page: scheme-check +title: Scheme check — disallowed destinations must never reach a live sink +lang: en-US +# round 4 (R3-P2-1/R3-P3-1/R3-P2-2): every field below is set on THIS page's own frontmatter +# (never the shared _site.md), so none of it leaks onto any other fixture page — page keys +# override site keys in the merged meta (see pages/[...path].astro's siteConfig merge). +favicon: javascript:void(0) +fonts: javascript:void(0) +header-cta: Buy now=javascript:void(0) +# header-actions-cart-href (R3-P2-1, second instance): reaches window.location.href in +# header-actions-cart.js, not an href=/src= attribute — the sink the R3 sweep's literal +# `href=|src=` grep could not see. Requires the guild + a `cart` toggle to wire at all. +header-actions: Cart=cart toggle cart +header-actions-cart-guild: scheme-check-cart +header-actions-cart-href: javascript:void(0) +# round 5 (R4-P3-1): share-image:/og-image: reaching a live / +# with no gate — absUrl only makes a relative path absolute, it does +# not touch a value that already carries its own scheme. +share-image: javascript:void(0) +--- + +## Contact — disallowed scheme in the form action +%% sitetile: form action="javascript:void(0)" submit="Send" %% +R3-P2-1: `action=` reaching a live `