Frontpage Structure, Theme Pass, and Host Files
Maintenance ID: 0.1.00029.frontpage-structure Date: 2026-09-28 Scope: themes/cantilever, scripts/filed-build.sh, content/index.md, THEME-NOTES.md, changelog
What changed
- Navigation drawer ships closed. On screens up to 960px the frontpage opened on an expanded menu; the first heading sat near y=721 on a 390px phone. The drawer is now closed in the markup.
cantilever.jsopens it above 960px, where it reads as a sidebar. Its summary is visible whenever it is closed, so the menu is reachable without JavaScript. - The frontpage has its own layout.
indexis routed tolayouts/frontpage.htmlby anid:indexlayout rule. It carries the record and a plain list of the collections. The sidebar, the one-item breadcrumb, and the rail that repeated the title are gone. The site name now appears once in the header and once as the H1. - Head metadata. The frontpage has a description, a canonical URL, Open Graph tags,
theme-color, a favicon, andgeneratorset to Boris. Other layouts gainedtheme-color, the favicon, and the generator. - Accessibility. The brand link is named "Filed & Forgotten home", not "Cantilever Docs home". An ARIA attribute the search input did not support was removed. Sidebar group labels are no longer
<h2>elements ahead of the page's<h1>.--mutedmoved from#7c8379(3.43:1 on paper) to#5c6358(5.46:1). No visible text renders below 12px. On-page contents links have a 24px minimum target. - Smaller corrections. The empty children block no longer draws a rule above the footer. The "Press / to focus" hint and its key cap only appear where a fine pointer is present. The record count is localised. The frontpage
<title>no longer says the name twice.content/index.mdchanged only its existingtitlevalue, from capitals to "Filed & Forgotten". - Theme pass. One type scale and one spacing scale replace the ad-hoc sizes. The reading measure (
--max-read, 40rem) binds on the record column; the old 70ch paragraph cap computed wider than its column and never applied. Heading tracking is -0.03em for H1 and -0.02em for H2. The phone header keeps the tagline. The dead page-turn strip and the navigation rules written for{{nav}}, which Cantilever does not use, were removed. - Host files.
themes/cantilever/hosting/holds404.htmlandrobots.txt.filed-build.shcopies them into the output after certification. Before this, Cloudflare Pages had no404.htmland answered every unknown path,/404.html, and/robots.txtwith the frontpage and status 200.
What was deliberately left alone
- No record IDs, parents, relations, or frontmatter keys were added, removed, or renamed.
- No aphorism feed or recent-entries section was added. Neither exists in the content model, and neither was wanted.
- The host files are outside the Boris evidence set. Boris makes no claim about them, and the build refuses to copy them over any file Boris certified.
scripts/filed-publish.shwas not changed. Itssite/export is not what Cloudflare Pages deploys.- The search status is still a polite live region that announces the record count on load. That is a behaviour change for another pass.
- Scrollable
<pre>blocks with long lines still cannot be reached by keyboard (axescrollable-region-focusable). That predates this pass.
Verification performed
./bin/validate_graph.shagainst Boris main4a1ff01: graph diagnostics passed; 2,348 pages compiled; verse-residue check, HTML ID audit (0 duplicates), and publication certification passed; host files added outside the certified set.- The frontpage search index still holds only the record ("FILED & FORGOTTEN", "Entry Protocol"). The collection index and the rail are excluded. The index lists 2,342 documents, as before.
- axe-core 4.12 on
index.html,mascots.html,lorelog/LLG-0409-PRE.html, andreference/FREF-0080-SRBP.htmlat 1440px: 0 violations on the first three. The earlier target-size violation on LLG-0409-PRE's rail is cleared. FREF-0080 reports onescrollable-region-focusableon a<pre>whose 90-character line overflowed before this pass as well. The only incomplete results are the decorative,aria-hiddenbrand mark and search icon. - Rendered at 390, 768, and 1440px, including touch emulation at 390. At 390 the frontpage H1 sits under the header instead of below the menu. The touch status reads "Search 2,342 records." with no key hint. No visible text measured below 12px on the sampled pages, including table pages with inline code.
- Against a local stand-in for Pages not-found handling:
/robots.txt200text/plain;/definitely-not-a-real-path-12345/and/lorelog/nope/deeper404 with the 404 page, styled, with search loaded at depth. python3 scripts/test_*.py: seven of eight pass.test_content_audit_policy.pyfails one check: the committedmetadata/content-audit-policy/summary.jsoncounts 1,688 poetry records, and fresh generation counts 1,716. This branch does not touch poetry records or that metadata; the drift is already onmain.
Unresolved follow-up
404.htmlduplicates the frontpage header by hand. If the header changes, the 404 page must change with it.- The no-JavaScript search form still submits to
/_boris/search/, which has no page and now answers 404.