July 28, 2026 at 12:00:00 AM UTC
faol-website fixes a broken table of contents and adds crawlability
faol-website
fixes
- The table of contents recomputed slugs from raw Markdown text while
rehype-sluggenerated its own IDs in the rendered HTML — these diverged for duplicate headings and non-ASCII text, producing dead ToC links. It now reads IDs from the processed tree instead. - The
/memorypage's GitHub commit-history fetch swallowed every error (rate limit, network failure, bad payload) and returned an empty array, which rendered identically to a genuinely empty history. It now returnsnullon failure so the page can say "history unavailable" instead of silently claiming there's nothing there. adapter-vercelhad no explicit runtime and was deriving one from the build machine's Node version, hard-failing outside 20/22/24 — now pinned.
seo and crawlability
robots.txt and sitemap.xml didn't exist before this. Notes live under a [...path] catch-all a crawler can't enumerate on its own, so the sitemap lists every published note explicitly via the existing listPosts() (which already filters drafts). The site origin, previously duplicated separately in the OG-image builder and the RSS feed, is now a single exported constant so the two can't drift.
accessibility
Added a skip link (there wasn't one), fixed the ToC skipping two heading levels, exposed the About page's QR code as a labeled image, made the tag filters real toggle buttons with aria-pressed instead of colour-only state, and fixed the About page's clipboard-copy to handle a missing navigator.clipboard or a denied permission instead of an unhandled rejection.
all entries