Queue-North-Website/docs
null 7ec4241f7d refactor(ui): one content renderer, and it refuses a block it does not know
The privacy policy held the site's only block renderer, and the two approved
service pages need the same vocabulary plus ordered steps, a figure and a link
list. Two renderers would have drifted, so there is one:
src/components/content/ContentBlocks.jsx, with p (including inline links), h3,
ul, ol (a step, optionally with its explanation), callout, image and links.

The old renderer sent an unknown block type to its paragraph case, which
rendered an empty <p>. A misspelt type silently dropped a paragraph of copy and
nothing said a word. The shared one throws, and the prerender turns that into a
build failure naming the route, the section and the block index.

PrivacyPolicy passes in the two block types only a policy has, email and
contactBlock, rather than forking the renderer. That page is the one an ad
platform must be able to read, so its markup had to be untouched: the renderer
was written to emit exactly what the page emitted before, prop order included.

Proven: dist/privacy-policy/index.html is byte for byte identical before and
after, 82,392 bytes either way, with asset hashes normalised. And a block type
misspelt as 'emial' fails the build with "prerender: /privacy-policy could not
be rendered: content: section "marketing", block 3: unknown block type".

RelatedLinks is the second shared piece, for the links the sheets ask each page
to carry. It renders nothing when a page has no links, so the pages that have
none are unchanged.

Closes #229.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 04:45:48 -05:00
..
architecture refactor(ui): one content renderer, and it refuses a block it does not know 2026-09-10 04:45:48 -05:00
data docs: adopt project template, retire the markdown backlog 2026-08-18 01:21:13 -05:00
design docs: adopt project template, retire the markdown backlog 2026-08-18 01:21:13 -05:00
history docs: log Batch 11 and Batch 16 — four false, two real, found by rendering 2026-08-18 04:09:31 -05:00
planning feat(deploy): production always runs a numbered version 2026-08-18 02:54:42 -05:00
qa fix(ui): header CTA clipped at iPad portrait, and reCAPTCHA cut off at 320px 2026-08-18 04:05:37 -05:00
security security: the scanner never ran its private-key pattern, and verify never saw dist 2026-09-10 04:23:39 -05:00
DOC_TRUST_MAP.md fix(security): stop secrets.sh flagging every prerendered page, and clear the dangling doc claims 2026-08-18 01:40:46 -05:00
OPERATIONS.md docs: v0.9.4 is live, production is on a numbered version, and Watchtower is out 2026-08-18 03:38:02 -05:00
TOOLS.md feat(build): the copy is checked before a single page is built from it 2026-09-10 04:43:01 -05:00
WORK_CYCLE.md feat(deploy): production always runs a numbered version 2026-08-18 02:54:42 -05:00