Recent Activities
This page shows what are we working on.
-
1.9.0
-
Version 1.9.0 910446
-
-
1.9.0
-
Version 1.9.0 1ed62b
-
-
1.1.1
-
Version 1.1.1 36b6cd
-
feat: integrate easybanner b0c2ab
-
fix: hide slider pagination by default 53cede
-
fix: configure ProLabels selectors 266541
-
feat: improve recently viewed layouts 246589
-
feat: use responsive images with srcset in product list item and gallery 63f861
-
feat: make breadcrumbs horizontally scrollable ab4c14
-
style: Improve footer links #12 f97617
-
fix: improve accessibility & mobile logos #9 6a8485
-
-
1.1.0
-
Version 1.1.0 adaf76
-
Improve spacing for text and headings #7 4d669d
-
fix: accessibility improve #54 793c44
-
Improve spacing for text and headings #7 3f5bc1
-
style: adjust EasyTabs layout and borders for expanded state e5db6c
-
style: implement container-based layout for more flexible product sliders cde87a
-
feat: implement brands block a37b3b
-
feat: implement contact map CMS block 5221b0
-
style: home page 933872
-
style: implement advanced product card hover effect and fix slider shadow clipping ca693c
-
style: use div wrappers instead of li for product carousel f17016
-
fix: correct mobile menu 18eb40
-
-
1.0.4
-
1.1.6
-
1.1.5
-
1.7.42
-
Version 1.7.42
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> efc0bd -
Merge pull request #65 from swissup/fix/stale-quick-view-section-64
fix: drop stale popup sections on page load (#64) 0ed54a -
fix: ignore the data_id marker when spotting a stale payload (#64 review)
Every section the server answers is stamped with data_id, blocks or not, so
`_.isEmpty()` saw a marker-only ajaxpro-product as a payload and cleared it on
every page load.
On Breeze that clear also removed the storage entry behind customerData's
back, leaving the section_data_ids cookie pointing at a data_id that was no
longer stored — getExpiredSectionNames() then reported the section expired and
reloaded it on every page. Breeze writes storage in reload() alone and its
set() only touches the observable, so clearing the observable is enough.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> f1e86e -
fix: drop only the product payload, once per page (#64 review)
Clearing every popup section also emptied ajaxpro-cart, which
view/minicart/override.js reuses: it opens the cart popup straight from the
markup rendered on page load and only reloads the section when that block is
empty. With the section cleared, every page load triggered an extra
section/load and a minicart click in the first second opened nothing.
Breeze needs the storage entry removed as well — its customerData.set() only
writes the observable, storage is written by reload() alone, so init()
re-hydrated the stale payload on the next page.
Drop the payload once per page: create()/initialize() run again on a
re-created component, when the storage may hold a payload that has just
arrived.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 92f5ae -
fix: drop stale popup sections on page load (#64)
Since disposableCustomerData was dropped in 1.7.36, ajaxpro-product keeps the
product view rendered for a Quick View in mage-cache-storage, and both
component flavors hydrated it back on every page load. That injected a whole
foreign product view into every page — duplicate #product_addtocart_form,
duplicate .column.main, an add-to-cart url pointing at the wrong product —
kept out of sight only by the modal styles.
A popup payload is only meaningful right after the action that produced it, so
anything still stored at page load is stale: clear it instead of binding it.
Live updates keep working through the subscription.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 34e999
-
-
1.7.41
-
Version 1.7.41
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 5f33b2 -
Merge pull request #62 from swissup/fix/popup-image-styles-61
fix: keep popup image styles off the listing thumbnails (#61) 284113 -
fix: keep popup image styles off the listing thumbnails (#61)
image_with_borders.phtml renders every product image with a
`product-image-container-<productId>` class and emits a global `<style>`
sizing that class. The ajaxpro-product section renders the same products as
the listing and lands in the document after it, so its rules won and the
listing thumbnail of that product took the popup image size - a 240x300
tile collapsed to 140x140, on page load already, since the stored section
is rendered into the popup wrapper every time.
The section markup now goes through ProductImageStyles::isolate(), which
renames the per-product class (`ajaxpro-` prefix). The popup keeps its own
sizes, the listing keeps its own, and the `product-image-container` base
class that themes style is untouched.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 99c64a
-
-
v1.8.4
-
Version v1.8.4 eac18a
-
Merge pull request #27 from swissup/fix/duplicate-switcher-language-id
Fix duplicate switcher-language ID on mobile header switcher a8be67 -
Fix duplicate switcher-language ID on mobile header switcher
store_language_mobile rendered the same Swissup_Easyflags flags.phtml
template as the desktop store_language switcher but never passed
id_modifier, so both blocks emitted id="switcher-language" and stayed
in the DOM together across breakpoints (only CSS toggled visibility).
Pass id_modifier="mobile" for the mobile block, matching the pattern
already used by navigation.language.switcher (id_modifier="menu").
Desktop store_language keeps the unmodified id for backward compat. 2b04a8 -
Move easyslide mixin into the swiper bundle group
The easyslide widget itself is bundled under the "swiper" group
(declared by module-easy-slide's own breeze_default.xml), not
"default" - a mixin in the wrong group never loads on pages that use
the slider, since bundle groups only fetch when one of their own
items' load trigger fires. 92057e -
Merge pull request #26 from swissup/fix/easyslide-centered-slides-cls
Fix CLS from EasySlide centeredSlides re-center on init 9855dc -
Fix CLS from EasySlide centeredSlides re-center on init
centeredSlides re-centers the active slide via a CSS transform once
Swiper mounts, moving already-painted content and counting as a
layout shift on every page load that uses this admin option.
startRandomSlide already hides the slider (opacity: 0) until Swiper
reports init - reuse that same reveal step for centeredSlides via a
theme-level mixin, so the re-center happens before anything is shown. 5f9992
-
-
v1.8.3
-
Version v1.8.3 cf5afd
-
Merge pull request #25 from swissup/claude/busy-chebyshev-550a8e
Fix remaining homepage CLS contributors on 420shop.nl 38a7a7 -
Fix hero slider CLS regression on autoplay transitions
Live Lighthouse re-test on staging (after the earlier round of homepage
CLS fixes) surfaced a new contributor: switching to the next autoplay
slide caused a ~0.106 layout shift on its own, larger than everything
fixed in the previous commit combined.
Root cause: Swiper's autoHeight option resizes .swiper-wrapper to match
the currently active slide's own box. slider.phtml computes a real
per-image aspect-ratio for every slide, so any two slides with
different native image ratios produce a different wrapper height -
autoHeight then reflows the page on every transition between them.
Fix, scoped to this theme's slider.phtml/// _slider.less override only:
- Force autoHeight off in the JS config passed to the Swiper widget,
regardless of what's stored in the admin slider config.
- Only give the first (initially visible) slide its own precise inline
aspect-ratio, to still reserve the correct box before it loads.
Other slides fall back to the shared CSS aspect-ratio in
_slider.less, so the wrapper's reserved height is fixed once and
never changes as autoplay rotates through slides.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> f90c23 -
Fix remaining homepage CLS contributors on 420shop.nl
Follow-up to the hero-slider CLS fix (#24) — a fresh mobile Lighthouse
run against staging still showed CLS 0.244, unrelated to the slider.
Root causes traced and fixed:
- .jumbotron.hero.block-news (the "Nieuw op 420shop" carousel) was
excluded from the existing min-height reservation, and
#hr_frontPage_box_1/_2 placeholders had no reservation at all —
both left main#maincontent > div.columns to reflow as content
loaded. Added both to the reserved-height selector groups
(mobile + critical-CSS duplicate, kept in sync).
- Hot-stuff promo images (bong/rolling-tray/grinder) have width/height
HTML attrs but no matching CSS aspect-ratio, because their
argento-grid/col-md-4/.image markup was copied from the unrelated
Argento theme family and never got real grid/image CSS in this
Breeze-family theme. Added a scoped aspect-ratio + object-fit rule
for .block-hot-stuff .image img, mirroring the EasySlide fix
pattern, plus flex on .argento-grid to remove the unclearfixed
float ambiguity.
- Same missing-aspect-ratio gap existed on .swiper-slide
.product-image-photo (Bestsellers/NewList carousels); added
aspect-ratio matching the theme's category_page_grid image config.
- Child theme's own Barlow Semi Condensed font-family declarations
used a plain sans-serif fallback instead of the metric-matched
fallback faces already defined in the parent theme, causing
avoidable reflow on font swap. Switched to the full fallback chain
in the 6 places that had it wrong.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> 278dfe -
Merge pull request #24 from swissup/fix/hero-slide-cls
Fix high CLS on hero slider (theme override of easyslide templates) 4ef475 -
Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> be0239 -
Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> 465ba1 -
Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> efa291 -
Move slider CLS-fix CSS into custom/vendor/_slider.less
Follows the existing _cart.less/_faq.less/etc convention instead of
growing the already-700+-line _custom.less further.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> c25841 -
Fix high CLS on hero slider (autoHeight collapses slide before Swiper init)
Same root cause and fix as swissup/module-easy-slide#42: slide has no
reserved height before JS runs, and Swiper's autoHeight only sets the
real height after init/image load - visible jump, reported as
0.36-0.47 CLS on the homepage.
Overriding here (rather than waiting on the module release) so it
ships to 420shop.nl now:
- Swissup_EasySlide/templates/{slider,image}.phtml: theme override
of the module templates, carrying the same fix (inline aspect-ratio
per slide, eager+fetchpriority=high on the first slide)
- web/css/_custom.less: matching aspect-ratio/object-fit rules next
to the existing .easyslide-description customizations
Once module-easy-slide#42 is merged and released, these template
overrides can be removed (composer bump + delete the two files).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> 2611d4
-
-
1.6.17
-
Version 1.6.17 e63fa2
-
-
1.6.17