core · preview
Responsive media metadata
Portable source contracts, adoption guidance and compatibility limits for responsive media metadata.
Applies to unreleased
Component pins for unreleased
| Component | Role | Version |
|---|---|---|
| core | runtime | v1.1.29 |
| theme-shield | theme | v0.1.17 |
| docs | reference | v0.1.6 |
| distribution | tooling | v0.3.31 |
The shared image normalization and rotating-media pipeline accepts a URL string, a single image map, or a list mixing strings and maps. Existing inputs retain their behavior. Hero-like blocks using that pipeline can pass optional browser image metadata in each map:
sections:
- type: hero
content:
title: A useful next chapter
media:
images:
- url: /images/hero-1280.webp
alt: An accurate description when the image conveys information
srcset: /images/hero-640.webp 640w, /images/hero-1280.webp 1280w
sizes: "(max-width: 700px) 100vw, 70vw"
width: 1280
height: 720
position: 50% 40%
src remains an alias for url. srcset and sizes use normal browser syntax
and Hugo attribute escaping; provide actual site-visible candidate URLs. Core
does not generate variants, inspect remote images or infer the rendered slot
width. Account for any deployment subpath in candidate URLs. Intrinsic width
and height describe the image’s pixel dimensions and aspect ratio, not a CSS
layout size. Only positive decimal integer dimensions are emitted; missing,
zero, negative and malformed values are omitted.
Normalization preserves the existing position/object_position,
mobile_position/object_position_mobile and kenburns_preset/preset metadata.
This addition does not change how individual block renderers consume positioning.
Existing motion, object-fit, first-image priority, eager/lazy loading and rotation
remain unchanged. Decorative backgrounds and inactive rotation frames still
receive empty alt text and aria-hidden; content images retain their existing
accessible description behavior.
The compatibility fixture current-site-baseline/responsive-media/ proves
metadata reaches a real hero. Rendered Go tests also exercise string/map/mixed
list inputs, rotation, decorative semantics, invalid dimensions and Hugo
attribute escaping. Browser source selection is additional evidence; synthetic
fixture candidates do not demonstrate real transfer savings. Consumers must
verify their own assets, breakpoints, visual states and measured performance.
Optional override CSS
assets/css/foundry-overrides.css is optional. Missing, empty and whitespace-only
resources produce no stylesheet request. Nonempty source retains its late
cascade position, development URL and production minification, fingerprint and
integrity attributes. A source containing only comments is still nonempty and
follows the normal resource pipeline.
Shield shell adoption
Shield places charset before the extensible head-start.html hook. Its shell
test renders a long multibyte hook with and without minification and asserts the
charset declaration finishes within the first 1024 bytes.
When upgrading from Shield v0.1.15, review site head-end.html and other custom
SEO hooks: the current Shield shell renders foundry/seo/render.html itself.
Remove a redundant site invocation rather than emitting duplicate metadata or
structured data. Shield also avoids duplicate home/site titles. Keep any
site-owned shell override under an explicit compatibility and review boundary.