Recent Activities

This page shows what are we working on.

breezefront / theme-frontend-breeze-enterprise-eir

44 minutes ago success
  • head
    • 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

    • Minicart update in progress... (#2) 55e7b9

    • INstaller. Create dummy CMS block header_panel_info to allow user add custom content (#2) f70d58

    • Adjust minicart counter (#2) 03e843

    • BCB homepage: Added brand logos section b905f1

    • BCB homepage: Added testimonials section 2ab2cf

swissup / easytabs

1 hour ago success

swissup / module-easytabs

1 hour ago success
  • 1.14.0
    • Version 1.14.0 e7a58a

    • Fix tabs.js cleanup on destroy, selector escaping and scroll button clicks 9cd5d6

    • Fix double-encoded widget_identifier when installers update tabs cc0db3

    • Cache empty tabs result to avoid repeated tab queries 7982ca

    • Fix stale full page cache for tabs, ajax tabs and GraphQL

      - Tag pages with the generic easytabs_entity tag and flush it on tab save, so new or enabled tabs appear on cached pages
      - Add product cache tags to ajax tab responses
      - Add CMS block cache tags to GraphQL getEasyTab responses a93cca

    • Fix mass Enable/Disable skips widget tabs ef2b21

    • Fix `tabsUpdater._destroy` throws `ReferenceError` 7bae6f

    • Handle malformed URI sequences in tab anchor decoding 973dd6

    • Fix customer validation for guest users by handling missing group_id f06ace

    • Enhance Ajax tab filtering and validation, implement safe parameter handling in LoadOptions and NewConditionHtml, and ensure proper product checks in Index controller ead1aa

    • Fix missing aria-level on tab headings in expanded layout (#39)

      * Fix missing aria-level on tab headings in expanded layout

      * Fix missing aria-level attribute for expanded tabs on Breeze

      ---------

      Co-authored-by: Vitaliy Dmytruk <vitaliy@swissuplabs.com> 3dab50

    • Fix missing aria-level attribute for expanded tabs on Breeze 05c0a6

    • Fix missing aria-level on tab headings in expanded layout 2523f0

  • 1.13.6
    • Version 1.13.6 fe61d0

    • Fix product visibility bypass and GraphQL tab conditions bypass (#38)

      * Fix product visibility bypass and GraphQL tab conditions bypass

      - Helper\Product::canShow(): parent_id fallback now applies only to
      enabled products and only when parent_id is their real parent
      (catalog_product_relation). Previously any visible product id in
      parent_id exposed disabled products via the easytabs AJAX endpoint.
      - GraphQL getEasyTab now validates tab conditions (customer group, etc.)
      using the customer group from GraphQL context, like the storefront does.

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

      * Address review: stable parent check, duplicate aliases, real customer group

      - Helper\Product: check parent's children via type instance
      getChildrenIds() instead of Relation::getRelationsByChildren(),
      whose return shape is not a stable API. Drops ObjectManager usage.
      - GraphQL data provider: with duplicate aliases, return first tab that
      passes conditions instead of failing on the highest-priority one.
      - GraphQL resolver: load caller's customer group via customer repository
      instead of defaulting to guest when context has no customer_group_id
      (guest fallback exposed "not in group X" tabs on older Magento).

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

      * Pick same tab as storefront for duplicate aliases in GraphQL

      Mirror Block\Tabs::_buildTabs(): among tabs passing conditions, prefer
      the requested store view over default store view (0), and within a store
      take the same tab the storefront does.

      Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> 90330e

    • Pick same tab as storefront for duplicate aliases in GraphQL

      Mirror Block\Tabs::_buildTabs(): among tabs passing conditions, prefer
      the requested store view over default store view (0), and within a store
      take the same tab the storefront does.

      Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> 06c0a8

    • Address review: stable parent check, duplicate aliases, real customer group

      - Helper\Product: check parent's children via type instance
      getChildrenIds() instead of Relation::getRelationsByChildren(),
      whose return shape is not a stable API. Drops ObjectManager usage.
      - GraphQL data provider: with duplicate aliases, return first tab that
      passes conditions instead of failing on the highest-priority one.
      - GraphQL resolver: load caller's customer group via customer repository
      instead of defaulting to guest when context has no customer_group_id
      (guest fallback exposed "not in group X" tabs on older Magento).

      Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> 3871b9

    • Fix product visibility bypass and GraphQL tab conditions bypass

      - Helper\Product::canShow(): parent_id fallback now applies only to
      enabled products and only when parent_id is their real parent
      (catalog_product_relation). Previously any visible product id in
      parent_id exposed disabled products via the easytabs AJAX endpoint.
      - GraphQL getEasyTab now validates tab conditions (customer group, etc.)
      using the customer group from GraphQL context, like the storefront does.

      Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> 3a8cc0

swissup / module-core

6 hours ago success
  • head
    • Stability improvements eece34

    • Remove pagination and grid views c08f0f

    • MCS fix 86609e

    • Copy patch name into clipboard 90282c

    • Added links to the error message 6f04a3

    • Error message when some patches are not applied 248770

    • Add Security page with Magento patch status

      Lists patches reported by vendor/bin/patch-status in a UI grid and shows
      the count of not applied patches in the Swissup menu badge.

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

  • 1.14.1
    • Version 1.14.1 e16f85

    • Escape remote feed data in module lists

      Latest version is rendered as raw html in the Module Manager grid, and
      docs/changelog links accepted any scheme. Escape the version and allow
      https links only.

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

swissup / module-ajaxsearch

6 hours ago success
  • head
    • 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> e3b960

    • 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> 5df291

    • 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> 0bf7e4

    • 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> 8988b8

    • 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> 9860f2

    • 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

swissup / module-speculation-rules

6 hours ago success
  • head
    • fix(config): keep the store switcher out of prerender (#12)

      The language switcher link in Magento_Store's switch/languages.phtml carries no
      class of its own - "switcher-option" is on the <li> - so the ".action" selector
      rule never sees it, and no href pattern covered the route. It points at
      stores/store/redirect, which 302s to stores/store/switch, where SwitchAction
      writes the store cookie. Both hops are same origin once the store views share a
      domain, so a hover changed the shopper's store view, language and prices.

      Speculation rules are matched against the link as it stands in the document and
      are not re-consulted for a redirect inside a running prerender, so the hop that
      has to be excluded is stores/store/redirect - the URL the template emits, with
      its ___store and uenc parameters. stores/store/switch is listed as well in case
      a theme ever links it directly.

      The currency and store group switchers use data-post and are unaffected.

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

    • fix(viewmodel): reuse the page's CSP nonce instead of minting a second one (#8)

      ObjectManager::create() handed the ViewModel a fresh CspNonceProvider, which
      generates its own nonce and registers it with the shared DynamicCollector. The
      enclosing <script> tag already carries the nonce that SecureHtmlRenderer took
      from the shared provider, so every render put one more accepted nonce into the
      script-src header than the page uses.

      get() returns that same shared provider. The class_exists() guard stays for the
      Magento versions that ship without Magento_Csp (#2), and the test skips itself
      there, since composer.json does not require magento/module-csp.

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

    • fix(config): exclude the sensitive routes behind a store code too (#6)

      href_matches patterns are anchored at the origin root, so "/checkout*" and
      "/customer*" stop matching as soon as the store sits behind a store code
      ("Add Store Code to Urls") or a subfolder base URL. On those installs every
      exclusion except "/*logout*" was void and the account, order, checkout and
      search pages fell through to the "/*" rule and were prerendered on hover.

      Ship a "/*/"-prefixed form next to every root-anchored pattern so one or more
      leading segments are allowed. The patterns also end at a slash now: the old
      "/customer*" shape swallowed CMS and catalog URLs that merely start with a
      route name, so /customer-service and /checkout-policy were never prerendered.
      The trade-off is that a hand-written href without the trailing slash, as in
      <a href="/checkout">, is no longer matched; Url::getUrl() always emits one.

      "/*logout*" keeps its position-independent shape on purpose. The core logout
      route is already covered by "/customer/*"; what the loose pattern is there for
      is the logout routes that SSO and customer-account extensions mount under
      their own frontName.

      Both shapes are covered in the test, together with the URLs the narrower
      patterns release, and with an assertion that every shipped pattern stays
      inside the "*"-only subset that the test's URLPattern model can represent.

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

    • fix(config): keep the "Not you?" link out of prerender (#7)

      persistent/index/unsetCookie is a GET that drops the persistent cookie and,
      with "Persist Shopping Cart" on, calls checkoutSession->clearStorage(). The
      link is injected by Magento_Persistent/js/view/additional-welcome with an href
      and no class, so neither the ".action" selector rule nor the href_matches list
      kept it out. Hovering the header link emptied the shopper's cart.

      Both the root-anchored and the "/*/"-prefixed form are shipped, so the route
      is covered behind a store code or a subfolder base URL as well. The patterns
      end at a slash so that a catalog URL such as /brands/persistent-co.html stays
      prerenderable.

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

  • 1.0.5
    • Version 1.0.5 22321e

    • fix(config): make the default prerender exclusions match real paths (#4)

      href_matches strings are URLPattern pathnames. Without a leading slash
      they resolved against the current page and only matched one exact URL, and
      "/logout" never matched /customer/account/logout/, so the logout link and
      the cart, checkout and account pages could be prerendered.

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

    • fix(config): output the rules as validated JSON instead of raw JavaScript (#4)

      The textarea value was pasted into an inline script as-is, so anyone who
      could edit this config section could run arbitrary JS on every storefront
      page. Validate on save with the Magento JSON serializer, escape the
      characters that can break out of the script on output; invalid values
      render nothing. The default is now valid JSON.

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

    • fix(config): make the default prerender exclusions match real paths (#4)

      href_matches strings are URLPattern pathnames. Without a leading slash
      they resolved against the current page and only matched one exact URL, and
      "/logout" never matched /customer/account/logout/, so the logout link and
      the cart, checkout and account pages could be prerendered.

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

    • fix(config): output the rules as validated JSON instead of raw JavaScript (#4)

      The textarea value was pasted into an inline script as-is, so anyone who
      could edit this config section could run arbitrary JS on every storefront
      page. Validate on save with the Magento JSON serializer, escape the
      characters that can break out of the script on output; invalid values
      render nothing. The default is now valid JSON.

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

    • fix(config): output the rules as validated JSON instead of raw JavaScript (#4)

      The textarea value was pasted into an inline script as-is, so anyone who
      could edit this config section could run arbitrary JS on every storefront
      page. Validate on save with the Magento JSON serializer, escape the
      characters that can break out of the script on output; invalid values
      render nothing. The default is now valid JSON.

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

    • fix(config): output the rules as validated JSON instead of raw JavaScript (#4)

      The textarea value was pasted into an inline script as-is, so anyone who
      could edit this config section could run arbitrary JS on every storefront
      page. Validate on save, and re-encode with safe flags on output; invalid
      values render nothing. The default is now valid JSON.

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

breezefront / module-breeze-paypal-braintree

7 hours ago success

breezefront / module-breeze

7 hours ago success
  • head
    • 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

swissup / delivery-date

7 hours ago success

swissup / module-delivery-date

7 hours ago success