Latest Releases

These releases come straight from our repositories. Latest releases may not be published yet.

swissup / argento-hyva

1.1.3 Apr

swissup / argento-breeze

2.11.3 Apr
  • 2.11.3

    Report (rev.4)

    Package was generated and uploaded to GitHub on with the following dependencies:

    swissup/module-ajaxpro:1.7.34

    swissup/module-ajaxsearch:1.14.6

    swissup/module-amp:1.6.0

    swissup/module-askit:1.14.21

    swissup/module-attributepages:1.8.1

    swissup/module-chat-gpt-assistant:1.1.4

    swissup/module-compare:1.2.8

    swissup/module-easy-slide:1.8.16

    swissup/module-easybanner:1.9.23

    swissup/module-easycatalogimg:1.5.13

    swissup/module-easytabs:1.13.2

    swissup/module-fblike:1.3.9

    swissup/module-featured-attributes:1.1.9

    swissup/module-gdpr:1.8.5

    swissup/module-gdpr-askit:1.1.3

    swissup/module-gdpr-reviewreminder:1.0.0

    swissup/module-gdpr-testimonials:1.1.1

    swissup/module-highlight:1.11.9

    swissup/module-hover-gallery:1.3.15

    swissup/module-hreflang:1.6.11

    swissup/module-hreflang-import-export:1.0.1

    swissup/module-navigationpro:1.17.35

    swissup/module-pagespeed:1.17.3

    swissup/module-pro-labels:1.8.1

    swissup/module-pro-labels-configurable-product:1.0.9

    swissup/module-quantity-switcher:1.2.1

    swissup/module-reviewreminder:1.1.19

    swissup/module-rich-snippets:1.7.18

    swissup/module-seo-canonical:1.11.9

    swissup/module-seo-core:1.3.10

    swissup/module-seo-cross-links:1.1.26

    swissup/module-seo-html-sitemap:1.1.21

    swissup/module-seo-images:1.3.21

    swissup/module-seo-pager:1.3.5

    swissup/module-seo-templates:1.7.10

    swissup/module-seo-urls:1.5.54

    swissup/module-seo-xml-sitemap:1.1.16

    swissup/module-sold-together:1.11.3

    swissup/module-sold-together-email:1.0.0

    swissup/module-sold-together-import-export:1.0.1

    swissup/module-testimonials:1.4.0

    swissup/module-theme-editor-argentobreeze-business:1.0.2

    swissup/module-theme-editor-argentobreeze-chic:1.0.3

    swissup/module-theme-editor-argentobreeze-force:1.1.1

    swissup/module-theme-editor-argentobreeze-stripes:1.1.2

    swissup/theme-frontend-argentobreeze-blank:2.6.2

    swissup/theme-frontend-argentobreeze-business:2.6.9

    swissup/theme-frontend-argentobreeze-chic:2.6.2

    swissup/theme-frontend-argentobreeze-force:2.5.7

    swissup/theme-frontend-argentobreeze-stripes:2.6.1

    swissup/module-core:1.12.26

    swissup/module-suggestpage:1.2.14

    swissup/module-image-optimizer:1.0.11

    swissup/module-theme-editor:1.11.6

    Changelog (autogenerated)

    swissup/theme-frontend-argentobreeze-blank — 2.6.2 (was 3.x-dev)
    • No commits found

    swissup/theme-frontend-argentobreeze-business — 2.6.9 (was 3.x-dev)
    • No commits found

    swissup/theme-frontend-argentobreeze-chic — 2.6.2 (was 3.x-dev)
    • No commits found

    swissup/theme-frontend-argentobreeze-force — 2.5.7 (was 3.x-dev)
    • No commits found

    swissup/theme-frontend-argentobreeze-stripes — 2.6.1 (was 3.x-dev)
  • 2.11.0

    Report (rev.4)

    An exception was thrown with the following message and trace:

    404: Not Found

    #0 /vendor/php-http/httplug/src/Promise/HttpFulfilledPromise.php(31): Github\HttpClient\Plugin\GithubExceptionThrower->Github\HttpClient\Plugin\{closure}()
    #1 /vendor/knplabs/github-api/lib/Github/HttpClient/Plugin/GithubExceptionThrower.php(28): Http\Client\Promise\HttpFulfilledPromise->then()
    #2 /vendor/php-http/client-common/src/PluginChain.php(46): Github\HttpClient\Plugin\GithubExceptionThrower->handleRequest()
    #3 /vendor/php-http/client-common/src/PluginChain.php(61): Http\Client\Common\PluginChain->Http\Client\Common\{closure}()
    #4 /vendor/php-http/client-common/src/Plugin/RedirectPlugin.php(204): Http\Client\Common\PluginChain->__invoke()
    #5 /vendor/php-http/httplug/src/Promise/HttpFulfilledPromise.php(31): Http\Client\Common\Plugin\RedirectPlugin->Http\Client\Common\Plugin\{closure}()
    #6 /vendor/php-http/client-common/src/Plugin/RedirectPlugin.php(175): Http\Client\Promise\HttpFulfilledPromise->then()
    #7 /vendor/php-http/client-common/src/PluginChain.php(46): Http\Client\Common\Plugin\RedirectPlugin->handleRequest()
    #8 /vendor/php-http/client-common/src/Plugin/HistoryPlugin.php(39): Http\Client\Common\PluginChain->Http\Client\Common\{closure}()
    #9 /vendor/php-http/client-common/src/PluginChain.php(46): Http\Client\Common\Plugin\HistoryPlugin->handleRequest()
    #10 /vendor/knplabs/github-api/lib/Github/HttpClient/Plugin/GithubExceptionThrower.php(28): Http\Client\Common\PluginChain->Http\Client\Common\{closure}()
    #11 /vendor/php-http/client-common/src/PluginChain.php(46): Github\HttpClient\Plugin\GithubExceptionThrower->handleRequest()
    #12 /vendor/php-http/client-common/src/PluginChain.php(61): Http\Client\Common\PluginChain->Http\Client\Common\{closure}()
    #13 /vendor/php-http/client-common/src/PluginClient.php(87): Http\Client\Common\PluginChain->__invoke()
    #14 /vendor/php-http/client-common/src/HttpMethodsClient.php(148): Http\Client\Common\PluginClient->sendRequest()
    #15 /vendor/php-http/client-common/src/HttpMethodsClient.php(107): Http\Client\Common\HttpMethodsClient->sendRequest()
    #16 /vendor/php-http/client-common/src/HttpMethodsClient.php(55): Http\Client\Common\HttpMethodsClient->send()
    #17 /vendor/knplabs/github-api/lib/Github/Api/AbstractApi.php(92): Http\Client\Common\HttpMethodsClient->get()
    #18 /vendor/knplabs/github-api/lib/Github/Api/AcceptHeaderTrait.php(19): Github\Api\AbstractApi->get()
    #19 /vendor/knplabs/github-api/lib/Github/Api/Repository/Contents.php(259): Github\Api\Repository\Contents->get()
    #20 /app/Jobs/GeneratePackage.php(246): Github\Api\Repository\Contents->archive()
    #21 /app/Jobs/GeneratePackage.php(99): App\Jobs\GeneratePackage->_download()
    #22 /app/Jobs/GeneratePackage.php(63): App\Jobs\GeneratePackage->download()
    #23 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): App\Jobs\GeneratePackage->handle()
    #24 /vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
    #25 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure()
    #26 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()
    #27 /vendor/laravel/framework/src/Illuminate/Container/Container.php(661): Illuminate\Container\BoundMethod::call()
    #28 /vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(128): Illuminate\Container\Container->call()
    #29 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}()
    #30 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
    #31 /vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(132): Illuminate\Pipeline\Pipeline->then()
    #32 /vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(123): Illuminate\Bus\Dispatcher->dispatchNow()
    #33 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Queue\CallQueuedHandler->Illuminate\Queue\{closure}()
    #34 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
    #35 /vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(122): Illuminate\Pipeline\Pipeline->then()
    #36 /vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\Queue\CallQueuedHandler->dispatchThroughMiddleware()
    #37 /vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(98): Illuminate\Queue\CallQueuedHandler->call()
    #38 /vendor/laravel/framework/src/Illuminate/Queue/Worker.php(434): Illuminate\Queue\Jobs\Job->fire()
    #39 /vendor/laravel/framework/src/Illuminate/Queue/Worker.php(384): Illuminate\Queue\Worker->process()
    #40 /vendor/laravel/framework/src/Illuminate/Queue/Worker.php(175): Illuminate\Queue\Worker->runJob()
    #41 /vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(135): Illuminate\Queue\Worker->daemon()
    #42 /vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(118): Illuminate\Queue\Console\WorkCommand->runWorker()
    #43 /vendor/laravel/horizon/src/Console/WorkCommand.php(51): Illuminate\Queue\Console\WorkCommand->handle()
    #44 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Laravel\Horizon\Console\WorkCommand->handle()
    #45 /vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
    #46 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure()
    #47 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()
    #48 /vendor/laravel/framework/src/Illuminate/Container/Container.php(661): Illuminate\Container\BoundMethod::call()
    #49 /vendor/laravel/framework/src/Illuminate/Console/Command.php(194): Illuminate\Container\Container->call()
    #50 /vendor/symfony/console/Command/Command.php(312): Illuminate\Console\Command->execute()
    #51 /vendor/laravel/framework/src/Illuminate/Console/Command.php(163): Symfony\Component\Console\Command\Command->run()
    #52 /vendor/symfony/console/Application.php(1022): Illuminate\Console\Command->run()
    #53 /vendor/symfony/console/Application.php(314): Symfony\Component\Console\Application->doRunCommand()
    #54 /vendor/symfony/console/Application.php(168): Symfony\Component\Console\Application->doRun()
    #55 /vendor/laravel/framework/src/Illuminate/Console/Application.php(102): Symfony\Component\Console\Application->run()
    #56 /vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(155): Illuminate\Console\Application->run()
    #57 /artisan(35): Illuminate\Foundation\Console\Kernel->handle()
    #58 {main}

swissup / argento-m2

1.53.1 Apr
  • 1.53.1

    Report (rev.1)

    Package was generated and uploaded to GitHub on with the following dependencies:

    swissup/module-ajaxpro:1.7.34

    swissup/module-ajaxsearch:1.14.6

    swissup/module-amp:1.6.0

    swissup/module-askit:1.14.21

    swissup/module-attributepages:1.8.1

    swissup/module-chat-gpt-assistant:1.1.4

    swissup/module-compare:1.2.8

    swissup/module-easy-slide:1.8.16

    swissup/module-easybanner:1.9.23

    swissup/module-easycatalogimg:1.5.13

    swissup/module-easytabs:1.13.2

    swissup/module-fblike:1.3.9

    swissup/module-featured-attributes:1.1.9

    swissup/module-font-awesome:1.4.4

    swissup/module-gdpr:1.8.5

    swissup/module-gdpr-askit:1.1.3

    swissup/module-gdpr-reviewreminder:1.0.0

    swissup/module-gdpr-testimonials:1.1.1

    swissup/module-highlight:1.11.9

    swissup/module-hover-gallery:1.3.15

    swissup/module-hreflang:1.6.11

    swissup/module-hreflang-import-export:1.0.1

    swissup/module-lightboxpro:1.3.10

    swissup/module-navigationpro:1.17.35

    swissup/module-pagespeed:1.17.3

    swissup/module-pro-labels:1.8.1

    swissup/module-pro-labels-configurable-product:1.0.9

    swissup/module-quantity-switcher:1.2.1

    swissup/module-reviewreminder:1.1.19

    swissup/module-rich-snippets:1.7.18

    swissup/module-seo-canonical:1.11.9

    swissup/module-seo-core:1.3.10

    swissup/module-seo-cross-links:1.1.26

    swissup/module-seo-html-sitemap:1.1.21

    swissup/module-seo-images:1.3.21

    swissup/module-seo-pager:1.3.5

    swissup/module-seo-templates:1.7.10

    swissup/module-seo-urls:1.5.54

    swissup/module-seo-xml-sitemap:1.1.16

    swissup/module-sold-together:1.11.3

    swissup/module-sold-together-custom-options:1.0.2

    swissup/module-sold-together-email:1.0.0

    swissup/module-sold-together-import-export:1.0.1

    swissup/module-testimonials:1.4.0

    swissup/module-theme-editor-argento-chic:1.7.4

    swissup/module-theme-editor-argento-essence:1.7.3

    swissup/module-theme-editor-argento-flat:1.7.3

    swissup/module-theme-editor-argento-force:1.4.2

    swissup/module-theme-editor-argento-home:1.2.3

    swissup/module-theme-editor-argento-luxury:1.7.2

    swissup/module-theme-editor-argento-mall:1.7.3

    swissup/module-theme-editor-argento-marketplace:1.7.3

    swissup/module-theme-editor-argento-pure2:1.6.4

    swissup/module-theme-editor-argento-stripes:1.7.5

    swissup/theme-frontend-argento-blank:1.49.4

    swissup/theme-frontend-argento-chic:1.48.2

    swissup/theme-frontend-argento-essence:1.46.3

    swissup/theme-frontend-argento-flat:1.46.5

    swissup/theme-frontend-argento-force:1.48.2

    swissup/theme-frontend-argento-home:1.48.4

    swissup/theme-frontend-argento-luxury:1.48.1

    swissup/theme-frontend-argento-mall:1.48.1

    swissup/theme-frontend-argento-marketplace:1.48.3

    swissup/theme-frontend-argento-pure2:1.46.5

    swissup/theme-frontend-argento-stripes:1.48.2

    swissup/module-core:1.12.26

    swissup/module-suggestpage:1.2.14

    swissup/module-image-optimizer:1.0.11

    swissup/module-theme-editor:1.11.6

    Changelog (autogenerated)

    swissup/module-lightboxpro — 1.3.10 (was 1.3.9)
    • Version 1.3.10 a34637

    • Sync with magento code: Added missing width/height 2a1082

    swissup/theme-frontend-argento-home — 1.48.4 (was 1.48.3)
  • 1.53.0

    Report (rev.1)

    Package was generated and uploaded to GitHub on with the following dependencies:

    swissup/module-ajaxpro:1.7.34

    swissup/module-ajaxsearch:1.14.6

    swissup/module-amp:1.6.0

    swissup/module-askit:1.14.21

    swissup/module-attributepages:1.8.1

    swissup/module-chat-gpt-assistant:1.1.4

    swissup/module-compare:1.2.8

    swissup/module-easy-slide:1.8.16

    swissup/module-easybanner:1.9.23

    swissup/module-easycatalogimg:1.5.13

    swissup/module-easytabs:1.13.2

    swissup/module-fblike:1.3.9

    swissup/module-featured-attributes:1.1.9

    swissup/module-font-awesome:1.4.4

    swissup/module-gdpr:1.8.5

    swissup/module-gdpr-askit:1.1.3

    swissup/module-gdpr-reviewreminder:1.0.0

    swissup/module-gdpr-testimonials:1.1.1

    swissup/module-highlight:1.11.9

    swissup/module-hover-gallery:1.3.15

    swissup/module-hreflang:1.6.11

    swissup/module-hreflang-import-export:1.0.1

    swissup/module-lightboxpro:1.3.9

    swissup/module-navigationpro:1.17.35

    swissup/module-pagespeed:1.17.3

    swissup/module-pro-labels:1.8.1

    swissup/module-pro-labels-configurable-product:1.0.9

    swissup/module-quantity-switcher:1.2.1

    swissup/module-reviewreminder:1.1.19

    swissup/module-rich-snippets:1.7.18

    swissup/module-seo-canonical:1.11.9

    swissup/module-seo-core:1.3.10

    swissup/module-seo-cross-links:1.1.26

    swissup/module-seo-html-sitemap:1.1.21

    swissup/module-seo-images:1.3.21

    swissup/module-seo-pager:1.3.5

    swissup/module-seo-templates:1.7.10

    swissup/module-seo-urls:1.5.54

    swissup/module-seo-xml-sitemap:1.1.16

    swissup/module-sold-together:1.11.3

    swissup/module-sold-together-custom-options:1.0.2

    swissup/module-sold-together-email:1.0.0

    swissup/module-sold-together-import-export:1.0.1

    swissup/module-testimonials:1.4.0

    swissup/module-theme-editor-argento-chic:1.7.4

    swissup/module-theme-editor-argento-essence:1.7.3

    swissup/module-theme-editor-argento-flat:1.7.3

    swissup/module-theme-editor-argento-force:1.4.2

    swissup/module-theme-editor-argento-home:1.2.3

    swissup/module-theme-editor-argento-luxury:1.7.2

    swissup/module-theme-editor-argento-mall:1.7.3

    swissup/module-theme-editor-argento-marketplace:1.7.3

    swissup/module-theme-editor-argento-pure2:1.6.4

    swissup/module-theme-editor-argento-stripes:1.7.5

    swissup/theme-frontend-argento-blank:1.49.4

    swissup/theme-frontend-argento-chic:1.48.2

    swissup/theme-frontend-argento-essence:1.46.3

    swissup/theme-frontend-argento-flat:1.46.5

    swissup/theme-frontend-argento-force:1.48.2

    swissup/theme-frontend-argento-home:1.48.3

    swissup/theme-frontend-argento-luxury:1.48.1

    swissup/theme-frontend-argento-mall:1.48.1

    swissup/theme-frontend-argento-marketplace:1.48.3

    swissup/theme-frontend-argento-pure2:1.46.5

    swissup/theme-frontend-argento-stripes:1.48.2

    swissup/module-core:1.12.26

    swissup/module-suggestpage:1.2.14

    swissup/module-image-optimizer:1.0.11

    swissup/module-theme-editor:1.11.6

    Changelog (autogenerated)

    swissup/module-ajaxpro — 1.7.34 (was 1.7.33)
    • Version 1.7.34 7de5f5

    • Suggest page configurable products options hidden as not working 3bb50d

    swissup/module-ajaxsearch — 1.14.6 (was 1.13.30)
    • Version 1.14.6 53fedd

    • feat: add Backpressure rate limiting with cross-version compatibility (v1.14.5)

      - Add Model/Backpressure/Compat/ stubs for Magento < 2.4.4 compatibility
      - Add RequestTypeExtractor and LimitConfigManager with class_alias pattern
      - Register ajaxsearch/ajaxsearchCategoryOptions fields as rate-limited
      - Add backpressure DI config (CompositeRequestTypeExtractor + CompositeLimitConfigManager)
      - Add backpressure config defaults: 100 req/hour, configurable via Admin
      - Add Admin UI group: Stores > Config > Ajaxsearch > Rate Limiting 457137

    • Version 1.14.5 7b926b

    • Version 1.14.4 6ccc28

    • refactor: remove Backpressure integration (v1.14.4)

      Removed GraphQL Backpressure rate limiting functionality due to backward
      compatibility challenges across Magento versions 2.3.x - 2.4.x.

      The conditional class loading approach caused DI compilation failures on
      various Magento versions because:
      - PhpScanner parses all Model/* files regardless of conditional checks
      - 'use' statements trigger autoloader before conditional returns execute
      - Fully Qualified Names (FQN) don't prevent DI compiler from trying to
      instantiate classes that implement non-existent interfaces

      Removed:
      - Model/Backpressure/RequestTypeExtractor.php
      - Model/Backpressure/LimitConfigManager.php
      - Backpressure DI configuration from etc/di.xml (lines 73-111)
      - Backpressure default config from etc/config.xml
      - Backpressure admin panel section from etc/adminhtml/system.xml

      Kept (working on ALL Magento versions):
      - Security validation (search ≥2 chars OR category >0)
      - GraphQL schema improvements
      - Custom exception handling and logging
      - All resolver validation logic

      Version: 1.14.4
      Reason: Versions 1.14.0-1.14.3 had compatibility issues

      Future: Backpressure rate limiting may be released as a separate
      optional module for Magento 2.4.4+ installations. d07274

    • Version 1.14.3 87c236

    • refactor: move backpressure DI config to commented section in di.xml

      Instead of separate sample file, add backpressure DI configuration as
      commented section in main etc/di.xml. This makes it easier for users
      to enable rate limiting - just uncomment the section.

      Changes:
      - Remove etc/di_backpressure.xml.sample
      - Add commented backpressure DI blocks to etc/di.xml with instructions
      - Users on Magento 2.4.4+ can simply uncomment to enable rate limiting

      Instructions are now in the same file where they're needed. b5095c

    • Fix autoloader issues: Use FQN instead of 'use' statements for Backpressure classes

      - Removed 'use' statements for Backpressure classes that don't exist on Magento < 2.4.4
      - Replaced with Fully Qualified Names (FQN) throughout both files
      - PHP processes 'use' statements before conditional 'return', causing Fatal Errors on old Magento
      - Using FQN prevents autoloader from trying to load non-existent classes
      - Conditional interface_exists() check at top of files still prevents class creation on old Magento
      - DI compilation succeeds on Magento 2.4.8

      Files changed:
      - Model/Backpressure/LimitConfigManager.php: Removed 3 'use' statements, added FQN in implements, method signatures, constants, and object instantiation
      - Model/Backpressure/RequestTypeExtractor.php: Removed 1 'use' statement, added FQN in implements 7b9a0c

    • chore: remove unused Compatibility classes

      Remove Model/Backpressure/Compatibility/* directory as these classes are
      no longer needed. The current implementation uses conditional class loading
      with early return instead of class_alias() approach.

      Changes:
      - Delete Model/Backpressure/Compatibility/RequestTypeExtractorInterface.php
      - Delete Model/Backpressure/Compatibility/LimitConfigManagerInterface.php
      - Delete Model/Backpressure/Compatibility/ContextInterface.php
      - Delete Model/Backpressure/Compatibility/LimitConfig.php

      On old Magento (< 2.4.4): Backpressure classes don't load at all (early return)
      On new Magento (2.4.4+): Real Magento interfaces are used directly

      Removes ~220 lines of obsolete fallback code. 166b09

    • fix: use conditional class loading for Backpressure compatibility

      Wrap Backpressure classes in conditional checks - only create them on
      Magento 2.4.4+ where the Backpressure API exists. On older Magento versions,
      these classes won't be created at all, preventing Fatal Errors during DI compilation.

      Changes:
      - Add 'return' statement if Backpressure interfaces don't exist
      - Remove DI registration from etc/di.xml (now opt-in via sample file)
      - Add etc/di_backpressure.xml.sample for manual activation on Magento 2.4.4+
      - Remove declare(strict_types=1) from compatibility classes for flexibility
      - Remove class_alias() approach (didn't solve type hint conflicts)

      This fixes Fatal Error on old Magento:
      "Declaration of LimitConfigManager::readLimit() must be compatible..."

      On Magento < 2.4.4:
      - Security validation works (2+ char search requirement)
      - Rate limiting won't work (no infrastructure)
      - No Fatal Errors during deployment

      On Magento 2.4.4+:
      - Copy di_backpressure.xml.sample to di_backpressure.xml to enable rate limiting
      - Both security validation and rate limiting work 071573

    • Version 1.14.2 fa1f32

    • fix: remove class type hints from compatibility interfaces

      Remove type hints for class parameters in fallback interfaces to prevent
      Fatal Error on old Magento versions. When using class_alias(), PHP sees
      different class names in the type hints and throws compatibility errors.

      Keep return type hints for scalar types (?string) as they work correctly.
      Real implementation classes keep full type hints for Magento 2.4.4+.

      This fixes: Declaration of LimitConfigManager::readLimit() must be
      compatible with Compatibility\LimitConfigManagerInterface::readLimit() c8fe66

    • Version 1.14.1 2f05d0

    • feat: add backward compatibility layer for Magento < 2.4.4

      Add class_alias() fallback pattern to support older Magento versions that lack
      the Backpressure API. This allows the module to install and function on all
      Magento 2.3.x - 2.4.x versions without Fatal Errors.

      - Create compatibility stubs for Backpressure interfaces/classes
      - Add class_alias() checks in RequestTypeExtractor and LimitConfigManager
      - Revert composer.json constraint to support magento/module-graph-ql >=100.3
      - Rate limiting will only function on Magento 2.4.4+, but security validation works on all versions bafb37

    • Version 1.14.0 c3e536

    • feat(security): add GraphQL validation and rate limiting v1.14.0

      - Add validation: search >= 2 chars OR category required
      - Add rate limiting via Magento Backpressure mechanism
      - Add logging for suspicious query attempts
      - Add admin configuration for rate limits
      - Limit pageSize to 20 for short/empty search queries

      BREAKING CHANGE: Empty or single-character search queries without category filter will now return GraphQlSecurityException c2b4ec

    • feat(security): add GraphQL validation and rate limiting v1.14.0

      - Add validation: search >= 2 chars OR category required
      - Add rate limiting via Magento Backpressure mechanism
      - Add logging for suspicious query attempts
      - Add admin configuration for rate limits
      - Limit pageSize to 20 for short/empty search queries

      BREAKING CHANGE: Empty or single-character search queries without category filter will now return GraphQlSecurityException 69d3fc

    swissup/module-askit — 1.14.21 (was 1.14.20)
    swissup/module-gdpr — 1.8.5 (was 1.8.4)
    swissup/module-navigationpro — 1.17.35 (was 1.17.34)
    swissup/module-pagespeed — 1.17.3 (was 1.17.1)
    • Version 1.17.3 135728

    • fix: correct misleading debug measurements in TrackedDomDocument::indexNodes()

      Previously the debug code compared parent::saveHTML() (which still
      contains the injected charset meta tag) against $this->originalHtml,
      causing 'normalized_bytes' to always equal 'original_bytes' (same
      variable used twice) and 'diff_bytes' to always include the ~62 byte
      charset meta even when no optimizer had touched the DOM.

      Fix: capture a clean DOM snapshot ($initialNormalizedHtml) in the
      constructor immediately after loadHtmlWithUtf8() — using the overridden
      saveHTML() which strips the charset meta and extracts fragments
      correctly. indexNodes() now compares the current DOM state against this
      initial snapshot instead of parent::saveHTML() vs originalHtml, so:
      - normalized_bytes = actual libxml-normalized size (charset meta removed)
      - diff_bytes = only changes made AFTER construction (real optimizer modifications)
      - the 'DOM modified before indexing' warning fires only when an optimizer
      genuinely changed the DOM before indexNodes() was called, not on every page d36e92

    • fix: HTML minification silently discarded and patch limit too low

      - Raise PatchManager::maxPatchesLimit from 500 to 2000 to handle real
      Magento pages that generate 500+ DOM patches; previously the limit
      caused applyPatches() to bail out and fall back to saveHTML() which
      inflated the response by ~12.70% via libxml normalization
      - Replace isDirty() guard in Pipeline::run() with a string comparison
      so that string-based optimizers (HTML minifier calls setOriginalHtml()
      which intentionally does not set the dirty flag) are no longer silently
      discarded
      - Update PipelineTest to match the new contract: remove stale isDirty()
      expectations and add getHtml() stubs where needed 1e0193

    • Version 1.17.2 e22203

    • Fixed logger PHP8.4+ issue 1ef5a9

    swissup/module-pro-labels — 1.8.1 (was 1.7.28)
    • Version 1.8.1 70972f

    • Refactor product validation and label handling for store views (#41)

      * Refactor product validation to respect store view attribute values

      * Add store_ids_serialized column and update indexing logic for labels

      * Refactor label store ID handling and add custom renderer for store views

      * Address copilot suggestions

      * fix db schema f8334a

    • fix db schema 7fc3c5

    • Address copilot suggestions 540cf6

    • Refactor label store ID handling and add custom renderer for store views 1bedf4

    • Add store_ids_serialized column and update indexing logic for labels 1d6056

    • Refactor product validation to respect store view attribute values 33bdc1

    • Version 1.8.0 ee00af

    • Update label text escaping for label presets. Fix bad labels text. 9924f7

    • Enhance LabelText editor with variable support. Add new variables for base prices (#40)

      * Implement LabelText editor with variable support and update configuration

      * Enhance label variables editor with improved variable handling and styling

      * Update frontend models for label text fields in system config

      * Add variable template container and enhance label variable handling in editor

      * Enhance demo predefined variables with base price support

      * Address copilot suggestions. fad926

    • Address copilot suggestions. 428639

    • Enhance demo predefined variables with base price support 97e269

    • Add variable template container and enhance label variable handling in editor 8c365a

    • Update frontend models for label text fields in system config b743ec

    • Enhance label variables editor with improved variable handling and styling d8e08e

    • Implement LabelText editor with variable support and update configuration ca300f

    • Add new variables for price and discount amount without tax:
      - price_base
      - final_price_base
      - special_price_base
      - discount_amount_base e19b20

    • Version 1.7.30 8e36a3

    • Allow to render prolabels with empty text. Label can have only image uploaded. e300af

    • Version 1.7.29 c69b11

    • Remove unnecessary empty string check after processText call, allowing the function result to be returned directly. The empty string validation is now handled by the processText function itself or is not required at this point in the flow. bacb96

    swissup/module-quantity-switcher — 1.2.1 (was 1.1.28)
    • Version 1.2.1 8fcaea

    • Fixed on Breeze after commit 9662ff4d0a47e861240f10e9bd28092063cdd56f 31a149

    • Version 1.2.0 427ae8

    • Added support for qty min/max/increment on cart page, closes #3 6781b3

    • Small fixes and improvements after code review 9662ff

    swissup/module-testimonials — 1.4.0 (was 1.3.17)
    • Version 1.4.0 2ca286

    • Customizable frontend route, closes #12 e38c8c

    • Removed trailing slash in the canonical tag, see #13 109094

    • Fixed captcha for save controller after removing extend from deprecated class 2b4718

    • Fixed saving store relation bc50ab

    • Use escape in admin notification email b334aa

    • Small code fixes 29bd71

    • Rewrote front controllers without extending deprecated class 0d78e2

    • Updated code to use repository 16b611

    • Remove unnecessary setup_version ffbc53

    • Fixed wrong escaping 4ee69c

    • Fixed undefined $avgRating and division-by-zero 5e68bf

    • Removed deprecated call of $this->helper() in template 99e032

    • Replace deprecated code 94f1f1

    • Replace deprecated code db0ca7

    • Do not translate user-configured string 214f9a

    • Remove unused code 4a1b4f

    • Fixed wrong existing customer detecting 098a18

    • Fixed showing email regardless of config 09aacb

    • Fixed N+1 DB writes in mass status action 86330d

    • Added Testimonial Repository and updated controllers to use it 9a2a35

    • Fixed docblocks and const declarations a73587

swissup / lightboxpro

1.3.10 Apr