- Stop the reflect endpoint from serving a previous deployment's section and block catalog. Its cached reflection is now keyed by build id, so a redeploy is a cache miss instead of inheriting whatever the last build left behind, and two frontends sharing one Redis no longer overwrite each other's entry. Cached entries expire
- Add
aiDisclosuretoMedia, recording whether an asset was fully AI-generated ('generated') or altered by generative AI ('modified'). Available on images, videos and audio; a video'sposterand an audio'scovercarry their own value independently of the parent.
-
Fill hreflang alternates,
og:locale:alternate,x-defaultand the locale switcher with each locale's own route params instead of the current locale's.On a page whose slug is translated per locale, the alternate URLs and the locale-switch target previously reused the current locale's params — pointing at URLs that do not exist in the target locale. Where the page type's
pageIndexregistration implementslocateand reports a complete per-locale map, each locale now gets its own slug, and locales the page does not exist in are omitted from the alternates rather than guessed at.
- Add a configurable trailing-slash policy via
RcProject.config.trailingSlash(defaultfalse). Routes, canonical/hreflang links, switch-locale/market URLs, and theuseMarketPathhelper are generated in the configured shape, and a Nitro server middleware issues a 301 normalizing the opposite shape. The policy is also applied to Nuxt's<NuxtLink>default so client-side navigation hrefs match, and the active value is readable at runtime viaruntimeConfig.public.laioutr.trailingSlash. Domain path prefixes are normalized, so single- and multi-segment prefixes (/fr,/en/us) — including ones written with a stray trailing slash — compose correctly. Fixes homepage alternate/canonical links carrying a trailing slash on path-prefixed domains (/fr/→/fr). The root path/is unaffected.
On path-prefixed domains the homepage now resolves correctly instead of falling through to the 404 page (the core/404 catch-all is no longer market-prefixed, so
- Add a configurable trailing-slash policy via
RcProject.config.trailingSlash(defaultfalse). Routes, canonical/hreflang links, switch-locale/market URLs, and theuseMarketPathhelper are generated in the configured shape, and a Nitro server middleware issues a 301 normalizing the opposite shape. The policy is also applied to Nuxt's<NuxtLink>default so client-side navigation hrefs match, and the active value is readable at runtime viaruntimeConfig.public.laioutr.trailingSlash. Domain path prefixes are normalized, so single- and multi-segment prefixes (/fr,/en/us) — including ones written with a stray trailing slash — compose correctly. Fixes homepage alternate/canonical links carrying a trailing slash on path-prefixed domains (/fr/→/fr). The root path/is unaffected.
On path-prefixed domains the homepage now resolves correctly instead of falling through to the 404 page (the core/404 catch-all is no longer market-prefixed, so
-
openDialogandaddToastnow accept a ref or getter for their content (MaybeRefOrGetter<…>), so a dialog's or toast's title, description, and other fields can stay reactive after it opens — e.g.openDialog(() => ({ title: t('...'), ... }))re-renders on locale or prop changes. Passing a plain object works exactly as before.addToastadditionally returns the new toast'sid(matchingopenDialog), and the toaster store'stoastsis now a resolved computed rather than a writable ref (it was already only read internally).
-
Emit SEO and locale head tags automatically on every page. Each page now renders a self-referential
<link rel="canonical">,<link rel="alternate" hreflang>alternates for every market domain plusx-default,og:locale/og:locale:alternate, and<html lang>— with no per-page or per-layout call required. Alternates are scoped to a page'smarketIds, so a market-restricted page never advertises (or links to a 404 for) markets it does not belong to.MetaPagegains an optionalmarketIdsfield that carries this scope onto the route.Customize the emitted head with one new filter hook, registered in a Nuxt plugin:
frontend-core:page-head:resolve. Itsresult.valuecarries frontend-core's computed head in two slots —seo(title, description, robots, and any og/twitter field) andlocale(canonical, hreflang, og:locale, html lang) — so a handler can add, override, or remove any tag.
-
dc8610b: Add support for setting Media fields from query entities.
Add
RcPropValueEntityPropertyfor query-bound prop values — a new variant on theRcPropValueunion that lets a single prop read its value from a property of a query-result entity (e.g.{ type: 'entity-property', queryId: 'q1', path: ['components', 'base', 'image'] }). The compositepathuses the samecomponents.*/links.*form as string-template references.Lifted
RenderQueryReference.queryPathfromstringtostring[]and added anentity-propertyvariant to theRenderQueryReferenceandRenderQueryLoadSpecSeedunions (internal render-pipeline types, consumed only by@laioutr-core/frontend-core).