Skip to content

Changelog

Every Guppy release, in one place.

Aggregated from the CHANGELOG of each Guppy repository. Pick a product in the sidebar, or read the most recent releases across the whole ecosystem below.

119 releases across 12 products. Last updated 2 October 2026.

Recent

Latest releases

The most recent releases across every product, in date order.

Compatibility

  • Remove page/product-detail/buy-widget-form.html.twig. It extended @Storefront/storefront/page/product-detail/buy-widget-form.html.twig, which Shopware 6.7 no longer ships, so nothing rendered it. A child theme that overrides the page_product_detail_buy_* blocks was already without effect.

  • Remove the unused selectQuantityThreshold variable from component/buy-widget/buy-widget-form.html.twig. Core has not read it since 6.7.0.

  • A child theme that styles .quantity-field-wrapper > div or .quantity-field-wrapper > label needs a check: the wrapper is now a <fieldset>, and the label is a <legend> placed before the group.

Fixed

  • Fix the left corners of the quantity minus button on the product detail page. The visually hidden <label> was the first child of .input-group, which made the minus button :not(:first-child), and Bootstrap's .input-group > :not(:first-child) rule sets both left radii to 0. GUPPY-102 worked around that with an !important rule that used $input-border-radius, which only looks right while buttons and inputs share a radius; a child theme with its own $btn-border-radius (for example pill buttons) got a different radius on each side of the group. The hidden text now sits outside the group, so the minus button is the first child again and takes its radius from .btn like the plus button. The workaround in scss/component/quantity-selector.scss is removed.

  • Change the quantity wrapper in component/buy-widget/buy-widget-form.html.twig from a <div> to a <fieldset> and the hidden <label> to a <legend> with the component.product.quantitySelect.legend snippet, as in Shopware core. The label had no for attribute and never named the input (the input carries its own aria-label), so a screen reader now announces the group name once instead of nothing.

  • Use a 7/5 column split for the gallery and buy box (cms-block-gallery-buybox) on lg and keep 8/4 from xxl.

Added

  • Add GARAN label block to the buy-widget (buy_widget_garan_label).

Fixed

  • Fix the category-slider config panel failing to load in the category's layout tab with TypeError: this.getDefaultTranslations is not a function. The panel overrode initElementConfig and called a helper that Shopware 6.7 no longer provides. The override is removed, so the panel now uses the initElementConfig of the core cms-element mixin, which merges the default config and applies the category's slot config override. Before, the panel stayed empty and the slider items of a category-level override could not be edited (STARCKE-140).

Fixed

  • Fix the category-slider config panel failing to load in the category's layout tab with TypeError: this.getDefaultTranslations is not a function. The panel overrode initElementConfig and called a helper that Shopware 6.7 no longer provides. The override is removed, so the panel now uses the initElementConfig of the core cms-element mixin, which merges the default config and applies the category's slot config override (STARCKE-140).

  • Keep the active tab of each item separate in the items tab of the slides, accordion, image-text-slider and product-highlights configs. Before, all items shared one tab state, so after switching one item to Content, every other item showed the Content pane while its tab bar still highlighted Background (STARCKE-140).

Fixed

  • Remove the imageCount <= 5 check that hid the image gallery thumbnail arrows. DmfSplideSlider now hides slider arrows whenever the slides fit, which covers the same case and also adapts to the actual width (GUPPY-329).

Fixed

  • Disable dragging and loop clones, pause autoplay and hide the autoplay toggle when all slides fit and there is nothing to scroll (GUPPY-329). Autoplay resumes once the slides overflow again, unless a visitor paused it. The behaviour is a Splide extension, OverflowHandling, which dependent plugins pass on mount from the new global window.DmfSplideExtensions.

  • Dependent plugins mount with all shared extensions (.mount(window.DmfSplideExtensions), or getSplideExtensions() in DmfCmsCustomElements and DmfUspBanner), so an extension added here later applies to their sliders too. This plugin names OverflowHandling explicitly. Dependent plugins can't, because they have to keep working with versions before 0.1.5, where window.DmfSplideExtensions does not exist (GUPPY-329).

  • Remove the d-flex utility from the .splide__arrows wrapper in cms-element-splide-slider.html.twig; the wrapper now gets display: flex from SCSS so the arrows can be hidden without !important (GUPPY-329).

Fixed

  • Hide the slider arrows when all slides fit and there is nothing to scroll (GUPPY-329).

Changed

  • Rename the product-slider and cross-selling config keys qtyDesktop, qtyTablet and qtyMobile to slidesPerViewDesktop, slidesPerViewTablet and slidesPerViewMobile, the keys the other sliders of this plugin and DmfCmsCustomElements use. Templates that include cms-element-product-slider.html.twig with a slidesPerView* config, such as the product slider block of DmfCmsBlog, now get the number of slides they ask for (GUPPY-329).

Compatibility

  • Migration1790330000RenameQtyToSlidesPerView renames the keys in existing CMS content: the element configs in cms_slot_translation and the per-product, per-category and per-landing-page slot overrides in slot_config. Where a slidesPerView* key already exists, it is kept and the qty* key is dropped. Themes or plugins that pass qty* keys to cms-element-product-slider.html.twig have to switch to the new keys (GUPPY-329).

  • The Twig variables qtyDesktop, qtyTablet and qtyMobile inside cms-element-product-slider.html.twig are renamed to slidesPerViewDesktop, slidesPerViewTablet and slidesPerViewMobile. Themes that extend the template and use them in an overridden Twig block have to rename them (GUPPY-329).

  • The administration snippet keys sw-cms.elements.productSlider.config.label.qtyDesktop, …qtyTablet and …qtyMobile are renamed to …slidesPerViewDesktop, …slidesPerViewTablet and …slidesPerViewMobile (GUPPY-329).

  • Administration overrides of the product-slider or cross-selling config that bind to element.config.qtyDesktop, qtyTablet or qtyMobile have to bind to the slidesPerView* keys (GUPPY-329).

  • CMS content imported after the update with the old qty* keys, e.g. through a CMS import, is not migrated and falls back to 4 / 2 / 1 until the values are set again (GUPPY-329).

Fixed

  • Base the tablet padding of the product slider on the resolved tablet value instead of the raw config. Without a tablet value, the threshold was 0 and the slider got 150 % right padding instead of none (GUPPY-329).

  • Compare the mobile value against the mobile threshold instead of the tablet one. This had no visible effect, because the result is the same for every value (GUPPY-329).

Fixed

  • Let the benefits slider take all the room next to the language and currency switchers from lg up. The centred middle track sized itself to the slides' content, so the benefits sat cramped in the middle once Splide rendered no loop clones while all benefits fit (GUPPY-329).

Fixed

  • Mount the banner slider with the shared Splide extensions from DmfSplideSlider via the new getSplideExtensions() helper, so dragging and loop clones are disabled while all benefits fit and there is nothing to scroll (GUPPY-329).

  • Read Splide through getSplide(), like DmfCmsBlog and DmfCmsCustomElements. A missing DmfSplideSlider plugin now throws an error instead of silently leaving the banner unmounted (GUPPY-329).

Added

  • Add device-view parity to the 23 custom-grid-*-column block canvases, so the page builder's mobile/tablet/desktop toggle renders the column layout each block emits on the storefront (GUPPY-316).

Fixed

  • Correct the canvas gutter from 15px to the 1.5rem the storefront renders through the Bootstrap g-4 gutter (GUPPY-316).

  • Give the two-row grids auto row heights, so each row keeps its own content height instead of every slot being flattened to the tallest one (GUPPY-316).

Added

  • Add device-view parity to the element canvases so the page builder's mobile/tablet/desktop toggle is reflected (GUPPY-316).

Changed

  • Rework the element preview, block preview, canvas component and config for all ten custom elements (GUPPY-316).

  • Replace the inline SVG previews with HTML/CSS mockups and render every canvas live from the element config (GUPPY-316).

  • Split the shared guppy-cms-* config tabs into collapsible cards and repoint all elements at them (GUPPY-316).

  • Rework guppy-cms-items-tab into the single source of truth for item chrome across the four array elements (GUPPY-316).

  • Replace the image placeholder in the banner and guppy-card canvases with a small "No image selected" hint, so the canvas matches the storefront layout when no image is set (GUPPY-316).

Removed

  • Remove the admin config-tab Twig blocks replaced by the collapsible cards, e.g. sw_cms_items_tab_collapse_*, sw_cms_items_tab_cta_* and the sw_cms_element_*_config_slot blocks; admin overrides of them no longer apply (GUPPY-316).

  • Rename the video admin components to sw-cms-*-guppy-video to stop them clashing with Shopware core; overrides of the old sw-cms-*-video names now hit the core components (GUPPY-316).

Fixed

  • Fix the video element not mounting by renaming the admin components that clashed with Shopware core (GUPPY-316).

  • Render HTML in product-highlights hotspot teasers instead of escaping it (GUPPY-316).

  • Remove a duplicate preload attribute from the video template (GUPPY-316).