Recent Activities

This page shows what are we working on.

breezefront / theme-frontend-breeze-enterprise-eir

16 minutes ago success
  • head
    • Add styles for slider dots component in grid layout 767bf3

    • Fix sticky title line-height variable in sticky cart 6af33d

    • Reduce spacing for headings level 1 9a63f6

    • Homepage: use new brand logos 96b432

    • Open cart sidebar after adding product to cart 30bffc

    • Fixed sticky cart and sticky columns conflict: options were not visible after scrolling 10cc88

    • Running line font-size reduced on home and product pages b362c5

    • Improved FAQ block on product page abd787

    • Moved Also Bought block after banner on product page; improved mobile styles c3edbb

    • Homepage: hide the top banner text on mobile d860bb

    • Homepage: changed banners grid text color 282fa5

    • Running line font-size reduced on homepage 48b0ec

    • Adjust running text font size and padding d95aec

    • Change header slideout menu layout from flex to grid 3ab3fe

    • Running line font-size reduced df52ab

    • Updated SoldTogether styles 81070c

    • Use Stripe layout as default for Frequently Bought Together block 49d70b

    • Added sticky Add to Cart bar on product pages cec5bb

    • Move stock status above the image on mobile 5f5712

    • Moved stock status above the add-to-cart form c4b645

    • Moved category CMS to bottom and added sample static block content 7b6b1c

    • Content Builder images updated f6cdbe

    • Add gap and margin adjustments for product item actions in listing layout 2363f7

    • Add layout configuration for catalog search results page 285928

    • Login customer form styles update. cbc7e9

    • Add layout styles for layered navigation and blocks; update variables 8b00ba

    • Improved out-of-stock and bundle products styles 56e102

    • Added Sold Together styles 4ad53f

    • Sticky media and info blocks on product page on desktop e6754a

    • Improved filter dropdown styles 61da32

    • Move ECI after description 4bf01c

    • Few minor changes to shop by dropdown 22fc09

    • Enhance header slideout menu. Adjust top offset. 75cdb2

    • Related product block. Fix issue incorrectly placed button when critical CSS enabled. 63d63b

    • Added testimonials and FAQ blocks to the product page e95221

    • Remove listing banners except for the first one 0b5f7c

    • Added ECI config, layout, and styles 9823dd

    • Updated styles and scripts to work with Qty Switcher module 59ad66

    • Minicart. Update slideout positioning and add scroll tracking for dropdown dialogs 96fbb9

    • Update header panel styles for pagebuilder slider. 4967ce

    • Refactor header panel: remove EasySlide integration, add header panel info block, and update styles for header panel slider 662724

    • Remove EasySlide configuration and related HTML content ea5c76

    • Add noEscape directive to continue shopping button URL ac4b9c

    • Update listing gap variable to use defined spacing 41f0ca

    • Add CSS class to main title in checkout cart layout dc41f6

    • Shopping cart page is done. c1d6d0

    • Shopping cart page in progress 8ca297

    • Shopping cart page 9fa558

    • Enhance quantity input styling and functionality. Apply border-radius to buttons and ensure step attribute is valid. 1bcebb

    • Add padding variable for navigation link caret. aa8d04

    • Quantity wrapper component. f57c8d

    • Product page. Adjustments for related products layout. aa27ee

    • Product page. Add new layout container. Place BCB marquee content there. a2fe52

    • Product page. Enhance gallery configuration and update layout variables for improved styling and responsiveness. b89117

    • Product page. Add grid area for price information and implement gallery layout for improved product display. 76b0b3

    • Product page. Add focus ring styling for checkboxes in related products block to enhance accessibility. ab2227

    • Product page. Refactor related products layout for improved responsiveness and styling consistency. 5aa789

    • Product page. Update quantity button icons to use mask images for better scalability and styling. 9576ee

    • Product page. Related products block. 7ed6de

    • Product page. Implement review popup for full review text display and enhance accessibility. d38885

    • Product page. Add toggle for "Write Your Own Review" form and adjust styles for review list 9973d8

    • Product page. Revies list is done. Revie form next. 5bf007

    • Theme Editor: added Listing, Animations, and Advanced sections a4451d

    • Theme Editor: added Colors section 390891

    • Product page. Reviews in progress... e13b99

    • Theme Editor: added Layout, Typography, Overlay Header, Border Radius, Color and Font Palettes ff5e62

    • Productpage. Review in progress... 7059e9

    • Productpage. Review in progress. 669824

    • BCB featured product component. 0651cf

    • Add styles for featured product details, SKU, and price row in BCB d65f2d

    • BCB accordion styles at product info main. 1a262b

    • Installer. Add accordion for products. 466a5b

    • Add padding to swatch options in product add form for improved layout f10f77

    • Product main info ... in progress bf5c3f

    • Enhance product quantity input with increment/decrement buttons and update styles for better usability 72192e

    • Update product page medium image dimensions to 590x590 012c72

    • Fix minicart styles: set empty counter opacity to 0 79fcd1

    • Increased h2 bottom margin dff6ea

    • Product page action buttons. d008f0

    • Updated footer content links and section titles for improved clarity and user experience 241039

    • BCB homepage: fixed wrong image name b1a4f4

    • Rating stars styles in product listing f17a0f

    • BCB homepage: updated full width banner and sections spacings 2076c7

    • Fixed sort order of product details inside grid listing 9ad360

    • BCB homepage: updated Videos and full width banner sections 072733

    • Product page title font-size. d0987c

    • Footer. Minor fix for ring reval animation. Restore missing divider in footer. (#3) 54cdc4

    • Footer ring reveal animation added (#3) 4a8be8

    • BCB homepage: added animated badges to top banners grid 197e37

    • BCB homepage: added rotation animation for Full Width Banner 1420f9

    • BCB homepage: top banner updated a53bd5

    • Update favicon color 5ea666

    • Update favicon 18d8dc

    • Slightly update footer background. 5fcbfc

    • Footer content update. Add contact block (#3) dea42e

    • Fixed missing minicart overlay on first open (#2) 54feaa

    • BCB homepage: updated Browse categories block dbfa89

    • Breadcrumbs 196469

    • Done with search (#2) d8e0f3

    • Enhance minisearch functionality with slideout behavior and styling adjustments without Ajaxsearch (#2) 8c4a9d

    • Minisearch styles when ajaxsearch disabled... in progress (#2) 259fac

    • Remove unused styles from viewcart action and update empty subtitle styles in minicart (#2) dba7a5

    • Minicart complete (#2) 56efd2

    • Search on desktop (#2) 9c587e

    • BCB homepage: added videos section 7ee864

    • Minicart inprogress (only buttons to adjust)... (#2) c1be91

    • Minicart update in progress.... c3d18b

swissup / module-stripe-enhancements

1 hour ago success
  • 4.7.1
    • Version 4.7.1 9eb3b8

    • Cleanup cart when adding subscription because Paypal doesn't work well 363f66

    • Improve import command 4ac59e

    • Prevent duplicate subscription rows if paypal resends IPN 0cefe8

    • Do not allow to add subscription with other product because paypal fails 3a815b

    • Prevent possible php errors ef3e62

    • Improve validation of cancel subscription action a72121

  • 4.7.0

swissup / theme-frontend-swissuplabs

5 hours ago success
  • head
    • Enhance 404 page: add suggestions and search functionality, improve layout and styles #47 1ccc5e

    • Security patch monitor page: fix layout #56 adb16f

    • Security patch monitor page: design with sticky TOC and copy buttons #56 e1b311

    • Add icons to customer menu #44 a6a11e

    • Subscription product page: show Buy button on mobile #43 ec0d18

    • Improve deployer page #48 d87605

    • Subscription archive: link Reorder to order page instead of sales/order/reorder #53 c42992

    • Stores using: add srcset with PageSpeed 0.5x/0.75x variants and sizes for store images #49 d8a112

    • Product Page: Add section Stores using ceed62

    • Fix Red Hat Display font preload 70dfce

    • Product page: keep product name from jumping when ProLabels label is inserted ed8eef

    • Fix listing grid columns for 1column layout: use current Breeze variable names #52 4c81d9

    • Blog: replace FontAwesome list icon with SVG, style wp-block-code like Prism 7febcd

    • Use category path in breadcrumbs #50 4b10c4

swissup / module-swissuplabs

5 hours ago success
  • head
    • Enhance 404 page: add suggestions and search functionality, improve layout and styles #47 cc14be

    • Breadcrumbs: skip Magento Extensions category on product and category pages #55 5189cc

    • Add icons to customer menu #44 cf113b

    • Subscription product page: add product-subscription body class ae2732

    • Redirect sales/order/reorder to the order page e19f99

    • Stores Using attribute: use wysiwyg/stores in field note example c49caf

    • Add product atribute stores_using 4f2b4a

    • Show subscription expired message on Activation and My Tickets pages e1d992

  • 1.0.0
    • Use category path in breadcrumbs #50 317f00

swissup / module-sold-together

7 hours ago success
  • head
    • Define swissupSoldTogether on every page that renders the block

      soldtogether.Initialize was declared only in catalog_product_view.xml, so
      blocks placed on other pages (FireCheckout checkout, Suggestpage, custom
      layouts) failed with "ReferenceError: swissupSoldTogether is not defined".
      The block now adds the init script to before.body.end itself when missing.

      Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> 081fc4

  • 1.11.6
    • Version 1.11.6 6c976b

    • Show customize button for unsupported product types c0e2df

    • Image sizes in the Stripe layout are no longer affected by the length of the product name a4928e

swissup / module-ajaxsearch

7 hours ago success
  • 1.15.0
    • Version 1.15.0 36e4f5

    • Merge pull request #73 from swissup/fix/category-option-escaping-64

      fix(category-options): escape the category name in the GraphQL label (#64) a3b14f

    • fix(category-options): escape the category name in the GraphQL label (#64)

      getOptionName() returned &nbsp; padding concatenated with a raw category
      name, so the GraphQL `text` field was half markup and half unescaped
      input while its server-rendered twin in Block\Filter\Category escaped
      the name. Escape it there too, so `text` is uniformly safe to render as
      HTML by any consumer.

      Escaper::escapeHtml does not double-encode, so the &nbsp; padding
      survives. The GraphQL labels are decoded in processResults against a
      fixed entity map, with &amp; decoded last; no HTML parser is involved,
      so an unescaped label from an older cached response still cannot turn
      into markup. The <select> path is decoded by the document parser already
      and is left alone.

      Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> b5f98d

    • Merge pull request #81 from swissup/fix/category-options-total-count-79

      fix(category-options): report the number of options actually returned (#79) ee5b49

    • Merge pull request #80 from swissup/fix/category-cache-failed-requests-78

      fix(category-filter): drop a failed options request from the cache (#78) 5ec12c

    • Merge pull request #77 from swissup/fix/suggest-rate-limit-66

      feat(backpressure): rate limit the autocomplete controller too (#66) ee49cd

    • Merge pull request #76 from swissup/fix/query-memo-key-67

      fix(query-factory): key the per-request query memo on term and category (#67) df9352

    • Merge pull request #75 from swissup/fix/search-term-double-decode-62

      fix(graphql): stop encoding and decoding the search term twice (#62) 12953f

    • Merge pull request #74 from swissup/fix/quicksearch-regex-65

      fix(observer): match the stock quickSearch attribute, keep markup on PCRE failure (#65) bf8566

    • Merge pull request #69 from swissup/fix/category-graphql-variables-61

      fix(category-filter): send the search term as a GraphQL variable (#61) dd4469

    • Merge pull request #68 from swissup/fix/graphql-cache-identity-60

      fix(resolver): emit cache tags for ajaxsearch suggestions (#60) 042e3e

    • Merge pull request #71 from swissup/fix/security-guard-fatal-70

      fix(resolver): read the client IP from RemoteAddress, not the GraphQL context (#70) f8e7e5

    • Merge pull request #72 from swissup/fix/category-like-wildcards-63

      fix(category-search): match the visitor's % and _ literally (#63) 63fc09

    • fix(category-options): report the number of options actually returned (#79)

      total_count was $baseSize + $collection->getSize(). getSize() is the
      unpaged count of the whole filtered set, while items holds only the rows
      the loaded collection iterated, so the two disagreed as soon as the
      filtered set was larger than one page. AjaxsearchCategoryOptions exposes
      no paging arguments, so a caller had no way to fetch the remainder and
      no way to use the larger number.

      Count the options that are returned and drop $baseSize, which existed
      only to feed that sum.

      The new test lives in CategoryOptionsResultTest rather than
      CategoryOptionsTest because the open PR for #70 adds a file under the
      latter name; the two can be folded together once both have landed.

      Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 51f21c

    • fix(category-filter): drop a failed options request from the cache (#78)

      The select2 transport cached the jqXHR for every term the shopper typed
      and _localCache.has() only rejected null, which nothing ever stored. A
      request that failed once stayed cached, so every later lookup of that
      term replayed the rejection without retrying and the dropdown stayed
      empty for it until the page was reloaded. Other terms kept working,
      which made a transport failure look like missing data.

      Evict the entry when the request rejects, so the next lookup issues a
      fresh one. A request that is still pending is still shared, so repeated
      keystrokes on the same term are not duplicated.

      The cache is still unbounded; that is the second half of #78 and is left
      alone here because it is a footprint question, not a correctness one.

      Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 974d93

    • fix(resolver): read the client IP from RemoteAddress, not the GraphQL context (#70)

      Magento\GraphQl\Model\Query\ContextExtension exposes only getStore(),
      getIsCustomer() and getCustomerGroupId(); there is no getRequest(). Both
      resolvers called it while logging a too-short query, so the guard died
      with "Call to undefined method ... ContextExtension::getRequest()" one
      line before its own GraphQlSecurityException. Every short query from an
      anonymous visitor returned a 500 and wrote an uncaught Error to
      exception.log, and the intended input error was never raised.

      Inject RemoteAddress and take the IP from there.

      Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> d6cf01

    • fix(category-search): match the visitor's % and _ literally (#63)

      Both category search paths wrapped the term in % and handed it to a like
      filter unescaped. The value is bound, so this was never SQL injection,
      but % and _ typed by the visitor stayed live LIKE metacharacters:
      search: "__" satisfied the two-character guard and then matched every
      category name, dumping the whole tree for a request that carried no real
      search term.

      Model/Query/Catalog/Category is the one that matters in a default
      install: it backs the category data provider behind search/ajax/suggest,
      which is the transport ajaxsearch/main/graphql=0 selects.
      Model/Resolver/CategoryOptions is the same defect on the category filter
      dropdown.

      Escape %, _ and the escape character in both before wrapping.

      Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 1f5c7b

    • feat(backpressure): rate limit the autocomplete controller too (#66)

      Rate limiting only covered the two GraphQL fields, but
      ajaxsearch/main/graphql defaults to 0, so with the shipped defaults the
      storefront talks to search/ajax/suggest and that path was unlimited. One
      client could keep the search engine and the product collection loader
      busy from a single IP.

      Register search/ajax/suggest with core's controller backpressure, which
      Magento 2.4.4+ already enforces through App\Request\BackpressureValidator.
      The compat shim follows the pattern already used for the GraphQL
      extractor.

      The controller fires once per keystroke and is counted per IP, so it
      cannot share the GraphQL budget: a shop behind one office NAT would
      exhaust 100/hour in minutes. It gets its own type id reading
      ajaxsearch/backpressure/suggest_limit and suggest_period, defaulting to
      1200/3600, with LimitConfigManager taking its config paths as arguments.

      The extractor also checks ajaxsearch/main/enable: with ajaxsearch off the
      same controller serves Magento's own autocomplete, which this module has
      no business throttling.

      Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 0303f0

    • fix(observer): match the stock quickSearch attribute, keep markup on PCRE failure (#65)

      Three defects in two lines.

      The pattern required '{"quickSearch" to be adjacent, but Magento_Search's
      form.mini.phtml pretty-prints the JSON across several lines, so the
      observer never matched stock markup at all - it only ever fired on
      minified or custom templates. Allow whitespace after the quote and after
      the brace.

      The quantifier was a greedy (.*) with the s modifier, so where the
      observer did fire it matched from the first data-mage-init='{"quickSearch"
      to the last }' in the block and deleted everything between, taking the
      input's closing tag and the submit button's opening tag with it.

      preg_replace() also returns null on a PCRE failure, and the result was
      assigned unconditionally, so hitting pcre.backtrack_limit blanked the
      whole top.search block with no error and no log entry.

      Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 3abfc6

    • fix(query-factory): key the per-request query memo on term and category (#67)

      QueryFactory::get() memoised one query object per instance name for the
      whole request. A GraphQL document may carry several ajaxsearch fields,
      and each resolver call hands its arguments to the data providers through
      setPostValue() on the shared request, so the second and any later field
      was answered with the first field's cached query - its term and its
      category.

      Include the raw term and the category id in the memoisation key.

      Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 4b9286

    • fix(graphql): stop encoding and decoding the search term twice (#62)

      The storefront URL-encoded the term before building the GraphQL document
      and the resolver urldecode()d it again. The minimum-length guard in
      Items::resolve() ran on the encoded value, so search: "%20%20" measured
      six characters, passed the two-character check, and reached the engine as
      an empty query. Ordinary terms were corrupted by the same round trip:
      a literal "100%20" came out as "100 ".

      Send the raw term as a GraphQL variable and drop the urldecode(), so the
      value that is validated is the value that reaches the engine. The URL
      built for the non-GraphQL transport still gets encodeURIComponent().

      Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 45d74d

    • fix(category-filter): send the search term as a GraphQL variable (#61)

      The category dropdown built its GraphQL document by concatenating the
      shopper's raw term into a string literal, so a term containing a double
      quote or a backslash produced a syntactically invalid query and the
      dropdown stayed empty. A crafted term could close the literal and append
      further selections.

      Use a named operation with $search/$category variables and teach
      graphqlize() to forward a variables object in the request body.

      Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> ebe28e

    • fix(resolver): emit cache tags for ajaxsearch suggestions (#60)

      Item\Identity read $resolvedData['items'], a key Items::resolve() never
      returns, so getIdentities() always returned an empty array. An empty tag
      list does not make a GraphQL response uncacheable: for GET requests
      CacheableQueryHandler keeps cacheable=true and only skips addCacheTags(),
      so the suggestion payload was stored by the full page cache with no
      X-Magento-Tags and nothing ever purged it.

      Walk suggestions.products, .categories and .pages instead and emit the
      matching entity tags. Category and page payloads did not carry their id,
      so pass entity_id / id through prepareCategoryData() and preparePageData();
      neither key is declared in the schema, so the response shape is unchanged.

      Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 4f280c

  • 1.14.12
    • Version 1.14.12 2bd375

    • fix(autocomplete): honor display_in_terms for popular terms (#58)

      Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> a0c591

    • fix(frontend): escape product, category and page titles in suggestions (#58)

      Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> 5b5451

    • fix(graphql): log short-query attempts at debug without args and user agent (#58)

      Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> 7fc1e6

    • fix(category-options): do not disclose disabled categories (#58)

      Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> 785c7f

    • fix(autocomplete): honor display_in_terms for popular terms (#58)

      Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> c04e7b

    • fix(frontend): escape product, category and page titles in suggestions (#58)

      Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> ec632d

    • fix(graphql): log short-query attempts at debug without args and user agent (#58)

      Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> 655e16

    • fix(category-options): do not disclose disabled categories (#58)

      Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> 79c6ba

    • Fixed CLS caused by close button on Luma+Breeze f156b4

breezefront / module-breeze-content-builder

8 hours ago success

breezefront / theme-frontend-breeze-enterprise-blank

8 hours ago success

breezefront / module-breeze

11 hours ago success
  • head
    • Latest breeze theme compatibility d4e5bc

    • Assign ids to tab triggers referenced by aria-owns 0e25f9

    • Don't speculate `persistent` urls 065f3c

    • Better dependency resolving inside bundle (checkout tests) cc25ca

    • Added missing methods to checkout components 3a587f

    • Fixed possible js error when calling debug early 689d66

    • Improve runtime nested deps resolving (A > B > C > D) 85a9bd

    • Read deps from requirejs-config when better compat is enabled 8eb715

    • Added missing `$.Event` be2d4d

    • Fixed missing child components at checkout page 37df49

    • Fixed checkout integration errors a45aac

    • uiComponents: Fixed empty provider when dataScope is not set a9dfcf

    • Prepare nested children as well. Fixes checkout flatrate validation 9905d7

    • Do not ignore rjsResolver anymore 7e40af

    • CheckoutLoader component 042f34

    • Align `$.Deferred` with jQuery API c9f87f

    • Align `$.request` with jQuery API 8aa15c

    • Improve `:visible` selector support 91a9ff

    • Fixed undefined child in elems when uiLayout component is not loaded yet 345194

    • Added `repeat` knockout binding (payment methods list) ba27e4

    • Wait for mixins before resolving a dependency e24fd4

    • Custom modal should not render lazily (checkout order summary) 3bfe11

    • Fixed infinite focus loop when validating single field (login popup) 59cd0c

    • Allow using `:visible` hack for multiple selectors 268c1a

    • Fixed mixins not applied to module dependencies when loaded asynchronously 5d91b8

    • Basic implmentation of `ko.datepicker` 05df54

    • Align date with moment.js 8ce8c3

    • Align calendar with jQueryUI f1cd4a

    • Align ui cmp initialization with Magento. Do not pass element.
      This fixes `google-pay-cart` logic. d292d3

    • Implement `ko.fadeVisible` 4c14f6

    • Implement simplest version of `rjsResolver` 3440bb

    • Fix possible js error: read source synchronously first a77cb4

    • Align js cmp with Luma: Don't overwrite existing fn with `undefined` baea61

    • Added `validation.check` method 531321

    • `$.grep` implementation c5ec90

    • Fixed possible js error `Cannot read properties of undefined` fb7bef

    • Do not load js component if it uses `componentDisabled: true` cd0baf

  • 2.32.1
    • Version 2.32.1 c5afe6

    • Prevent infinite loop when head contains invalid stylesheet link 582a77

    • Fixed incorrect magnifier image when using expanded gallery fc2f6b

    • Prevent auth popup form submit when recaptcha is not ready yet
      Closes #101 740ada

    • Fixed incorrectly marked lazyload when main image is not the first one d5cd6b

    • Do not add dom duplicates to $.registry 84beb6

breezefront / theme-frontend-breeze-blank

11 hours ago success
  • head
    • Create `_checkout-critical.less` and `_checkout-deferred.less`
      They may be used for easier third-party integrations
      See https://breezefront.com/docs/integration-example#include-module-css f6e64a

  • 3.2.3
    • Version 3.2.3 0f5fb8

    • Revert "Explicitly set navigation item paddings"

      This reverts commit cb77b10eaf9af978e1548035c957edae74e6da2e. 0b7288

    • Explicitly set navigation item paddings cb77b1

    • Added labels for footer containers 780d47