Skip to content

Instantly share code, notes, and snippets.

@screeny05
Created June 1, 2026 18:05
Show Gist options
  • Select an option

  • Save screeny05/01ab9f399e4815d35ccfbbd11dc2942c to your computer and use it in GitHub Desktop.

Select an option

Save screeny05/01ab9f399e4815d35ccfbbd11dc2942c to your computer and use it in GitHub Desktop.
Frontend-Core 0.30.3 & Laioutr UI 2.2.3

@laioutr-core/core-types@0.30.3

Patch Changes

  • dc8610b: Add support for setting Media fields from query entities.

    Add RcPropValueEntityProperty for query-bound prop values — a new variant on the RcPropValue union 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 composite path uses the same components.* / links.* form as string-template references.

    Lifted RenderQueryReference.queryPath from string to string[] and added an entity-property variant to the RenderQueryReference and RenderQueryLoadSpecSeed unions (internal render-pipeline types, consumed only by @laioutr-core/frontend-core).

    Add installedApps: Record<string, AppRuntimeMeta> to ProjectFrontendContext — apps registered in the deployed frontend via registerLaioutrApp (including frontend-core itself). Used by the cockpit to gate features that require a specific framework/app version.

  • cbce272: Fix silent registry eviction in applyZodFix that caused id-less reflection output (e.g. MediaImage, MoneyAmount, Link) on Vercel-deployed Nuxt apps.

    applyZodFix previously evicted the existing registry entry when a schema with the same id was registered a second time. In the dual-bundle case (server bundle + @vercel/nft-traced .output/server/node_modules/ copy of @laioutr-core/core-types), the first-loaded instance is the one consumers like @laioutr-core/canonical-types reference. Evicting it left zodToJSONSchema unable to find the schema's metadata, so reflection inlined canonical schemas without an id or $ref. Studio consumers that branch on schema.id then misclassified Media/Money/Link properties as plain object.

    New behavior: merge the new meta into the existing entry and store the merged record against both schema instances. _idmap still points at the first-registered instance. HMR additive edits to description/title/examples still take effect; removing a meta field requires a dev-server restart (rare).

@laioutr-core/frontend-core@0.30.3

Patch Changes

  • dc8610b: Render-pipeline support for RcPropValueEntityProperty: gather seeds, resolve query paths via the new shared resolveEntityPath helper, coerce the resolved value through coerceFieldValue so e.g. a string URL bound to a media field becomes a Media object. The dynamic-string render branch now also goes through resolveEntityPath, unifying the two query-bound paths.

    Renamed queryStringReferencesToLoadSpec to queryPathsToLoadSpec with signature (paths: string[][]) => RenderQueryLoadSpec. The previous helper was internal; external consumers are not expected to be affected.

    rcPropValueToRender now treats unknown RcPropValue.type values as "no value" (returns undefined) and emits a deduplicated console.warn, instead of leaking the raw value object to downstream renderers. Lets newer studio configs degrade gracefully on older frontend-core deployments rather than crashing.

    Reflect endpoint now exposes installedApps: Record<string, AppRuntimeMeta> — every registerLaioutrApp caller (including frontend-core itself) keyed by name, with its version and pageWrapper. Backed by a new server-only virtual file #laioutr/installed-apps, populated lazily from laioutrAppRegistry.getAllMetas() so apps registered later in module setup are still captured.

  • a82dbb0: Fix frontend-core:link-resolver:* and frontend-core:page-renderer:select-page-variant hooks: handler-set result.value is now read synchronously, so hook results actually take effect. Previously the result was read before Nuxt's deferred handlers ran, so every registered handler's output was silently dropped.

    frontend-core:link-resolver:resolve is now a filter hook: it runs after a link is resolved, with result.value pre-seeded with the resolved URL/path. Handlers receive the resolved value and may transform it (e.g. append query params) for any link type; the value is threaded across multiple handlers. Existing handlers that overwrite result.value keep working unchanged.

@laioutr-core/ui@2.2.3

Patch Changes

  • a81154c: PriceInfo, ProductTileBasic, and CartListItem now render their unit price via the new $unitPrice formatter instead of inlining $money(...) / $measurement(...). No visual change — the rendered string and each component's BEM classes are unchanged.

@laioutr-core/ui-kit@2.2.3

Patch Changes

  • e406b05: Use shared now in OpeningStatus components and composables
  • a81154c: Add a $unitPrice i18n formatter that renders a UnitPrice as a localized price / reference string (e.g. 13.99 € / 100 ml), composing the existing $money and $measurement formatters. Available as a template global alongside $money / $measurement, and used internally by VariantSelectionCard so the unit-price string is produced in one place.
  • 7f1182a: Fix .radius-contained collapsing to square corners on tall elements. Inset banners (BannerBasic, BannerShowcase, BannerIntegrated, BrandHero) now keep their rounded corners regardless of height — previously a banner taller than the viewport width (common at mobile widths) lost its rounding entirely. Full-bleed, edge-to-edge banners still render square as before. No action required.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment