Fix breadcrumbs layout handled the styling. src/lib/components/Breadcrumbs.svelte still has behavioural problems.

Current State

  • Labels are title-cased slugs. The last crumb is replaced by the h1 text in afterNavigate, so the prerendered HTML shows "Update Sveltekit To 3" and it flips to "Update SvelteKit to 3" after hydration
  • Intermediate crumbs link to every path segment whether or not a route exists; handleClick calls goto() and on rejection does window.location.href = href, producing a full reload into a 404
  • The separator is a literal > in a <span> without aria-hidden, so screen readers announce "greater than"
  • Inside the feed renderer the crumbs are built from the file path (see feed content todo)
  • The only comment in the file is in Russian in an otherwise English codebase

Tasks

  • Resolve labels from the pages map (getPages() already exposes title/menuTitle keyed by URL) during load, not from the DOM
  • Only render a crumb as a link when the path exists in the pages map
  • Use plain <a href> and let SvelteKit handle navigation; drop the goto().catch fallback
  • Mark the separator aria-hidden="true" or use CSS

Crumbs from data

Titles from page meta, links that exist

A static site template built with SvelteKit.

Sveleton, 2025