After adding new fields to PageMeta, several inconsistencies remain between the interface, its consumers, and the runtime data flow. This task addresses duplication, missing type connections, and stale patterns.

Issues

  • description is defined in PageMeta but not wired through — pages still duplicate it in the Publication meta prop
  • page-renderer.svelte.js reads pageMetadata as untyped Record<string, unknown> — should use PageMeta
  • FeedItem in app.d.ts duplicates fields from PageMeta (tags, authors, cover) with slightly different types
  • Publication.svelte MetaConfig typedef duplicates fields that could come from PageMeta
  • PageModule interface (title, menuTitle) overlaps with PageMeta — consider removing it
  • The cover field is typed as unknown in PageMeta but has a specific shape in FeedItem

Tasks

  • Wire PageMeta.description through Publication so pages don't need to pass it twice
  • Type pageMetadata in page-renderer.svelte.js as PageMeta
  • Align FeedItem cover type with PageMeta cover type
  • Consider deriving FeedItem fields from PageMeta using Pick
  • Remove PageModule if fully superseded by PageMeta
  • Add a shared cover image type to replace unknown
  • Verify with pnpm check

Type hygiene

Consistent metadata types

A static site template built with SvelteKit.

Sveleton, 2025