diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d2719b1..e92aa5f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,7 +9,7 @@ This repo is the **realunit.app** website — public, static. See the `public/` ships verbatim to Cloudflare Pages — what you commit is what gets served. The one exception is the invite/promo HTML: `functions/_middleware.js` rewrites those bytes on the way out so crawlers see the code in - `apple-itunes-app`, `og:*` and the App Links before any script runs. Nothing + `apple-itunes-app`, `og:*` and the App Links before any script runs. The landing for a code-bearing path is served by that Function too, not by `_redirects`: `_routes.json` hands `/invite`, `/invite/*`, `/promo` and `/promo/*` to it first, so the 200-rewrites never run and the asset lookup behind `context.next()` answers the path as asked — `404`, with the site's own 404 page. The platform is therefore asked first and only its `404` is replaced: the shell is read from the asset binding by name (`env.ASSETS.fetch`), checked against the two landing marks `id="state-loading"` and `aria-busy="true"`, injected, and answered `200`, for `HEAD` as well as `GET`. Every other answer stands — `/invite/` and `/promo/` are real files served `200`, rewritten in place for a `GET`, and `/invite` and `/invite/index.html` keep the `308` that canonicalises them. A `HEAD` carries no body to recognise the shell in, so it reads the shell from the binding like the `404` case does and answers as the `GET` would, without a body. Without the binding, or when the file under that name is not the shell, the platform's answer stands rather than an invented one. Nothing else is transformed, and there is no server-side rendering. The dev dependencies exist **only** for the quality gates below (formatting, HTML validation, unit tests, screenshots); nothing compiles or bundles the site. @@ -46,7 +46,8 @@ This repo is the **realunit.app** website — public, static. See the - Inline `style="…"` attributes and `