- 0262d90: Honor URL redirects configured for the project. Visiting a redirect source path (exact or
:parampattern) sends the user to the configured target —isPermanent: truereturns 301,isPermanent: falsereturns 302. Works for direct hits, hard reloads, and SPA navigations via<NuxtLink>orrouter.push, including on storefronts that define a customcore/404page. Query strings are preserved; targets can be absolute URLs for external redirects.
-
03d0edb:
BackgroundAwareButton's adaptive lookup variants are nowadaptive-primary/adaptive-secondary/adaptive-ghost(previouslyprimary/secondary/ghost), so they no longer shadowButton's literalprimary/secondaryvariants. The pass-through variants (tertiary,secondary-white,ghost-*,glass-*,subtle,info,positive,danger,close-*) are unchanged.In Studio, the new
backgroundAwareButtonFieldsshared field exposes the threeAdaptive *options alongside the existing literalButtonVariantoptions. Every section and block with a CTA now uses this field — banner sections, the sliders,BlockButton,BlockCard,BlockText, and now also the header, footer email button, 404 page, and pricing-plan card, whose CTAs newly adapt to their surrounding surface tone. Editors opt into per-surface remapping by picking anAdaptive *option.Custom themes that override
backgroundAwareButtonsindefineTheme/extendThemeneed their map keys renamed accordingly (light:light:primary→light:light:adaptive-primary, same forsecondaryandghostacross alllight|dark×light|dark|brightcombos).Stored Studio CTAs where an editor previously picked "Primary" or "Secondary" will, after upgrade, render as the literal Button variant on the storefront — the per-surface remap is no longer applied unless the editor re-selects an
Adaptive *option. -
29a6ad4:
Scrollbarnow owns its interaction and sizing logic, andSwiperScrollbardrives it from Swiper state.Scrollbarnow takesprogress(0..1) andvisibleRatio(0..1) instead ofthumbSize/thumbPosition(px), and emitsupdate:progressinstead oftrack-click/drag-start. It computes thumb size/position, handles drag and track-click, and hides itself (viavisibility) when content fits.Before:
<Scrollbar :thumb-size="120" :thumb-position="40" @track-click="onClick" @drag-start="onDragStart" />
After:
<Scrollbar :progress="0.3" :visible-ratio="0.25" @update:progress="(progress, source) => …" />
sourceis'drag'(continuous) or'click'(jump-to-position), letting the consumer animate clicks but track drags 1:1.Also fixes
SwiperScrollbar, whose thumb was mis-sized and mis-positioned underslidesPerView: 'auto': the thumb now reflects true content size (including gaps and uneven slide widths), dragging tracks the cursor, and clicking the track animates to the nearest slide. No API change forSwiperScrollbarconsumers.